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:
- 2019-02-16
- Revision:
- 0:e89d7a0bfa3b
File content as of revision 0:e89d7a0bfa3b:
#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();
}