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