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/732060/compiler-tlv320aic3254-tlv320aic3254-8khz-8-bit-mono-configurations

器件型号:TLV320AIC3254

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

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

NDAC = 12
MDAC = 1
DOSR = 384

NADC = 36
mAdc = 2
AOSR = 64

PLL_CLKIN = 512000

虽然通过方案和表格、一切都应该得到解决、但我听到的是噪音、而不是明显的声音。

仍请帮助了解这些功能:

MAP_PRCMI2SClockFreqSet (-512000-);
MAP_I2SConfigSetExpClk (I2S_base、-512000-、-bitClk-、I2S_SLOT_SIZE_16|
I2S_PORT_DMA);

这里有三种不同的时钟、我需要了解哪些时钟负责什么。  
我感兴趣的时钟是 用这样的符号"-"标记的

我希望你们能提供帮助和解释,非常感谢你们的帮助和解释!

乔治。

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

    大家好、Georgiy、

    使用的 PLL 和分频器参数未正确设置、无法从512KHz 输入生成8kHz 采样率所需的内部时钟。 请尝试以下 PLL 和分频器值:

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

    NDAC = 12
    MDAC = 10
    DOSR = 128

    NADC = 12
    mAdc = 10
    AOSR = 128

    此致、

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

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

    您好、Diego、

    使用这些参数、我可以听到具有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) 
    AudioCaptureRenderConfigure (AUDIO_CODE_8_BIT、8000、AUDIO_CODE_Mono、RecordPlay、1); 

    I2S_if.c:

    void AudioCaptureRenderConfigure (unsigned char bitsPerSample、
    无符号短比特率、
    unsigned char noOfChannels、
    unsigned char RxTx、
    unsigned charDMA)
    {
    unsigned longbitClk;
    
    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 单声道。 可能是什么问题、任何建议都会帮助我

    感谢你的帮助。

    乔治