A library which allows the playing of Wav files using the TLV320
Dependents: RSALB_hbridge_helloworld RSALB_lobster WavPlayer_test AudioCODEC_HelloWorld
TLV320.h
00001 /** 00002 * @author Giles Barton-Owen 00003 * 00004 * @section LICENSE 00005 * 00006 * Copyright (c) 2012 mbed 00007 * 00008 * Permission is hereby granted, free of charge, to any person obtaining a copy 00009 * of this software and associated documentation files (the "Software"), to deal 00010 * in the Software without restriction, including without limitation the rights 00011 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00012 * copies of the Software, and to permit persons to whom the Software is 00013 * furnished to do so, subject to the following conditions: 00014 * 00015 * The above copyright notice and this permission notice shall be included in 00016 * all copies or substantial portions of the Software. 00017 * 00018 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00019 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00020 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00021 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00022 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00023 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00024 * THE SOFTWARE. 00025 * 00026 * @section DESCRIPTION 00027 * A Driver set for the I2C half of the TLV320 00028 * 00029 */ 00030 00031 00032 #ifndef TLV320_H 00033 #define TLV320_H 00034 #include "mbed.h" 00035 00036 #define TLV320_CS_HIGH true 00037 #define TLV320_CS_LOW false 00038 00039 #define TLV320_ON true 00040 #define TLV320_OFF false 00041 00042 #define TLV320_MUTE true 00043 #define TLV320_UNMUTE false 00044 00045 #define TLV320_MASTER true 00046 #define TLV320_SLAVE false 00047 00048 #define TLV320_LINE 0 00049 #define TLV320_MIC 1 00050 #define TLV320_NO_IN -1 00051 00052 #define TLV320_DE_EMPH_DISABLED 0 00053 #define TLV320_DE_EMPH_32KHZ 1 00054 #define TLV320_DE_EMPH_44KHZ 2 00055 #define TLV320_DE_EMPH_48KHZ 3 00056 00057 /** A class to control the I2C part of the TLV320 00058 * 00059 */ 00060 class TLV320 00061 { 00062 public: 00063 /** Create an instance of the TLV320 class 00064 * 00065 * @param i2c_sda The SDA pin of the I2C 00066 * @param i2c_scl The SCL pin of the I2C 00067 */ 00068 TLV320(PinName i2c_sda, PinName i2c_scl); 00069 00070 /** Create an instance of the TLV320 class 00071 * 00072 * @param i2c_sda The SDA pin of the I2C 00073 * @param i2c_scl The SCL pin of the I2C 00074 * @param cs_level The level of the CS pin on the TLV320 00075 */ 00076 TLV320(PinName i2c_sda, PinName i2c_scl, bool cs_level); 00077 00078 /** Control the power of the device 00079 * 00080 * @param on_off The power state 00081 */ 00082 void power(bool on_off); 00083 00084 /** Control the input source of the device 00085 * 00086 * @param input Select the source of the input of the device: TLV320_LINE, TLV320_MIC, TLV320_NO_IN 00087 */ 00088 void input_select(int input); 00089 00090 /** Set the headphone volume 00091 * 00092 * @param h_volume The desired headphone volume: 0->1 00093 */ 00094 void headphone_volume(float h_volume); 00095 00096 /** Set the line in pre-amp volume 00097 * 00098 * @param li_volume The desired line in volume: 0->1 00099 */ 00100 void linein_volume(float li_volume); 00101 00102 /** Turn on/off the microphone pre-amp boost 00103 * 00104 * @param mic_boost Boost on or off 00105 */ 00106 void microphone_boost(bool mic_boost); 00107 00108 /** Mute the input 00109 * 00110 * @param mute Mute on/off 00111 */ 00112 void input_mute(bool mute); 00113 00114 /** Mute the output 00115 * 00116 * @param mute Mute on/off 00117 */ 00118 void output_mute(bool mute); 00119 00120 /** Turn on/off the input stage 00121 * 00122 * @param on_off Input stage on(true)/off(false) 00123 */ 00124 void input_power(bool on_off); 00125 00126 /** Turn on/off the output stage 00127 * 00128 * @param on_off Output stage on(true)/off(false) 00129 */ 00130 void output_power(bool on_off); 00131 00132 /** Select the word size 00133 * 00134 * @param words 16/20/24/32 bits 00135 */ 00136 void wordsize(int words); 00137 00138 /** Select interface mode: Master or Slave 00139 * 00140 * @param master Interface mode: master(true)/slave 00141 */ 00142 void master(bool master); 00143 00144 /** Select the sample rate 00145 * 00146 * @param freq Frequency: 96/48/32/8 kHz 00147 */ 00148 void frequency(int freq); 00149 00150 /** Enable the input highpass filter 00151 * 00152 * @param enabled Input highpass filter enabled 00153 */ 00154 void input_highpass(bool enabled); 00155 00156 /** Enable the output soft mute 00157 * 00158 * @param enabled Output soft mute enabled 00159 */ 00160 void output_softmute(bool enabled); 00161 00162 /** Turn on and off the I2S 00163 * 00164 * @param on_off Switch the I2S interface on(true)/off(false) 00165 */ 00166 void interface_switch(bool on_off); 00167 00168 /** Reset the device and settings 00169 * 00170 */ 00171 void reset(); 00172 00173 /** Set the microphone sidetone volume 00174 * 00175 * @param sidetone_volume The volume of the sidetone: 0->1 00176 */ 00177 void sidetone(float sidetone_vol); 00178 00179 /** Set the analog bypass 00180 * 00181 * @param bypass_en Enable the bypass: enabled(true) 00182 */ 00183 void bypass(bool bypass_en); 00184 00185 /** Set the deemphasis frequency 00186 * 00187 * @param code The deemphasis code: TLV320_DE_EMPH_DISABLED, TLV320_DE_EMPH_32KHZ, TLV320_DE_EMPH_44KHZ, TLV320_DE_EMPH_48KHZ 00188 */ 00189 void deemphasis(char code); 00190 00191 /** Enable the input highpass filter 00192 * 00193 * @param enable Enable the input highpass filter enabled(true) 00194 */ 00195 00196 void adc_highpass(bool enable); 00197 00198 /** Start the device sending/recieving etc 00199 */ 00200 void start(); 00201 00202 /** Stop the device sending/recieving etc 00203 */ 00204 void stop(); 00205 00206 private: 00207 00208 enum reg_address { 00209 line_in_vol_left = 0x00, 00210 line_in_vol_right = 0x01, 00211 headphone_vol_left = 0x02, 00212 headphone_vol_right = 0x03, 00213 path_analog = 0x04, 00214 path_digital = 0x05, 00215 power_control = 0x06, 00216 interface_format = 0x07, 00217 sample_rate = 0x08, 00218 interface_activation = 0x09, 00219 reset_reg = 0x0A, 00220 all = 0xFF 00221 }; 00222 00223 enum tlv320_defaults{ 00224 df_bypass_ = 0, 00225 df_ADC_source = TLV320_LINE, 00226 df_mic_mute = TLV320_UNMUTE, 00227 df_li_mute_left = 0, 00228 df_li_mute_right = 0, 00229 df_mic_boost_ = 0, 00230 df_out_mute = TLV320_UNMUTE, 00231 00232 df_de_emph_code = 0x00, 00233 df_ADC_highpass_enable = 0, 00234 00235 df_device_all_pwr = 1, 00236 df_device_clk_pwr = 1, 00237 df_device_osc_pwr = 1, 00238 df_device_out_pwr = 1, 00239 df_device_dac_pwr = 1, 00240 df_device_adc_pwr = 1, 00241 df_device_mic_pwr = 0, 00242 df_device_lni_pwr = 1, 00243 00244 df_device_master = 0, 00245 df_device_lrswap = 0, 00246 df_device_lrws = 0, 00247 df_device_bitlength = 32, 00248 00249 df_ADC_rate = 32000, 00250 df_DAC_rate = 32000, 00251 00252 df_device_interface_active = 0 00253 }; 00254 00255 00256 I2C i2c; 00257 uint8_t address; 00258 void command(reg_address add, uint16_t byte); 00259 void form_cmd(reg_address add); 00260 void defaulter(); 00261 00262 char gen_samplerate(); 00263 00264 //I2S i2s_tx(I2S_TRANSMIT, p5, p6 , p7); 00265 //I2S i2s_rx(I2S_RECIEVE , p8, p29, p30); 00266 00267 float hp_vol_left, hp_vol_right; 00268 float li_vol_left, li_vol_right; 00269 float sdt_vol; 00270 bool li_mute_left, li_mute_right; 00271 bool bypass_; 00272 bool ADC_source; 00273 bool ADC_source_old; 00274 bool mic_mute; 00275 bool mic_boost_; 00276 bool out_mute; 00277 char de_emph_code; 00278 bool ADC_highpass_enable; 00279 00280 bool device_all_pwr; 00281 bool device_clk_pwr; 00282 bool device_osc_pwr; 00283 bool device_out_pwr; 00284 bool device_dac_pwr; 00285 bool device_adc_pwr; 00286 bool device_mic_pwr; 00287 bool device_lni_pwr; 00288 00289 bool device_master; 00290 bool device_lrswap; 00291 bool device_lrws; 00292 char device_bitlength; 00293 static const char device_data_form = 0x02; 00294 00295 int ADC_rate; 00296 int DAC_rate; 00297 static const bool device_usb_mode = false; 00298 static const bool device_clk_in_div = false; 00299 static const bool device_clk_out_div = false; 00300 bool device_interface_active; 00301 00302 }; 00303 00304 00305 #endif
Generated on Tue Jul 12 2022 17:42:18 by 1.7.2