old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers wm8731_Config_setup.cpp Source File

wm8731_Config_setup.cpp

00001 #include "WOLFSON_config_consts.h"
00002 #include "mbed.h"
00003 I2C i2c(p9, p10);
00004 
00005 void wm8731_Config_setup(void)
00006 {
00007     i2c.frequency(100000);
00008     int addr = WM8731_REG_RESET;
00009     int cmd = _WM8731_RESET;
00010     addr = addr << 1;
00011     addr = addr|((cmd >> 8 ))& 0x01;//mess around with order of operations
00012     cmd = cmd&0xFF;
00013     i2c.start();
00014     i2c.write( WM8731_ADDRESS );
00015     i2c.write( addr  );
00016     i2c.write( cmd );
00017     i2c.stop();
00018 
00019     addr = WM8731_REG_LLINE_IN;
00020     cmd = _WM8731_LEFT_LINEIN;
00021     addr = addr << 1;
00022     addr = addr|((cmd >> 8 )) & 0x01;
00023     cmd = cmd&0xFF;
00024     i2c.start();
00025     i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
00026     i2c.write( addr );
00027     i2c.write( cmd );
00028     i2c.stop();
00029     
00030     
00031     addr = WM8731_REG_RLINE_IN;
00032     cmd = _WM8731_RIGHT_LINEIN;
00033     addr = addr << 1;
00034     addr = addr|((cmd >> 8 )) & 0x01;
00035     cmd = cmd&0xFF;
00036     i2c.start();
00037     i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
00038     i2c.write( addr );
00039     i2c.write( cmd );
00040     i2c.stop();
00041     
00042        
00043     //4
00044     addr = WM8731_REG_LHPHONE_OUT;
00045     cmd = _WM8731_LEFT_HP;
00046     addr = addr << 1;
00047     addr = addr|((cmd >> 8 )) & 0x01;
00048     cmd = cmd&0xFF;
00049     i2c.start();
00050     i2c.write( WM8731_ADDRESS );
00051     i2c.write( addr );//WM8731_REG_LHPHONE_OUT, _WM8731_LEFT_HP   
00052     i2c.write(cmd);   
00053     i2c.stop();
00054       
00055     //5
00056     addr = WM8731_REG_RHPHONE_OUT;
00057     cmd = _WM8731_RIGHT_HP;
00058     addr = addr << 1;
00059     addr = addr|((cmd >> 8 )) & 0x01;
00060     cmd = cmd&0xFF;
00061     i2c.start();
00062     i2c.write( WM8731_ADDRESS );//WM8731_REG_RHPHONE_OUT, _WM8731_RIGHT_HP 
00063     i2c.write( addr );
00064     i2c.write( cmd );
00065     i2c.stop();
00066   
00067     
00068     //6
00069     addr = WM8731_REG_ANALOG_PATH;
00070     cmd = _WM8731_ANALOGAUDIO;
00071     addr = addr << 1;
00072     addr = addr|((cmd >> 8 )) & 0x01;
00073     cmd = cmd&0xFF;
00074     i2c.start();
00075     i2c.write( WM8731_ADDRESS );//WM8731_REG_ANALOG_PATH, _WM8731_ANALOGAUDIO
00076     i2c.write( addr );
00077     i2c.write( cmd );
00078     i2c.stop();
00079     
00080     //7
00081     addr = WM8731_REG_DIGITAL_PATH;
00082     cmd = _WM8731_DIGITALAUDIO;
00083     addr = addr << 1;
00084     addr = addr|((cmd >> 8 )) & 0x01;
00085     cmd = cmd&0xFF;
00086     i2c.start();
00087     i2c.write( WM8731_ADDRESS );//WM8731_REG_DIGITAL_PATH, _WM8731_DIGITALAUDIO
00088     i2c.write( addr  );
00089     i2c.write( cmd );
00090     i2c.stop();
00091     
00092     //8
00093     addr = WM8731_REG_PDOWN_CTRL;
00094     cmd = _WM8731_POWER;
00095     addr = addr << 1;
00096     addr = addr|((cmd >> 8 )) & 0x01;
00097     cmd = cmd&0xFF;
00098     i2c.start();
00099     i2c.write( WM8731_ADDRESS );//WM8731_REG_PDOWN_CTRL, _WM8731_POWER)
00100     i2c.write( addr  );
00101     i2c.write( cmd );
00102     i2c.stop();
00103     
00104     
00105     //9
00106     addr = WM8731_REG_DIGITAL_IF;
00107     cmd = _WM8731_DAIF;
00108     addr = addr << 1;
00109     addr = addr|((cmd >> 8 )) & 0x01;
00110     cmd = cmd&0xFF;
00111     i2c.start();
00112     i2c.write( WM8731_ADDRESS );
00113     i2c.write( addr  );//WM8731_REG_DIGITAL_IF, _WM8731_DAIF
00114     i2c.write( cmd );
00115     i2c.stop();
00116 
00117    
00118     //10
00119     addr = WM8731_REG_SAMPLING_CTRL;
00120     cmd = _WM8731_SAMPLING;
00121     addr = addr << 1;
00122     addr = addr|((cmd >> 8 )) & 0x01;
00123     cmd = cmd&0xFF;
00124     i2c.start();
00125     i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
00126     i2c.write( addr  );
00127     i2c.write( cmd );
00128     i2c.stop();
00129     
00130     
00131    
00132     
00133     //11
00134     addr = WM8731_REG_ACTIVE_CTRL;
00135     cmd = _WM8731_ACTIVATE;
00136     addr = addr << 1;
00137     addr = addr|((cmd >> 8 )) & 0x01;
00138     cmd = cmd&0xFF;    
00139     i2c.start();
00140     i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
00141     i2c.write( addr  );
00142     i2c.write( cmd );//there is also a deactive version!!
00143     i2c.stop(); 
00144 }