old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

wm8731_Config_setup.cpp

Committer:
roryhand
Date:
2020-05-16
Branch:
LargeFile_Tests
Revision:
90:1dce46f0d9e5
Parent:
0:e89d7a0bfa3b

File content as of revision 90:1dce46f0d9e5:

#include "WOLFSON_config_consts.h"
#include "mbed.h"
I2C i2c(p9, p10);

void wm8731_Config_setup(void)
{
    i2c.frequency(100000);
    int addr = WM8731_REG_RESET;
    int cmd = _WM8731_RESET;
    addr = addr << 1;
    addr = addr|((cmd >> 8 ))& 0x01;//mess around with order of operations
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );
    i2c.write( addr  );
    i2c.write( cmd );
    i2c.stop();

    addr = WM8731_REG_LLINE_IN;
    cmd = _WM8731_LEFT_LINEIN;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
    i2c.write( addr );
    i2c.write( cmd );
    i2c.stop();
    
    
    addr = WM8731_REG_RLINE_IN;
    cmd = _WM8731_RIGHT_LINEIN;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
    i2c.write( addr );
    i2c.write( cmd );
    i2c.stop();
    
       
    //4
    addr = WM8731_REG_LHPHONE_OUT;
    cmd = _WM8731_LEFT_HP;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );
    i2c.write( addr );//WM8731_REG_LHPHONE_OUT, _WM8731_LEFT_HP   
    i2c.write(cmd);   
    i2c.stop();
      
    //5
    addr = WM8731_REG_RHPHONE_OUT;
    cmd = _WM8731_RIGHT_HP;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_RHPHONE_OUT, _WM8731_RIGHT_HP 
    i2c.write( addr );
    i2c.write( cmd );
    i2c.stop();
  
    
    //6
    addr = WM8731_REG_ANALOG_PATH;
    cmd = _WM8731_ANALOGAUDIO;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_ANALOG_PATH, _WM8731_ANALOGAUDIO
    i2c.write( addr );
    i2c.write( cmd );
    i2c.stop();
    
    //7
    addr = WM8731_REG_DIGITAL_PATH;
    cmd = _WM8731_DIGITALAUDIO;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_DIGITAL_PATH, _WM8731_DIGITALAUDIO
    i2c.write( addr  );
    i2c.write( cmd );
    i2c.stop();
    
    //8
    addr = WM8731_REG_PDOWN_CTRL;
    cmd = _WM8731_POWER;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_PDOWN_CTRL, _WM8731_POWER)
    i2c.write( addr  );
    i2c.write( cmd );
    i2c.stop();
    
    
    //9
    addr = WM8731_REG_DIGITAL_IF;
    cmd = _WM8731_DAIF;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );
    i2c.write( addr  );//WM8731_REG_DIGITAL_IF, _WM8731_DAIF
    i2c.write( cmd );
    i2c.stop();

   
    //10
    addr = WM8731_REG_SAMPLING_CTRL;
    cmd = _WM8731_SAMPLING;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
    i2c.write( addr  );
    i2c.write( cmd );
    i2c.stop();
    
    
   
    
    //11
    addr = WM8731_REG_ACTIVE_CTRL;
    cmd = _WM8731_ACTIVATE;
    addr = addr << 1;
    addr = addr|((cmd >> 8 )) & 0x01;
    cmd = cmd&0xFF;    
    i2c.start();
    i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
    i2c.write( addr  );
    i2c.write( cmd );//there is also a deactive version!!
    i2c.stop(); 
}