old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Committer:
roryhand
Date:
Sat May 16 21:25:28 2020 +0000
Branch:
LargeFile_Tests
Revision:
90:1dce46f0d9e5
Parent:
0:e89d7a0bfa3b
current version to try in mbed studio

Who changed what in which revision?

UserRevisionLine numberNew contents of line
roryhand 0:e89d7a0bfa3b 1 #include "WOLFSON_config_consts.h"
roryhand 0:e89d7a0bfa3b 2 #include "mbed.h"
roryhand 0:e89d7a0bfa3b 3 I2C i2c(p9, p10);
roryhand 0:e89d7a0bfa3b 4
roryhand 0:e89d7a0bfa3b 5 void wm8731_Config_setup(void)
roryhand 0:e89d7a0bfa3b 6 {
roryhand 0:e89d7a0bfa3b 7 i2c.frequency(100000);
roryhand 0:e89d7a0bfa3b 8 int addr = WM8731_REG_RESET;
roryhand 0:e89d7a0bfa3b 9 int cmd = _WM8731_RESET;
roryhand 0:e89d7a0bfa3b 10 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 11 addr = addr|((cmd >> 8 ))& 0x01;//mess around with order of operations
roryhand 0:e89d7a0bfa3b 12 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 13 i2c.start();
roryhand 0:e89d7a0bfa3b 14 i2c.write( WM8731_ADDRESS );
roryhand 0:e89d7a0bfa3b 15 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 16 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 17 i2c.stop();
roryhand 0:e89d7a0bfa3b 18
roryhand 0:e89d7a0bfa3b 19 addr = WM8731_REG_LLINE_IN;
roryhand 0:e89d7a0bfa3b 20 cmd = _WM8731_LEFT_LINEIN;
roryhand 0:e89d7a0bfa3b 21 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 22 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 23 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 24 i2c.start();
roryhand 0:e89d7a0bfa3b 25 i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
roryhand 0:e89d7a0bfa3b 26 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 27 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 28 i2c.stop();
roryhand 0:e89d7a0bfa3b 29
roryhand 0:e89d7a0bfa3b 30
roryhand 0:e89d7a0bfa3b 31 addr = WM8731_REG_RLINE_IN;
roryhand 0:e89d7a0bfa3b 32 cmd = _WM8731_RIGHT_LINEIN;
roryhand 0:e89d7a0bfa3b 33 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 34 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 35 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 36 i2c.start();
roryhand 0:e89d7a0bfa3b 37 i2c.write( WM8731_ADDRESS );//take Fergus' suggestion and declare these to known values EARLIER in program
roryhand 0:e89d7a0bfa3b 38 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 39 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 40 i2c.stop();
roryhand 0:e89d7a0bfa3b 41
roryhand 0:e89d7a0bfa3b 42
roryhand 0:e89d7a0bfa3b 43 //4
roryhand 0:e89d7a0bfa3b 44 addr = WM8731_REG_LHPHONE_OUT;
roryhand 0:e89d7a0bfa3b 45 cmd = _WM8731_LEFT_HP;
roryhand 0:e89d7a0bfa3b 46 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 47 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 48 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 49 i2c.start();
roryhand 0:e89d7a0bfa3b 50 i2c.write( WM8731_ADDRESS );
roryhand 0:e89d7a0bfa3b 51 i2c.write( addr );//WM8731_REG_LHPHONE_OUT, _WM8731_LEFT_HP
roryhand 0:e89d7a0bfa3b 52 i2c.write(cmd);
roryhand 0:e89d7a0bfa3b 53 i2c.stop();
roryhand 0:e89d7a0bfa3b 54
roryhand 0:e89d7a0bfa3b 55 //5
roryhand 0:e89d7a0bfa3b 56 addr = WM8731_REG_RHPHONE_OUT;
roryhand 0:e89d7a0bfa3b 57 cmd = _WM8731_RIGHT_HP;
roryhand 0:e89d7a0bfa3b 58 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 59 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 60 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 61 i2c.start();
roryhand 0:e89d7a0bfa3b 62 i2c.write( WM8731_ADDRESS );//WM8731_REG_RHPHONE_OUT, _WM8731_RIGHT_HP
roryhand 0:e89d7a0bfa3b 63 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 64 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 65 i2c.stop();
roryhand 0:e89d7a0bfa3b 66
roryhand 0:e89d7a0bfa3b 67
roryhand 0:e89d7a0bfa3b 68 //6
roryhand 0:e89d7a0bfa3b 69 addr = WM8731_REG_ANALOG_PATH;
roryhand 0:e89d7a0bfa3b 70 cmd = _WM8731_ANALOGAUDIO;
roryhand 0:e89d7a0bfa3b 71 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 72 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 73 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 74 i2c.start();
roryhand 0:e89d7a0bfa3b 75 i2c.write( WM8731_ADDRESS );//WM8731_REG_ANALOG_PATH, _WM8731_ANALOGAUDIO
roryhand 0:e89d7a0bfa3b 76 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 77 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 78 i2c.stop();
roryhand 0:e89d7a0bfa3b 79
roryhand 0:e89d7a0bfa3b 80 //7
roryhand 0:e89d7a0bfa3b 81 addr = WM8731_REG_DIGITAL_PATH;
roryhand 0:e89d7a0bfa3b 82 cmd = _WM8731_DIGITALAUDIO;
roryhand 0:e89d7a0bfa3b 83 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 84 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 85 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 86 i2c.start();
roryhand 0:e89d7a0bfa3b 87 i2c.write( WM8731_ADDRESS );//WM8731_REG_DIGITAL_PATH, _WM8731_DIGITALAUDIO
roryhand 0:e89d7a0bfa3b 88 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 89 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 90 i2c.stop();
roryhand 0:e89d7a0bfa3b 91
roryhand 0:e89d7a0bfa3b 92 //8
roryhand 0:e89d7a0bfa3b 93 addr = WM8731_REG_PDOWN_CTRL;
roryhand 0:e89d7a0bfa3b 94 cmd = _WM8731_POWER;
roryhand 0:e89d7a0bfa3b 95 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 96 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 97 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 98 i2c.start();
roryhand 0:e89d7a0bfa3b 99 i2c.write( WM8731_ADDRESS );//WM8731_REG_PDOWN_CTRL, _WM8731_POWER)
roryhand 0:e89d7a0bfa3b 100 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 101 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 102 i2c.stop();
roryhand 0:e89d7a0bfa3b 103
roryhand 0:e89d7a0bfa3b 104
roryhand 0:e89d7a0bfa3b 105 //9
roryhand 0:e89d7a0bfa3b 106 addr = WM8731_REG_DIGITAL_IF;
roryhand 0:e89d7a0bfa3b 107 cmd = _WM8731_DAIF;
roryhand 0:e89d7a0bfa3b 108 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 109 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 110 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 111 i2c.start();
roryhand 0:e89d7a0bfa3b 112 i2c.write( WM8731_ADDRESS );
roryhand 0:e89d7a0bfa3b 113 i2c.write( addr );//WM8731_REG_DIGITAL_IF, _WM8731_DAIF
roryhand 0:e89d7a0bfa3b 114 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 115 i2c.stop();
roryhand 0:e89d7a0bfa3b 116
roryhand 0:e89d7a0bfa3b 117
roryhand 0:e89d7a0bfa3b 118 //10
roryhand 0:e89d7a0bfa3b 119 addr = WM8731_REG_SAMPLING_CTRL;
roryhand 0:e89d7a0bfa3b 120 cmd = _WM8731_SAMPLING;
roryhand 0:e89d7a0bfa3b 121 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 122 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 123 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 124 i2c.start();
roryhand 0:e89d7a0bfa3b 125 i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
roryhand 0:e89d7a0bfa3b 126 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 127 i2c.write( cmd );
roryhand 0:e89d7a0bfa3b 128 i2c.stop();
roryhand 0:e89d7a0bfa3b 129
roryhand 0:e89d7a0bfa3b 130
roryhand 0:e89d7a0bfa3b 131
roryhand 0:e89d7a0bfa3b 132
roryhand 0:e89d7a0bfa3b 133 //11
roryhand 0:e89d7a0bfa3b 134 addr = WM8731_REG_ACTIVE_CTRL;
roryhand 0:e89d7a0bfa3b 135 cmd = _WM8731_ACTIVATE;
roryhand 0:e89d7a0bfa3b 136 addr = addr << 1;
roryhand 0:e89d7a0bfa3b 137 addr = addr|((cmd >> 8 )) & 0x01;
roryhand 0:e89d7a0bfa3b 138 cmd = cmd&0xFF;
roryhand 0:e89d7a0bfa3b 139 i2c.start();
roryhand 0:e89d7a0bfa3b 140 i2c.write( WM8731_ADDRESS );//WM8731_REG_SAMPLING_CTRL, _WM8731_SAMPLING
roryhand 0:e89d7a0bfa3b 141 i2c.write( addr );
roryhand 0:e89d7a0bfa3b 142 i2c.write( cmd );//there is also a deactive version!!
roryhand 0:e89d7a0bfa3b 143 i2c.stop();
roryhand 0:e89d7a0bfa3b 144 }