old demo that i want to try in mbed studio
Dependencies: mbed SDFileSystem_Copy_of_mbed_version I2S
wm8731_Config_setup.cpp@90:1dce46f0d9e5, 2020-05-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |