Use the TLV320 with in-built I2S object to stream audio data from an SD Card and send it to the TLV320 CODEC for audio playback

Dependencies:   I2SSlave mbed TLV320

Committer:
d_worrall
Date:
Fri Aug 05 10:07:47 2011 +0000
Revision:
0:3d6892f6384f
version 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
d_worrall 0:3d6892f6384f 1 /******************************************************
d_worrall 0:3d6892f6384f 2 * TLV320.cpp: Texas instruments TLV320AIC23B library NXP LPC1768
d_worrall 0:3d6892f6384f 3 *
d_worrall 0:3d6892f6384f 4 * Written by:
d_worrall 0:3d6892f6384f 5 * mbed Team
d_worrall 0:3d6892f6384f 6 * Ioannis Kedros - 10th January 2011
d_worrall 0:3d6892f6384f 7 * (basic functionality incurred)
d_worrall 0:3d6892f6384f 8 * Daniel Worrall - 15th July 2011
d_worrall 0:3d6892f6384f 9 * (I2SSlave implementation and API restructuring)
d_worrall 0:3d6892f6384f 10 *
d_worrall 0:3d6892f6384f 11 * History
d_worrall 0:3d6892f6384f 12 * version 2.29
d_worrall 0:3d6892f6384f 13 ******************************************************/
d_worrall 0:3d6892f6384f 14 #include "mbed.h"
d_worrall 0:3d6892f6384f 15 #include "TLV320.h"
d_worrall 0:3d6892f6384f 16
d_worrall 0:3d6892f6384f 17 TLV320::TLV320(PinName sda, PinName scl, int addr, PinName tx_sda, PinName tx_ws, PinName clk, PinName rx_sda, PinName rx_ws)
d_worrall 0:3d6892f6384f 18 : mAddr(addr), mI2c_(sda, scl), mI2s_(tx_sda, tx_ws, clk, rx_sda, rx_ws){
d_worrall 0:3d6892f6384f 19 mI2c_.frequency(150000);
d_worrall 0:3d6892f6384f 20 reset(); //TLV resets
d_worrall 0:3d6892f6384f 21 power(0x07); //Power Up the TLV320, but not the MIC, ADC and LINE
d_worrall 0:3d6892f6384f 22 format(16, STEREO); //16Bit I2S protocol format, STEREO
d_worrall 0:3d6892f6384f 23 frequency(44100); //Default sample frequency is 44.1kHz
d_worrall 0:3d6892f6384f 24 bypass(false); //Do not bypass device
d_worrall 0:3d6892f6384f 25 mute(false); //Not muted
d_worrall 0:3d6892f6384f 26 activateDigitalInterface_(); //The digital part of the chip is active
d_worrall 0:3d6892f6384f 27 outputVolume(0.6, 0.6); //Headphone volume to the default state
d_worrall 0:3d6892f6384f 28 rxBuffer = &mI2s_.rxBuffer[0];
d_worrall 0:3d6892f6384f 29 }
d_worrall 0:3d6892f6384f 30 //Public Functions
d_worrall 0:3d6892f6384f 31 /******************************************************
d_worrall 0:3d6892f6384f 32 * Function name: inputVolume()
d_worrall 0:3d6892f6384f 33 *
d_worrall 0:3d6892f6384f 34 * Description: set line in volume for left and right channels
d_worrall 0:3d6892f6384f 35 *
d_worrall 0:3d6892f6384f 36 * Parameters: float leftVolumeIn, float rightVolumeIn
d_worrall 0:3d6892f6384f 37 * Returns: int 0 (success), -1 (value out of range)
d_worrall 0:3d6892f6384f 38 ******************************************************/
d_worrall 0:3d6892f6384f 39 int TLV320::inputVolume(float leftVolumeIn, float rightVolumeIn){
d_worrall 0:3d6892f6384f 40 //check values are in range
d_worrall 0:3d6892f6384f 41 if((leftVolumeIn < 0.0)||leftVolumeIn > 1.0) return -1;
d_worrall 0:3d6892f6384f 42 if((rightVolumeIn < 0.0)||rightVolumeIn > 1.0) return -1;
d_worrall 0:3d6892f6384f 43 //convert float to encoded char
d_worrall 0:3d6892f6384f 44 char left = (char)31*leftVolumeIn;
d_worrall 0:3d6892f6384f 45 char right = (char)31*rightVolumeIn;
d_worrall 0:3d6892f6384f 46 //Left Channel
d_worrall 0:3d6892f6384f 47 cmd[1] = left | (0 << 7); //set volume
d_worrall 0:3d6892f6384f 48 cmd[0] = LEFT_LINE_INPUT_CHANNEL_VOLUME_CONTROL; //set address
d_worrall 0:3d6892f6384f 49 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 50 //Right Channel
d_worrall 0:3d6892f6384f 51 cmd[1] = right | (0 << 7); //set volume
d_worrall 0:3d6892f6384f 52 cmd[0] = RIGHT_LINE_INPUT_CHANNEL_VOLUME_CONTROL; //set address
d_worrall 0:3d6892f6384f 53 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 54 return 0;
d_worrall 0:3d6892f6384f 55 }
d_worrall 0:3d6892f6384f 56 /******************************************************
d_worrall 0:3d6892f6384f 57 * Function name: outputVolume()
d_worrall 0:3d6892f6384f 58 *
d_worrall 0:3d6892f6384f 59 * Description: Set headphone (line out) volume for left an right channels
d_worrall 0:3d6892f6384f 60 *
d_worrall 0:3d6892f6384f 61 * Parameters: float leftVolumeOut, float rightVolumeOut
d_worrall 0:3d6892f6384f 62 * Returns: int 0 (success), -1 (value out of range)
d_worrall 0:3d6892f6384f 63 ******************************************************/
d_worrall 0:3d6892f6384f 64 int TLV320::outputVolume(float leftVolumeOut, float rightVolumeOut){
d_worrall 0:3d6892f6384f 65 //check values are in range
d_worrall 0:3d6892f6384f 66 if((leftVolumeOut < 0.0)||leftVolumeOut > 1.0) return -1;
d_worrall 0:3d6892f6384f 67 if((rightVolumeOut < 0.0)||rightVolumeOut > 1.0) return -1;
d_worrall 0:3d6892f6384f 68 //convert float to encoded char
d_worrall 0:3d6892f6384f 69 char left = (char)(79*leftVolumeOut)+0x30;
d_worrall 0:3d6892f6384f 70 char right = (char)(79*rightVolumeOut)+0x30;
d_worrall 0:3d6892f6384f 71 //Left Channel
d_worrall 0:3d6892f6384f 72 cmd[1] = left | (1 << 7); //set volume
d_worrall 0:3d6892f6384f 73 cmd[0] = LEFT_CHANNEL_HEADPHONE_VOLUME_CONTROL; //set address
d_worrall 0:3d6892f6384f 74 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 75 //Right Channel
d_worrall 0:3d6892f6384f 76 cmd[1] = right | (1 << 7); //set volume
d_worrall 0:3d6892f6384f 77 cmd[0] = RIGHT_CHANNEL_HEADPHONE_VOLUME_CONTROL; //set address
d_worrall 0:3d6892f6384f 78 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 79 return 0;
d_worrall 0:3d6892f6384f 80 }
d_worrall 0:3d6892f6384f 81 /******************************************************
d_worrall 0:3d6892f6384f 82 * Function name: bypass()
d_worrall 0:3d6892f6384f 83 *
d_worrall 0:3d6892f6384f 84 * Description: Send TLV320 into bypass mode, i.e. connect input to output
d_worrall 0:3d6892f6384f 85 *
d_worrall 0:3d6892f6384f 86 * Parameters: bool bypassVar
d_worrall 0:3d6892f6384f 87 * Returns: none
d_worrall 0:3d6892f6384f 88 ******************************************************/
d_worrall 0:3d6892f6384f 89 void TLV320::bypass(bool bypassVar){
d_worrall 0:3d6892f6384f 90 if(bypassVar == true)
d_worrall 0:3d6892f6384f 91 cmd[1] = (1 << 3) | (0 << 4) | (0 << 5);//bypass enabled, DAC disabled, sidetone insertion disabled
d_worrall 0:3d6892f6384f 92 else
d_worrall 0:3d6892f6384f 93 cmd[1] = (0 << 3) | (1 << 4); //bypass disabled, DAC enabled
d_worrall 0:3d6892f6384f 94 cmd[1] |= (0 << 2);
d_worrall 0:3d6892f6384f 95 cmd[0] = ANALOG_AUDIO_PATH_CONTROL; //set address
d_worrall 0:3d6892f6384f 96 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 97 }
d_worrall 0:3d6892f6384f 98 /******************************************************
d_worrall 0:3d6892f6384f 99 * Function name: mute()
d_worrall 0:3d6892f6384f 100 *
d_worrall 0:3d6892f6384f 101 * Description: Send TLV320 into mute mode
d_worrall 0:3d6892f6384f 102 *
d_worrall 0:3d6892f6384f 103 * Parameters: bool softMute
d_worrall 0:3d6892f6384f 104 * Returns: none
d_worrall 0:3d6892f6384f 105 ******************************************************/
d_worrall 0:3d6892f6384f 106 void TLV320::mute(bool softMute){
d_worrall 0:3d6892f6384f 107 if(softMute == true) cmd[1] = 0x08; //set instruction to mute
d_worrall 0:3d6892f6384f 108 else cmd[1] = 0x00; //set instruction to NOT mute
d_worrall 0:3d6892f6384f 109
d_worrall 0:3d6892f6384f 110 cmd[0] = DIGITAL_AUDIO_PATH_CONTROL; //set address
d_worrall 0:3d6892f6384f 111 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 112 }
d_worrall 0:3d6892f6384f 113 /******************************************************
d_worrall 0:3d6892f6384f 114 * Function name: power()
d_worrall 0:3d6892f6384f 115 *
d_worrall 0:3d6892f6384f 116 * Description: Switch TLV320 on/off
d_worrall 0:3d6892f6384f 117 *
d_worrall 0:3d6892f6384f 118 * Parameters: bool powerUp
d_worrall 0:3d6892f6384f 119 * Returns: none
d_worrall 0:3d6892f6384f 120 ******************************************************/
d_worrall 0:3d6892f6384f 121 void TLV320::power(bool powerUp){
d_worrall 0:3d6892f6384f 122 if(powerUp == true) cmd[1] = 0x00; //everything on
d_worrall 0:3d6892f6384f 123 else cmd[1] = 0xFF; //everything off
d_worrall 0:3d6892f6384f 124
d_worrall 0:3d6892f6384f 125 cmd[0] = POWER_DOWN_CONTROL; //set address
d_worrall 0:3d6892f6384f 126 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 127 }
d_worrall 0:3d6892f6384f 128 /******************************************************
d_worrall 0:3d6892f6384f 129 * Function name: power()
d_worrall 0:3d6892f6384f 130 *
d_worrall 0:3d6892f6384f 131 * Description: Switch on individual devices on TLV320
d_worrall 0:3d6892f6384f 132 *
d_worrall 0:3d6892f6384f 133 * Parameters: int device
d_worrall 0:3d6892f6384f 134 * Returns: none
d_worrall 0:3d6892f6384f 135 ******************************************************/
d_worrall 0:3d6892f6384f 136 void TLV320::power(int device){
d_worrall 0:3d6892f6384f 137 cmd[1] = (char)device; //set user defined commands
d_worrall 0:3d6892f6384f 138 cmd[0] = POWER_DOWN_CONTROL; //set address
d_worrall 0:3d6892f6384f 139 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 140 }
d_worrall 0:3d6892f6384f 141 /******************************************************
d_worrall 0:3d6892f6384f 142 * Function name: format()
d_worrall 0:3d6892f6384f 143 *
d_worrall 0:3d6892f6384f 144 * Description: Set interface format
d_worrall 0:3d6892f6384f 145 *
d_worrall 0:3d6892f6384f 146 * Parameters: char length, bool mode
d_worrall 0:3d6892f6384f 147 * Returns: none
d_worrall 0:3d6892f6384f 148 ******************************************************/
d_worrall 0:3d6892f6384f 149 void TLV320::format(char length, bool mode){
d_worrall 0:3d6892f6384f 150 char modeSet = (1 << 6);
d_worrall 0:3d6892f6384f 151 modeSet |= (1 << 5); //swap left and right channels
d_worrall 0:3d6892f6384f 152
d_worrall 0:3d6892f6384f 153 switch (length) //input data into instruction byte
d_worrall 0:3d6892f6384f 154 {
d_worrall 0:3d6892f6384f 155 case 16:
d_worrall 0:3d6892f6384f 156 cmd[1] = modeSet | 0x02;
d_worrall 0:3d6892f6384f 157 break;
d_worrall 0:3d6892f6384f 158 case 20:
d_worrall 0:3d6892f6384f 159 cmd[1] = modeSet | 0x06;
d_worrall 0:3d6892f6384f 160 break;
d_worrall 0:3d6892f6384f 161 case 24:
d_worrall 0:3d6892f6384f 162 cmd[1] = modeSet | 0x0A;
d_worrall 0:3d6892f6384f 163 break;
d_worrall 0:3d6892f6384f 164 case 32:
d_worrall 0:3d6892f6384f 165 cmd[1] = modeSet | 0x0E;
d_worrall 0:3d6892f6384f 166 break;
d_worrall 0:3d6892f6384f 167 default:
d_worrall 0:3d6892f6384f 168 break;
d_worrall 0:3d6892f6384f 169 }
d_worrall 0:3d6892f6384f 170 mI2s_.format(length, mode);
d_worrall 0:3d6892f6384f 171 cmd[0] = DIGITAL_AUDIO_INTERFACE_FORMAT; //set address
d_worrall 0:3d6892f6384f 172 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 173 }
d_worrall 0:3d6892f6384f 174 /******************************************************
d_worrall 0:3d6892f6384f 175 * Function name: frequency()
d_worrall 0:3d6892f6384f 176 *
d_worrall 0:3d6892f6384f 177 * Description: Set sample frequency
d_worrall 0:3d6892f6384f 178 *
d_worrall 0:3d6892f6384f 179 * Parameters: int hz
d_worrall 0:3d6892f6384f 180 * Returns: int 0 (success), -1 (value not recognised)
d_worrall 0:3d6892f6384f 181 ******************************************************/
d_worrall 0:3d6892f6384f 182 int TLV320::frequency(int hz){
d_worrall 0:3d6892f6384f 183 char rate;
d_worrall 0:3d6892f6384f 184 switch(hz){
d_worrall 0:3d6892f6384f 185 case 8000:
d_worrall 0:3d6892f6384f 186 rate = 0x03;
d_worrall 0:3d6892f6384f 187 break;
d_worrall 0:3d6892f6384f 188 case 8021:
d_worrall 0:3d6892f6384f 189 rate = 0x0B;
d_worrall 0:3d6892f6384f 190 break;
d_worrall 0:3d6892f6384f 191 case 32000:
d_worrall 0:3d6892f6384f 192 rate = 0x06;
d_worrall 0:3d6892f6384f 193 break;
d_worrall 0:3d6892f6384f 194 case 44100:
d_worrall 0:3d6892f6384f 195 rate = 0x08;
d_worrall 0:3d6892f6384f 196 break;
d_worrall 0:3d6892f6384f 197 case 48000:
d_worrall 0:3d6892f6384f 198 rate = 0x00;
d_worrall 0:3d6892f6384f 199 break;
d_worrall 0:3d6892f6384f 200 case 88200:
d_worrall 0:3d6892f6384f 201 rate = 0x0F;
d_worrall 0:3d6892f6384f 202 break;
d_worrall 0:3d6892f6384f 203 case 96000:
d_worrall 0:3d6892f6384f 204 rate = 0x07;
d_worrall 0:3d6892f6384f 205 break;
d_worrall 0:3d6892f6384f 206 default:
d_worrall 0:3d6892f6384f 207 return -1;
d_worrall 0:3d6892f6384f 208 }
d_worrall 0:3d6892f6384f 209 char clockInChar = (0 << 6);
d_worrall 0:3d6892f6384f 210 char clockModeChar = (1 << 0);
d_worrall 0:3d6892f6384f 211
d_worrall 0:3d6892f6384f 212 cmd[1] = (rate << 2) | clockInChar | clockModeChar; //input data into instruciton byte
d_worrall 0:3d6892f6384f 213 cmd[0] = SAMPLE_RATE_CONTROL; //set address
d_worrall 0:3d6892f6384f 214 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 215 return 0;
d_worrall 0:3d6892f6384f 216 }
d_worrall 0:3d6892f6384f 217 /******************************************************
d_worrall 0:3d6892f6384f 218 * Function name: reset()
d_worrall 0:3d6892f6384f 219 *
d_worrall 0:3d6892f6384f 220 * Description: Reset TLV320
d_worrall 0:3d6892f6384f 221 *
d_worrall 0:3d6892f6384f 222 * Parameters: none
d_worrall 0:3d6892f6384f 223 * Returns: none
d_worrall 0:3d6892f6384f 224 ******************************************************/
d_worrall 0:3d6892f6384f 225 void TLV320::reset(void){
d_worrall 0:3d6892f6384f 226 cmd[0] = RESET_REGISTER; //set address
d_worrall 0:3d6892f6384f 227 cmd[1] = 0x00; //this resets the entire device
d_worrall 0:3d6892f6384f 228 mI2c_.write(mAddr, cmd, 2);
d_worrall 0:3d6892f6384f 229 }
d_worrall 0:3d6892f6384f 230 /******************************************************
d_worrall 0:3d6892f6384f 231 * Function name: start()
d_worrall 0:3d6892f6384f 232 *
d_worrall 0:3d6892f6384f 233 * Description: Enable interrupts on the I2S port
d_worrall 0:3d6892f6384f 234 *
d_worrall 0:3d6892f6384f 235 * Parameters: int mode
d_worrall 0:3d6892f6384f 236 * Returns: none
d_worrall 0:3d6892f6384f 237 ******************************************************/
d_worrall 0:3d6892f6384f 238 void TLV320::start(int mode){
d_worrall 0:3d6892f6384f 239 mI2s_.start(mode);
d_worrall 0:3d6892f6384f 240 }
d_worrall 0:3d6892f6384f 241 /******************************************************
d_worrall 0:3d6892f6384f 242 * Function name: stop()
d_worrall 0:3d6892f6384f 243 *
d_worrall 0:3d6892f6384f 244 * Description: Disable interrupts on the I2S port
d_worrall 0:3d6892f6384f 245 *
d_worrall 0:3d6892f6384f 246 * Parameters: none
d_worrall 0:3d6892f6384f 247 * Returns: none
d_worrall 0:3d6892f6384f 248 ******************************************************/
d_worrall 0:3d6892f6384f 249 void TLV320::stop(void){
d_worrall 0:3d6892f6384f 250 mI2s_.stop();
d_worrall 0:3d6892f6384f 251 }
d_worrall 0:3d6892f6384f 252 /******************************************************
d_worrall 0:3d6892f6384f 253 * Function name: write()
d_worrall 0:3d6892f6384f 254 *
d_worrall 0:3d6892f6384f 255 * Description: Write (part of) a buffer to the I2S port
d_worrall 0:3d6892f6384f 256 *
d_worrall 0:3d6892f6384f 257 * Parameters: int *buffer, int from, int length
d_worrall 0:3d6892f6384f 258 * Returns: none
d_worrall 0:3d6892f6384f 259 ******************************************************/
d_worrall 0:3d6892f6384f 260 void TLV320::write(int *buffer, int from, int length){
d_worrall 0:3d6892f6384f 261 mI2s_.write(buffer, from, length);
d_worrall 0:3d6892f6384f 262 }
d_worrall 0:3d6892f6384f 263 /******************************************************
d_worrall 0:3d6892f6384f 264 * Function name: read()
d_worrall 0:3d6892f6384f 265 *
d_worrall 0:3d6892f6384f 266 * Description: Place I2SRXFIFO in rxBuffer
d_worrall 0:3d6892f6384f 267 *
d_worrall 0:3d6892f6384f 268 * Parameters: none
d_worrall 0:3d6892f6384f 269 * Returns: none
d_worrall 0:3d6892f6384f 270 ******************************************************/
d_worrall 0:3d6892f6384f 271 void TLV320::read(void){
d_worrall 0:3d6892f6384f 272 mI2s_.read();
d_worrall 0:3d6892f6384f 273 }
d_worrall 0:3d6892f6384f 274 /******************************************************
d_worrall 0:3d6892f6384f 275 * Function name: attach()
d_worrall 0:3d6892f6384f 276 *
d_worrall 0:3d6892f6384f 277 * Description: Attach a void/void function or void/void static member function to IRQHandler
d_worrall 0:3d6892f6384f 278 *
d_worrall 0:3d6892f6384f 279 * Parameters: none
d_worrall 0:3d6892f6384f 280 * Returns: none
d_worrall 0:3d6892f6384f 281 ******************************************************/
d_worrall 0:3d6892f6384f 282 void TLV320::attach(void(*fptr)(void)){
d_worrall 0:3d6892f6384f 283 mI2s_.attach(fptr);
d_worrall 0:3d6892f6384f 284 }
d_worrall 0:3d6892f6384f 285 //Private Functions
d_worrall 0:3d6892f6384f 286 /******************************************************
d_worrall 0:3d6892f6384f 287 * Function name: setSampleRate_()
d_worrall 0:3d6892f6384f 288 *
d_worrall 0:3d6892f6384f 289 * Description: Clocking control
d_worrall 0:3d6892f6384f 290 *
d_worrall 0:3d6892f6384f 291 * Parameters: char rate, bool clockIn, bool clockMode, bool bOSR
d_worrall 0:3d6892f6384f 292 * Returns: none
d_worrall 0:3d6892f6384f 293 ******************************************************/
d_worrall 0:3d6892f6384f 294 void TLV320::setSampleRate_(char rate, bool clockIn, bool clockMode, bool bOSR){
d_worrall 0:3d6892f6384f 295 char clockInChar;
d_worrall 0:3d6892f6384f 296 char clockModeChar;
d_worrall 0:3d6892f6384f 297 char baseOverSamplingRate;
d_worrall 0:3d6892f6384f 298 if(bOSR){
d_worrall 0:3d6892f6384f 299 baseOverSamplingRate = (1 << 0);
d_worrall 0:3d6892f6384f 300 } else {
d_worrall 0:3d6892f6384f 301 baseOverSamplingRate = (0 << 0);
d_worrall 0:3d6892f6384f 302 }
d_worrall 0:3d6892f6384f 303 if(clockIn){
d_worrall 0:3d6892f6384f 304 clockInChar = (1 << 6);
d_worrall 0:3d6892f6384f 305 } else {
d_worrall 0:3d6892f6384f 306 clockInChar = (0 << 6);
d_worrall 0:3d6892f6384f 307 }
d_worrall 0:3d6892f6384f 308 if(clockMode){
d_worrall 0:3d6892f6384f 309 clockModeChar = 0x01;
d_worrall 0:3d6892f6384f 310 } else {
d_worrall 0:3d6892f6384f 311 clockModeChar = 0x00;
d_worrall 0:3d6892f6384f 312 }
d_worrall 0:3d6892f6384f 313 cmd[1] = (rate << 2) | clockInChar | clockModeChar | baseOverSamplingRate; //input data into instruciton byte
d_worrall 0:3d6892f6384f 314 cmd[0] = SAMPLE_RATE_CONTROL; //set address
d_worrall 0:3d6892f6384f 315 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 316 }
d_worrall 0:3d6892f6384f 317 /******************************************************
d_worrall 0:3d6892f6384f 318 * Function name: activateDigitalInterface_()
d_worrall 0:3d6892f6384f 319 *
d_worrall 0:3d6892f6384f 320 * Description: Activate digital part of chip
d_worrall 0:3d6892f6384f 321 *
d_worrall 0:3d6892f6384f 322 * Parameters: none
d_worrall 0:3d6892f6384f 323 * Returns: none
d_worrall 0:3d6892f6384f 324 ******************************************************/
d_worrall 0:3d6892f6384f 325 void TLV320::activateDigitalInterface_(void){
d_worrall 0:3d6892f6384f 326 cmd[1] = 0x01; //Activate
d_worrall 0:3d6892f6384f 327 cmd[0] = DIGITAL_INTERFACE_ACTIVATION; //set address
d_worrall 0:3d6892f6384f 328 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 329 }
d_worrall 0:3d6892f6384f 330 /******************************************************
d_worrall 0:3d6892f6384f 331 * Function name: deactivateDigitalInterface_
d_worrall 0:3d6892f6384f 332 *
d_worrall 0:3d6892f6384f 333 * Description: Deactivate digital part of chip
d_worrall 0:3d6892f6384f 334 *
d_worrall 0:3d6892f6384f 335 * Parameters: none
d_worrall 0:3d6892f6384f 336 * Returns: none
d_worrall 0:3d6892f6384f 337 ******************************************************/
d_worrall 0:3d6892f6384f 338 //Digital interface deactivation
d_worrall 0:3d6892f6384f 339 void TLV320::deactivateDigitalInterface_(void){
d_worrall 0:3d6892f6384f 340 cmd[1] = 0x00; //Deactivate
d_worrall 0:3d6892f6384f 341 cmd[0] = DIGITAL_INTERFACE_ACTIVATION; //set address
d_worrall 0:3d6892f6384f 342 mI2c_.write(mAddr, cmd, 2); //send
d_worrall 0:3d6892f6384f 343 }
d_worrall 0:3d6892f6384f 344