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.

[参考译文] TLV320AIC3111EVM-K:需要有关为此音频编解码器选择适当 I2S 设置的帮助

Guru**** 2482145 points
Other Parts Discussed in Thread: TLV320AIC3111

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/858203/tlv320aic3111evm-k-need-help-selecting-appropriate-i2s-settings-for-this-audio-codec

器件型号:TLV320AIC3111EVM-K
主题中讨论的其他器件:TLV320AIC3111

尊敬的所有人:

    我正在使用 TLV320AIC3111 EVM 板。 我使用外部微控制器进行音频编解码器配置(在 I2S 模式下)和检索音频数据。 MCLK (2.048MHz)、BCLK (256kHz)、WCLK (16kHz)通过 控制器的 I2S 模块提供。 我通过 USB 发送音频数据以进行调试、但我正在收听的音频是输入音频的高频版本。 我已将 USB 配置为16kHz 音频速率、并将 Audacity 软件用于录制。 我能够在 EVM 的音频插孔上收听音乐、因此我确信音频编解码器的配置设置。  我认为 I2S 设置有问题。 那么、您能否为此 音频编解码器建议适当的 I2S 设置。   我已经列出了其中几个具有默认值的项目。

帧长度、每个音频帧的 BCLK 时钟数 = 32位

帧同步活动电平长度 = 16位

I2S 帧同步时钟频带边沿敏感度= 上升边沿

帧同步极性=低电平有效

帧同步偏移=第一位之前

时隙中第一个数据传输位的位置= 0

插槽大小= 16位

音频帧中的插槽数= 2

音频帧中将被激活的插槽=插槽0

帧同步偏移=第一位之前

谢谢你。

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

    巴尔赫里什纳  

    您是否已将 EVM 上的 USB 音频处理器配置为16kHz?  默认为48K。  

    此致  

    -Steve Wilson

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

    您好、Steve、

    否、我使用了微控制器的内置 USB 模块并将其配置为音频接口、并将音频编解码器用作 USB 麦克风。

    感谢您的回复。

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

    Balkrishna、  

    好的、 您可以为 AIC3111提供寄存器配置吗?

    此致、

    -Steve Wilson

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

    Steve、

    寄存器配置如下:

    REG[0][1]= 0x01;软件复位
    REG[0][4]= 0x03;PLL_CLKIN = MCLK = 11.2896MHz。、CODE_CLKIN=PLL_CLK
    REG[0][5]= 0x91;PLL 上电、P = 1、R = 1
    REG[0][6]= 0x08;J = 8
    REG[0][7]= 0x00;D (13:8)= 0
    REG[0][8]= 0x00;D (7:0)= 0 (CODEC CLKIN =(PLL_CLKIN * R * J.D)/ P = 90.3168 MHz。
    REG[0][27]= 0x00;模式= I2S、字长= 16

    REG[43][95]= 0x00;(位23-16)--- MSB ADC INST 编号383
    REG[43][96]= 0x00;(位15-8)
    REG[43][97]= 0x00;(位7-0)
    REG[95][95]= 0x00;(位23-16)--- MSB DAC INST 编号1023
    REG[95][96]= 0x00;(位15-8)
    REG[95][97]= 0x00;(位7-0)

    IADC =%%PROP (miniDSP_A_CYCLES)
    IDAC =%%PROP (miniDSP_D_CYCLES)
    REG[0][60]= 0x40;DAC 可编程模式,即使 DAC 断电,DAC miniDSP 也会加电
    REG[0][61]= 0x00;ADC 可编程模式
    程序_ADC
    编程 DAC
    %%if ("%%prop (FrameworkType)"=" AIC31XXApp2x1xAsynch"||"%prop (FrameworkType)"=" AIC31XXApp2x1xSynch")
    REG[0][13]= 0x00;DOSR = 32、DOSR (9:8)= 0
    REG[0][14]= 0x20;DOSR = 32、DOSR (7:0)= 32 (DAC FS = 5.6448 / 32 = 176.4 KHz。)
    REG[0][16]= 0x02;插值比率= 2
    REG[0][20]= 0x20;AOSR = 32 (ADC FS = 5.6448 / 32 = 176.4 KHz。)
    REG[0][22]= 0x01;抽取率= 1
    %%endif
    %%if ("%%prop (FrameworkType)"=" AIC31XXApp4x2xAsynch"||"%prop (FrameworkType)"=" AIC31XXApp4x2xSynch")
    REG[0][13]= 0x00;DOSR = 64、DOSR (9:8)= 0
    REG[0][14]= 0x40;DOSR = 64、DOSR (7:0)= 64 (DAC FS = 5.6448 / 64 = 88.2KHz。)
    REG[0][16]= 0x04;插值比率= 2
    REG[0][20]= 0x40;AOSR = 64 (ADC FS = 5.6448 / 64 = 88.2KHz。)
    REG[0][22]= 0x02;抽取率= 2
    %%endif
    %%if ("%%prop (FrameworkType)"=" AIC31XXApp8x4xAsynch"||"%prop (FrameworkType)"=" AIC31XXApp8x4xSynch")
    REG[0][13]= 0x00;DOSR = 128、DOSR (9:8)= 0
    REG[0][14]= 0x80;DOSR = 128、DOSR (7:0)= 32 (DAC FS = 5.6448 / 128 = 44.1KHz。)
    REG[0][16]= 0x08;插值比率= 8
    REG[0][20]= 0x80;AOSR = 128 (ADC FS = 5.6448 / 128 = 44.1KHz。)
    REG[0][22]= 0x04;抽取率= 4
    %%endif
    REG[1][33]= 0x4e;去爆音、上电= 800ms、步长时间= 4ms。
    %%IF (%%PROP (器件)=3111)
    REG[1][31]= 0xc0;HPL 和 HPR 加电
    %%ELSE
    REG[1][31]= 0x80;HPL 上电
    %%endif
    REG[1][35]= 0x88;LDAC 路由到 HPL、RDAC 路由到 HPR
    REG[1][40]= 0x04;HPL 取消静音并增益0dB
    %%IF (%%PROP (器件)=3111)
    REG[1][41]= 0x04;HPR 取消静音并增益0dB
    %%endif
    REG[1][46]= 0x03;MICBIAS
    REG[1][48]= 0x40;为左麦克风 PGA P @ 10k 输入阻抗选择 MIC
    REG[1][49]= 0x40;为左麦克风 PGA M @ 10k 输入阻抗选择 CM
    REG[0][63]= 0xd6;为 DAC 左右通道加电(软步进禁用)
    REG[0][64]= 0x00;使 DAC 左右通道取消静音
    REG[0][81]= 0x80;为 ADC 通道加电
    REG[0][82]= 0x00;将 ADC 通道取消静音
    %%if ("%%prop (FrameworkType)"=" AIC31XXApp2x1xAsynch"||"%prop (FrameworkType)"=" AIC31XXApp4x2xAsynch"||"%prop (FrameworkType)"=" AIC31XXApp8x4xAsynch")
    REG[0][11]= 0x82;DAC 加电 NDAC = 2 (DAC_MAC_CLK = 90.3168 MHz/2 = 45.1584 MHz。)
    REG[0][12]= 0x88;DAC 加电 MDAC = 8 (DAC_MOD_CLK = 45.1584/8 = 5.6448MHz。)
    REG[0][18]= 0x84;ADC 加电 NADC = 4 (ADC_MAC_CLK = 90.3168 MHz/4 = 22.5792 MHz)。
    REG[0][19]= 0x84;DAC 加电 mAdc = 4 (ADC_MOD_CLK = 22.5792/4 = 5.6448MHz。)
    %%endif
    %%if ("%%prop (FrameworkType)"=" AIC31XXApp2x1xSynch"||"%prop (FrameworkType)"=" AIC31XXApp4x2xSynch"||"%prop (FrameworkType)"=" AIC31XXApp8x4xSynch")
    REG[0][11]= 0x84;DAC 加电 NDAC = 4 (DAC_MAC_CLK = 90.3168 MHz/4 = 22.5792 MHz)。
    REG[0][12]= 0x84;DAC 上电 MDAC = 4 (DAC_MOD_CLK = 22.5792/4 = 5.6448MHz。)
    REG[0][18]= 0x84;ADC 加电 NADC = 4 (ADC_MAC_CLK = 90.3168 MHz/4 = 22.5792 MHz)。
    REG[0][19]= 0x84;DAC 加电 mAdc = 4 (ADC_MOD_CLK = 22.5792/4 = 5.6448MHz。)
    %%endif
    %%IF (%%prop (miniDSP_D_Adaptive)= 1)
    REG[8][1]= 0x04;DAC 启用自适应模式
    %%endif

    ;--------------------------------------------------------------------
    ;时钟和接口配置
    ;--------------------------------------------------------------------
    ;USB 音频支持8kHz 至48kHz 的采样率
    ;对于88.2kHz 至192kHz 的采样率,需要使用外部音频接口
    ;--------------------------------------------------------------------
    %%if (%%prop (SampleRate)=176400 ||%%prop (SampleRate)=192000)
    REG[0][5]= 0x91;P=1、R=1、J=8
    REG[0][6]= 0x08;P=1、R=1、J=8
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x00;DOSR = 32 (MSB)
    REG[0][14]= 0x20;DOSR = 32 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x88;mAdc = 8、分压器通电
    REG[0][20]= 0x20;AOSR = 32
    REG[0][11]= 0x82;NDAC = 2、分压器上电

    %%endif

    %%if (%%prop (SampleRate)=88200 ||%%prop (SampleRate)=96000)
    REG[0][5]= 0x91;P=1、R=1、J=8
    REG[0][6]= 0x08;P=1、R=1、J=8
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x00;DOSR = 64 (MSB)
    REG[0][14]= 0x40;DOSR = 64 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x88;mAdc = 8、分压器通电
    REG[0][20]= 0x40;AOSR = 64
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)==44100 ||%%prop (SampleRate)=48000)
    REG[0][5]= 0x91;P=1、R=1、J=8
    REG[0][6]= 0x08;P=1、R=1、J=8
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x00;DOSR = 128 (MSB)
    REG[0][14]= 0x80;DOSR = 128 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x88;mAdc = 8、分压器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)=32000)
    REG[0][5]= 0x91;P=1、R=1、J=8
    REG[0][6]= 0x08;P=1、R=1、J=8
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x00;DOSR = 192 (MSB)
    REG[0][14]= 0xc0;DOSR = 192 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x8c;mAdc = 12、分压器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)=22050 ||%%prop (SampleRate)=24000)
    REG[0][5]= 0x91;P=1、R=1、J=8
    REG[0][6]= 0x08;P=1、R=1、J=8
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x01;DOSR = 256 (MSB)
    REG[0][14]= 0x00;DOSR = 256 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x90;mAdc = 16、分压器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)=16000)
    REG[0][5]= 0x91;P=1、R=1、J=24
    REG[0][6]= 0x18;P=1、R=1、J=24
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x01;DOSR = 384 (MSB)
    REG[0][14]= 0x80;DOSR = 384 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0x98;mAdc = 24、分压器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)= 11025)
    REG[0][5]= 0x91;P=1、R=1、J=16
    REG[0][6]= 0x10;P=1、R=1、J=16
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x02;DOSR = 512 (MSB)
    REG[0][14]= 0x00;DOSR = 512 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= 0xa0;mAdc = 32、分压器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    %%if (%%prop (SampleRate)=8000)
    REG[0][5]= 0x91;P=1、R=1、J=24
    REG[0][6]= 0x18;P=1、R=1、J=24
    REG[0][7]= 0x00;D=0000 (MSB)
    REG[0][8]= 0x00;D=0000 (LSB)
    REG[0][4]= 0x03;PLL_CLKIN = MCLK、CODE_CLKIN = PLL_CLK、PLL 打开
    REG[0][12]= 0x88;MDAC = 8、分压器加电
    REG[0][13]= 0x03;DOSR = 768 (MSB)
    REG[0][14]= 0x00;DOSR = 768 (LSB)
    REG[0][18]= 0x02;NADC = 2、分压器断电
    REG[0][19]= b0;mAdc = 48、分频器通电
    REG[0][20]= 0x80;AOSR = 128
    REG[0][11]= 0x82;NDAC = 2、分压器上电
    %%endif

    以供您参考

    我的项目的方框图

    微控制器数据表中的参考音频帧

    数据传输时的帧同步时钟和串行数据引脚状态

    我还尝试使插槽0和插槽1保持活动状态、但它对我来说不起作用。

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

    巴尔赫里什纳  

    我将详细了解您的配置、但我注意到的一点是、您的编解码器设置为 I2S、WCLK 应与 BCLK 的下降沿和上升沿的数据锁存同步、 但是、您的处理器数据表中的参考帧是相反的。  

    与使用的默认时钟极性相比、TLV320AIC3111还具有反转用于传输音频数据的位时钟极性的功能。 此功能可独立于所选音频接口模式使用。 这可以通过第0页/寄存器29位 D3进行配置。

    此致、

    -Steve Wilson

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

    Steve、

    是的、您答对了。 我也做了同样的事情、就是 wclk 与 BCLK 的下降沿同步、数据在 BCLK 的上升沿锁存。

    感谢您的回复。

    -巴尔赫里什纳

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

    Balakrishna  

    这是否解决了您的问题?  或者您是否仍遇到问题?

    Steve  

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

    Steve、

    否、我仍然面临音频编解码器问题。 昨天、我尝试通过 USB 发送一个示例音频缓冲器、并记录在 Audacity 软件中、音频是正确的。 因此 USB 没有问题。 音频缓冲器看起来是这样的、如果您看到左声道和右声道的采样是相同的。

    int16_t  USB_sample_buffer []={
    2526、2525、2906、2906、2877、 2877、3169、3169、/* 0-7 */
    3906、3904、4409、4410、4473、 4472、3636、3637、/* 8-15 *
    2695、2695、1821、1823、1011、 1008、292、296、/* 16-23 */
    -856、-860、-1853、-1848、-2508、 -2511、-2794、-2792、/* 24-31 */
    -2408、-2409、-2113、-2112、-1730、 -1730、-875、-872、/* 32-39 *  

    三、会议的结果 };

    但是、当我通过 I2S 缓冲器收集样本时、看起来是这样的。

    对于左右声道、很少有样片是不同的、因此可能会导致音频不正确。

    谢谢、

    巴尔赫里什纳

     

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

    Steve、

    编辑:

    发布的问题已解决。 我们将通知上的 DMA 中断设置为缓冲区的一半、并将其设置为满。

    将其设置为仅在完全解决问题时通知已解决。 非常感谢您为详细描述 SAI 设置所付出的努力。

    此致、

    巴尔赫里什纳。