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.

[参考译文] TLV320ADC5140:目前我们想使用这种 ADC 来采集音频、但我们可以##39;t 输出声音

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1480658/tlv320adc5140-currently-we-want-to-use-this-adc-to-capture-audio-but-we-can-t-output-the-sound

器件型号:TLV320ADC5140

工具与软件:

目前我们想使用 STM32来控制 adc5140进行音频捕获、但是我们的 ADC 似乎无法正常工作、这是我们为这个 ADC 配置的寄存器。…

ADC_DATE_INPUT(0x00、0x00选择寄存器的页码;/*)*/
ADC_DATE_INPUT(0x02)0x81、;/*上电*/
ADC_DATE_INPUT(0x05、0x05);
ADC_DATE_INPUT(0x07)0x40、;/* ASI_CFG0 registery音频输出配置*/
ADC_DATE_INPUT(0x08)0x20、;/* ASI_CFG1 registery音频输出配置*/
ADC_DATE_INPUT(0x09)0x00、;/* ASI_CFG2 registery音频输出配置*/
ADC_DATE_INPUT(0x0B)0x00 registery音频输出配置;/* ASI_CH1、*/

ADC_DATE_INPUT(0x13)0x02、;/*设备配置为从模式、并且时钟信号(BCLK 生成 FSYNC)由外部 MCU 和*/
adc_write_reg(0x14、0x48);/*配置采样率、48kHz *
ADC_DATE_INPUT(0x16)0x08、;/* MCLK)用作音频根时钟源(GPIO 或 GPIx 与 MCLK 的比率根据 FSYNC 设置而定)MCLK_RATIO_SEL(*/

ADC_DATE_INPUT(0x21)0x00禁用输入端GPIO功能;/*、*/
ADC_DATE_INPUT(0x22)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x23)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x24)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x25)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x2B)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x2C)0x00、;/*禁用输入端GPI / O功能*/
ADC_DATE_INPUT(0x3B)0x00、;/* VREF设置为2.75 V、麦克风偏置为3.3 */

adc_write_reg(0x3C、0x20);
adc_write_reg(0x3D、0x60);
adc_write_reg(0x3E、0xC9);
adc_write_reg(0x3F、0x80);
adc_write_reg(0x40、0x00);

ADC_CHx_CFGx(CH2_CFG0、0x20);
ADC_CHx_CFGx(CH2_CFG1、0x60);
ADC_CHx_CFGx(CH2_CFG2、0xC9);
ADC_CHx_CFGx(CH2_CFG3、0x80);
ADC_CHx_CFGx(CH2_CFG4、0x00);

ADC_CHx_CFGx(CH3_CFG0、0x20);
ADC_CHx_CFGx(CH3_CFG1、0x60);
ADC_CHx_CFGx(CH3_CFG2、0xC9);
ADC_CHx_CFGx(CH3_CFG3、0x80);
ADC_CHx_CFGx(CH3_CFG4、0x00);

ADC_CHx_CFGx(CH4_CFG0、0x20);
ADC_CHx_CFGx(CH4_CFG1、0x60);
ADC_CHx_CFGx(CH4_CFG2、0xC9);
ADC_CHx_CFGx(CH4_CFG3、0x80);
ADC_CHx_CFGx(CH4_CFG4、0x00);

adc_write_reg(0x6B、0x00);

adc_write_reg(0x73)0xF0、;in_ch_start EN寄存器
adc_write_reg(0x74)0xF0、;ASI_OUT_CH_EN 寄存器
adc_write_reg(0x75、0xF4);PWR_CFG 注册


同时我们读取以下三个寄存器的状态:
寄存器地址:ASI_STS、寄存器状态:ff
注册地址:DEV_STS0、注册状态:0
寄存器地址:DEV_STS1、寄存器状态:c0
这是我们针对此 ADC 的电路设计原理图

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

    我现在该怎么办? 请帮助我、非常感谢。

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

    您好!

    以下几点:

    1) 1)请参阅数据表中的应用部分、了解建议的器件去耦。

    2) 2)请确认在 STM 控制器中、I2S 是工作在全双工还是单工模式下、以及哪个 I2S_SD 和 I2Sext_SD 被配置为发送器/接收器。

    谢谢。此致、

    Lakshmi Narasimhan

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

    1.我们更换了器件周围的电容器、但这三个寄存器的读数仍然是 FF、0、C0。
    I2S 在半双工模式下工作、ADC5140发送数据、STM32接收数据、当前配置为 STM32配置为主器件、ADC5140配置为从器件。

    还有另一个解决方案吗?谢谢、此致。

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

    您好!

    (1)我假设在 STM 主站处于运行状态时、ASI_STS 寄存器正在读取0xFF? 如果是、寄存器读回0xFF 表示 ADC 没有接收到有效的 BCLK 和 FSYNC。 我看到 ADC 的 IOVDD 是3.3V、您能否确认从 STM 到 ADC 的 SCK、WS 信号也处于3.3V IO 电平?

    谢谢。此致、

    Lakshmi Narasimhan

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

    您好、我可以确认这些信号是3.3V 电平。 现在、我已经对程序的其余部分进行了微调、并且还对寄存器进行了重新设计。 现在、ADC 的三个寄存器显示运行时的内容:
    ASI_STS 寄存器内容:42
    DEV_STS0寄存器:F0
    DEV_STS1寄存器:e0。
    修改后的寄存器配置如下、请帮助我查看是否有错误?

    我仅使用通道3从麦克风接收数据。

    adc_write_reg(ADCX140_PAGE_SELECT,0x00);
    
    adc_write_reg(ADCX140_SW_RESET,0x00);
    adc_write_reg(ADCX140_SLEEP_CFG,0x81);
    adc_write_reg(ADCX140_SHDN_CFG,0x08);
    adc_write_reg(ADCX140_ASI_CFG0,0x40);
    adc_write_reg(ADCX140_ASI_CFG1,0x00);
    adc_write_reg(ADCX140_ASI_CFG2,0x00);
    	
    adc_write_reg(ADCX140_MST_CFG0,0x02);
    adc_write_reg(ADCX140_MST_CFG1,0x40);
    		
    adc_write_reg(ADCX140_CLK_SRC,0x10);
    
    adc_write_reg(ADCX140_INT_CFG,0x00);
    
    adc_write_reg(ADCX140_BIAS_CFG,0x00);
    		
    adc_write_reg(ADCX140_CH1_CFG0,0x20);
    adc_write_reg(ADCX140_CH1_CFG1,0x00);
    adc_write_reg(ADCX140_CH1_CFG2,0xc9);
    adc_write_reg(ADCX140_CH1_CFG3,0x80);
    adc_write_reg(ADCX140_CH1_CFG4,0x00);
    		
    adc_write_reg(ADCX140_CH2_CFG0,0x20);
    adc_write_reg(ADCX140_CH2_CFG1,0x00);
    adc_write_reg(ADCX140_CH2_CFG2,0xc9);
    adc_write_reg(ADCX140_CH2_CFG3,0x80);
    adc_write_reg(ADCX140_CH2_CFG4,0x00);
    		
    adc_write_reg(ADCX140_CH3_CFG0,0x60);
    adc_write_reg(ADCX140_CH3_CFG1,0x00);
    adc_write_reg(ADCX140_CH3_CFG2,0xc9);
    adc_write_reg(ADCX140_CH3_CFG3,0x80);
    adc_write_reg(ADCX140_CH3_CFG4,0x00);
    adc_write_reg(ADCX140_CH4_CFG0,0x60);
    adc_write_reg(ADCX140_CH4_CFG1,0x00);
    adc_write_reg(ADCX140_CH4_CFG2,0xc9);
    adc_write_reg(ADCX140_CH4_CFG3,0x80);
    adc_write_reg(ADCX140_CH4_CFG4,0x00);
    		
    adc_write_reg(ADCX140_DSP_CFG0,0x01);
    adc_write_reg(ADCX140_DSP_CFG1,0x40);
    adc_write_reg(ADCX140_DRE_CFG0,0x7b);
    adc_write_reg(ADCX140_AGC_CFG0,0xe7);
    adc_write_reg(ADCX140_IN_CH_EN,0xf0);
    adc_write_reg(ADCX140_ASI_OUT_CH_EN,0x20);
    adc_write_reg(ADCX140_PWR_CFG,0x40);
    
    

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

    我很抱歉。 我误读了 SCK 和 WS 工作电压为1.6V、是否有问题?谢谢、此致。

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

    您好!

    很抱歉打断您、那么 SCK 和 WS 的工作电压是1.6V 而不是3.3V? 由于 IOVDD 为3.3V、数字输入需要符合数据表上的 VIH/VIL 规格。

    此外、由于器件处于 I2S 模式、并且通道3用于发送数据、我们可以执行以下操作:

    配置 ASI_CH3寄存器、以在左/右时隙0上提供 CH3数据。

    谢谢。此致、

    Lakshmi Narasimhan

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

    我应该将 SCK 和 WS 的电压设置为什么值? 这是如何设置的?

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

    我还有一个问题、IN2P_GPI2是否对应于通道2? 同样、IN12P_GPI1是否对应于通道1?IN3P_GPI3是否对应于通道3?IN4P_GPI4是否对应于通道4?我使用的是模拟单端输入。但现在 SDOUT 引脚输出始终为0。谢谢、此致。

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

    尊敬的 Ye:

    是的、您的时钟应设置为3.3V。 这是因为根据 Lakshmi 共享的表、逻辑阈值与 IOVDD 成正比。 IOVDD 为3.3V、因此时钟必须跟随。

    是、引脚名称中的第一位数字与您所述的通道名称相对应。

    由于时钟电压不正确、您可能无法获得任何输出。 请修正时钟电平、然后查看是否有任何变化。

    此致、
    Jeff McPherson

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

    Jeff、我应该如何修改这个时钟电平? 是否需要返修电路板? 是否可以通过在引脚 SCK 和 WS 上添加一个上拉电阻器来获得正确的电压?目前这两个引脚上没有连接任何电阻器。谢谢、此致。

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

    尊敬的 Ye:

    您需要检查用于 I2S 通信的 STM 控制器是否能够使用3.3V IO 逻辑提供 I2S 信号、具体取决于微控制器的配置。

    如果不是、那么我们可能需要:

    1) 1)使用电平转换器将 IO 电平转换为3.3V、或

    2) 2)使用1.8V 作为 ADC 的 IOVDD (如果控制器的 I2S 信号为1.8V IO)

    谢谢。此致、

    Lakshmi Narasimhan