This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TLV320AIC3254:TLV320AIC3254:8kHz 8位单声道配置

Guru**** 2454880 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/735169/compiler-tlv320aic3254-tlv320aic3254-8khz-8-bit-mono-configurations

器件型号:TLV320AIC3254

工具/软件:TI C/C++编译器

大家好、TI!
请帮帮我
我使用 WiFi 音频应用示例、我需要更改音频编解码器的配置。 我尝试重现的声音具有8KHz 8位单声道的参数。
我尝试使用以下参数:

PLL_J = 40
PLL_R = 6
PLL_P = 1
PLL_D = 0

NDAC = 12
MDAC = 10
DOSR = 128

NADC = 12
mAdc = 10
AOSR = 128

使用这些参数、我可以听到具有16kHz 描述频率的声音、但无法听到具有8kHz 描述频率的声音。 我听到的不是8kHz 的声音、而是令人讨厌的噪声。 我尝试重现8位8kHz 单声道声音、并使用此音频编解码器配置:
audiocodec.c:

int AudioCodecConfig (unsigned char codecId、unsigned char bitsPerSample、unsigned short bitrate、
unsigned char noOfChannels、unsigned char 扬声器、unsigned char mic)
{
unsigned int bitClk = 0;

if (codecId = audio_codec_TI_3254)
{
AudioCodecPageSelect (TI3254_PAGE_0);

if (bitsPerSample = AUDIO_CODE_8_BIT)//AUDIO_CODE_16_BIT
{
//设置 I2S 模式和字长
AudioCodecRegWrite (TI3254_AUDIO_IF_1_REG、0x00);

}
其他
{
返回-1;
}

bitClk = 64000;
if (bitClk =64000)//512000
{
AudioCodecPageSelect (TI3254_PAGE_0);

AudioCodecRegWrite (TI3254_CLK_MUX_REG、0x03); // PLL 时钟为 CODE_CLKIN 0x03
AudioCodecRegWrite (TI3254_CLK_PLL_P_R_REG、0x96);// PLL 上电、P=1、R=6
AudioCodecRegWrite (TI3254_CLK_PLL_J_REG、0x28); // J=40
AudioCodecRegWrite (TI3254_CLK_PLL_D_MSB_REG、0x00);// D = 0

AudioCodecRegWrite (TI3254_CLK_NDAC_REG、0x8C); // NDAC 分压器加电,NDAC = 12
AudioCodecRegWrite (TI3254_CLK_MDAC_REG、0x8A); // MDAC 分频器加电,MDAC = 10
AudioCodecRegWrite (TI3254_DAC_OSR_MSB_REG、0x00);// DOSR = 0x0080 = 128
AudioCodecRegWrite (TI3254_DAC_OSR_LSB_REG、0x80);// DOSR = 0x0080 = 128

AudioCodecRegWrite (TI3254_CLK_NADC_REG、0x8C); // NADC 分压器加电,NADC = 12
AudioCodecRegWrite (TI3254_CLK_mAdc_REG、0x8A); // mAdc 分频器加电、mAdc = 10
AudioCodecRegWrite (TI3254_ADC_OSR_REG、0x80); // AOSR = 128 ((与 PRB_R1配合使用到 PRB_R6、ADC 滤波器类型 A)
}
其他
{
返回-1;
}


//配置电源
AudioCodecPageSelect (TI3254_PAGE_1); //选择第1页

AudioCodecRegWrite (TI3254_PWR_CTRL_REG、0x08);//禁用 AVDD 与 DVDD 的弱连接
AudioCodecRegWrite (TI3254_LDO_CTRL_REG、0x01);//为 AVDD LDO 检测到过流
AudioCodecRegWrite (TI3254_ANALOG_IP_QCHRG_CTRL_REG、0x32);//模拟输入加电时间为6.4ms
AudioCodecRegWrite (TI3254_REF_PWR_UP_CTRL_REG、0x01);//当模拟块加电时,基准将在40ms 内加电

主:

AudioCodecReset (audio_codec_TI_3254、空); //配置音频编解码
器 AudioCodecConfig (audio_codec_TI_3254、audio_codec_8_bit、8000、
Audio_codec_Mono、audio_codec_speaker_all、
AUDIO_CODE_MIC_NONE) 

I2S_if.c:

void AudioCaptureRenderConfigure (unsigned char bitsPerSample、
无符号短比特率、
unsigned char noOfChannels、
unsigned char RxTx、
unsigned char DMA)
{
unsigned long bitClk;

bitClk = bitsPerSample * bitrate * noOfChannels;

IF (DMA)
{
if (bitsPerSample = 8)
{
MAP_PRCMI2SClockFreqSet (5120000);
MAP_I2SConfigSetExpClk (I2S_base、5120000、512000、I2S_SLOT_SIZE_16|
I2S_PORT_DMA);
}
}

IF (RxTx = I2S_MODE_RX_TX)
{
MAP_I2SSerializerConfig (I2S_base、I2S_DATA_LINE_1、I2S_SER_MODE_RX、
I2S_INACT_LOW_LEVEL);
}

IF (RxTx 和 I2S_MODE_TX)
{
MAP_I2SSerializerConfig (I2S_base、I2S_DATA_LINE_0、I2S_SER_MODE_TX、
I2S_INACT_LOW_LEVEL);
}

} 

在这里、我为完成任务所做的所有更改。   但每次我听到16位16kHz 立体声、而不是8位8kHz 单声道。 可能是什么问题、任何建议都会帮助我

感谢你的帮助。

乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Georgiy、

    很抱歉耽误你的回答。 为了了解您的问题、我想知道您的预期数字输出格式是什么、因为此部件不能仅流式传输一个数据通道、 也不支持8位数据大小。 我可以在您的设置中看到一个问题 、因为位时钟以64KHz 运行、即8×FS;该比率不受器件支持、位时钟应至少为32×FS。

    假设编解码器获得512KHz MCLK、对于8kHz 应用的内部时钟生成、PLL 系数是正确的。

    此致、

     Diego Melendez López í a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答、您能告诉我 TI 的哪个器件支持我所需的格式吗?  
    8000 Hz 8000位单声道

    乔治。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Georgiy、

    遗憾的是、我们没有支持8位单声道数字信号的器件。 只要您将位时钟正确调整为至少32×FS、就可以在16位模式下使用 AIC3254。

    此致、

     Diego Melendez López í a
      音频应用工程师