old demo that i want to try in mbed studio
Dependencies: mbed SDFileSystem_Copy_of_mbed_version I2S
Diff: wm8731_Config_setup.cpp
- Revision:
- 0:e89d7a0bfa3b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wm8731_Config_setup.cpp Sat Feb 16 17:19:43 2019 +0000 @@ -0,0 +1,144 @@ +#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(); +} \ No newline at end of file