TICC3200通过TLV320AIC3254录音,录到的音频是双声道(立体声)的,因为不需要两个声道的声音,同时也减少网络传输的压力,现在想将双声道录音改为单声道录音。
首先想到是通过设置TLV320AIC3254录音芯片的寄存器,可以将双声道录音改为单声道的,于是在程序中芯片设置的地方找,找到:
//配置音频芯片的寄存器:
// Configure Audio Codec
// 配置音频芯片:
AudioCodecReset(AUDIO_CODEC_TI_3254, NULL);
AudioCodecConfig(AUDIO_CODEC_TI_3254, AUDIO_CODEC_16_BIT, 16000,
AUDIO_CODEC_STEREO, AUDIO_CODEC_SPEAKER_ALL,
AUDIO_CODEC_MIC_ALL);
跟踪过去:
//*****************************************************************************
//
//! Configure audio codec for smaple rate, bits and number of channels
//!
//! \param[in] codecId - Device id
//! \param[in] bitsPerSample - Bits per sample (8, 16, 24 etc..)
//! Please ref Bits per sample Macro section
//! \param[in] bitRate - Sampling rate in Hz. (8000, 16000, 44100 etc..)
//! \param[in] noOfChannels - Number of channels. (Mono, stereo etc..)
//! Please refer Number of Channels Macro section
//! \param[in] speaker - Audio out that need to configure. (headphone, line out, all etc..)
//! Please refer Audio Out Macro section
//! \param[in] mic - Audio in that need to configure. (line in, mono mic, all etc..)
//! Please refer Audio In Macro section
//!
//! \return 0 on success else -ve.
//
//*****************************************************************************
int AudioCodecConfig(unsigned char codecId, unsigned char bitsPerSample, unsigned short bitRate,
unsigned char noOfChannels, unsigned char speaker, unsigned char mic)
{
unsigned int bitClk = 0;
if(codecId == AUDIO_CODEC_TI_3254)
{
AudioCodecPageSelect(TI3254_PAGE_0);
if(bitsPerSample == AUDIO_CODEC_16_BIT)
{
// Set I2S Mode and Word Length
AudioCodecRegWrite(TI3254_AUDIO_IF_1_REG, 0x00); // 0x00 16bit, I2S, BCLK is input to the device
// WCLK is input to the device,
}
else
{
return -1;
}
bitClk = bitsPerSample * bitRate * noOfChannels;
if(bitClk == 512000)
{
AudioCodecPageSelect(TI3254_PAGE_0);
AudioCodecRegWrite(TI3254_CLK_MUX_REG, 0x03); // PLL Clock is CODEC_CLKIN
AudioCodecRegWrite(TI3254_CLK_PLL_P_R_REG, 0x94); // PLL is powered up, P=1, R=4
AudioCodecRegWrite(TI3254_CLK_PLL_J_REG, 0x2A); // J=42