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.

[参考译文] TLV320ADC6120:仅输出噪声,即使输入通道短路也是如此

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1085972/tlv320adc6120-only-noise-at-the-output-even-with-a-short-circuit-at-the-input-channel

部件号:TLV320ADC6120

尊敬的TI支持:

我正在尝试使用 TLV320ADC6120,使用dsPIC33对其进行控制(通过DCI设置)。 应用程序将是“双通道模拟麦克风录音”

请检查下面的设置:

通过I2C的TLV320 (从属)设置:

#唤醒具有I2C的设备,使用内部Areg写入P0_R2
W 9C 02 81
#
#通过I2C写入P0_R115启用输入Ch-1和Ch-2
W 9C 73 C0
#
#通过I2C写入P0_R116来启用ASI输出通道1和通道2插槽
W 9C 74 C0
#
#通过I2C将ADC,MICBIAS和PLL加电写入P0_R117
W 9C 75 E0

DCI设置(dsPIC33是主控):

FSYNC = 44.1 kHz

BCLK= FSYNC x 64 (32位/通道)

由FSYNC中断,以获得4个插槽(16位/插槽-> 2插槽/通道)。

问题:正如您在TLV320配置中所看到的,我使用的是交流输入模式(默认),但如果我使用示波器检查输入(电容器和芯片输入之间),则所有输入(IN1P,IN1M,IN2P,IN2M)中的直流偏移为1.47V。

BCLK和FSYNC工作正常(这意味着dsPIC的DCI模块工作正常),我可以看到来自SDOUT的数据(I2C 通信和TLV320工作),但肯定是随机数据。

我想 知道发生了什么。 根据输出,是否有任何简单的方法来检查输入是否正常工作? 示例:如果我短路 IN1P和IN1M,我是否应该在SDOUT看到通道1插槽(64位帧的前32位)的"0"?

抱歉,如果我的问题听起来很明显,我对这些设备非常陌生。

 

提前感谢。

KR,

伊凡

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

    e2e.ti.com/.../TLV320ADC6120-Differential-Line-Inputs.txt

    您好Ivan:

    我也不熟悉这个,所以不用担心。

    您的代码对我来说很好,但只是在我上传2差分输入预设(TDM 32位字)时,我附加了一个i2c脚本,以防出现差异。

    我对你试图通过“FSYNC中断”实现的目标感到困惑。 如果您只有2个输入,则不需要4个插槽。 您甚至在POST的末尾说插槽1应该是32位长。 您的位时钟不支持4个插槽。

    即使您正在查看数据,您是否使用数字分析仪或类似设备对其解码? 通过观察方波,几乎无法判断数据是否正确发送。  

    您是否在远离芯片的地方测试了电容器以验证它是否会阻止DC? 您是否正在发送跟单信用证补偿? 1.47V看起来很像。

    是的,如果您将两个输入端短接至接地,则每个帧的数据流前半部分应显示0。 但如果可能,我建议使用分析仪对信道进行解码。  

    此致,

    Jeff

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

    您好,Jeff:

    非常感谢您的回复。

    请让我先向您解释一下我要做什么:

    - ADC端(使用TDM模式的从属设备):

     2个模拟通道记录。 交流输入和32位/通道。

     > FSYNC (由主dsPIC33生成)为44.1kHz (这是我的中断频率和采样频率)。 因此,BLCK为44.1kHz * 64 (32位x 2通道)= 2.8224 MHz。 请告诉我,我的观点是否正确。

     >每个FSYNC周期总共发送64位(CH1的前32位和CH2的第二个32位)。

    - dsPIC33侧(使用DCI模块的主控):

     > FSYNC会在每个周期生成中断以保存接收到的所有数据(总计64位)。

     > DCI插槽的最大大小为16位,因此每个通道需要使用2个插槽来保存所有即将出现的信息。 ->总共4个插槽,用于这些64位。  

    {我想我必须进一步澄清前面的要点;ADC中的一个插槽是32位(1通道),但我需要在DCI模块中使用2个插槽来获得每个通道的32位。 请查看下图}

    //中断|<------- 每4个字(16位x 4 = 32位x 2 = 64个周期)-------- >|
    //FSYNC:||________________________________ ||_
    //BLCK:_||||||||||||||||||| |_||_|_||_|||| |_||_|_||_|||| |||||||||||||||||||||||   
    //       |<----------- 通道1数据-------------------- >|<----------- 通道2数据----------- >|
    //       |<----------- 32位-------- >|<----------- 32位-------- >|
    //       |<--TXBUF0-->|<--TXBU1-->|<--TXBUF2-->|<--TXBUF2-->|<--TXBUF3-->|
    //       |<--RXBUF0-->|<--RXBUF1-->|<--RXBUF2-->|<--RXBUF2-->|<--RXBUF3--->|
    //       |<--TimeSlot0->|<--TimeSlot1->|<--TimeSlot3-->|<--TimeSlot4-->|
    //       |<------------------ 1/fs/ff------------------ >|

     >所有数据都保存在缓冲区中,以便稍后将其传输到SD卡(此步骤工作正常,因为我已对其进行了测试)。

    我可以检查并解码从SD卡保存的所有数据。 此外,我可以禁用其中一个信道,在SDOUT中,我可以看到该信道的"0"和已启用信道的一些数据(这意味着i2c工作正常,我完全控制ADC)。

    >>我真的不理解以下内容:

     - ADC输入 (IN1P,IN1M,IN2P,IN2M) 始终保持直流电压(1.47Vdc)水平。 {测量在ADC输入引脚处执行)。 此直流电压电平是从ADC生成到输入的吗?

    -在ADC引脚输入和麦克风/信号发生器输出之间有电容器。 我可以通过示波器看到这些电容器会停止我从信号发生器中输入的任何偏移。 (我认为这很好)。 但是,如果我卸下麦克风/信号发生器,并且将输入短路到接地,我仍然可以在SDOUT中看到数据,为什么?

    -关于解码:获取每个通道的32位,为了获得正确的模拟值,我所做的是:收到的值* 2.75V (最大电压输入)/4294967295 (32位标度)=测量的模拟电平。 请告诉我是否正确。

    非常感谢。 我在这方面工作了几个星期,我觉得我已经到了最后阶段,要取得一些成果!

    此致,

    伊凡

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

    您好Ivan:

    您的解释非常有帮助。 您的计时公式对我来说都是正确的。 关于您的问题:

    1)有时放大器带有偏置电路,可反射到引脚上。 测量输入引脚以测试电容器可能会导致这种误解。 只要直流偏压未显示在结果中,这是正常行为。  

    2)我之前误解了。 通过接地输入,您很难看到完美的零。 设备的噪声基板始终会在输出中显示一些位。 除非您如上所述禁用信道。   

    3)您的转换公式对我来说是正确的。 您是否仍在绘制这些结果? 如果您可以使用分析仪,效率会更高。 如果可能,我建议测量ADC (而不是SD卡)的输出,并对其进行分析/解码,以验证仅ADC是否工作正常。  

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

    您好,Jeff:

    非常感谢您的回复,也很抱歉我的延迟回复。 我正在进一步调查这个问题。

    请参阅下面的我的进度:

    我当时使用Beagle SPI工具分析ADC (SDOUT引脚)的数据输出。 我知道我正在使用DCI,但使用Fsync作为SS,BCLK作为SCK,SDOUT作为Miso,GPIO1作为MOSI ...工作正常,我收到的数据"正确"(示波器数据= Beagle SPI数据)。

     -关于输入端的"幻影"直流电压。 我发现它始终是我的VREF的一半(无论我可以看到的偏置电压配置是什么)。如果我设置了VREF = 2.75 ,我在输入引脚上看到1.37V;如果我设置了VREF = 2.5 ,我在输入时看到1.25V;... 问题在于:如果我将输入配置为交流耦合,并且在输入引脚上添加了一个电容器(以停止信号中的任何类型的直流电压),我正在减小输入电压范围,因为我的信号耦合在“幻影”直流电压上。

    -接收的数据:无论输入(短路,断路或信号)如何,我始终从00xxxxxx接收随机结果至FFxxxxxx,因此,我的读数将为0,xxx和2.7xxV (无中间值)。 我想我在投入方面有一个问题。

    -如果我将直流电压置于输入端,并高于Vref,我可以看到我是如何“使输入饱和”的,因为我在两个通道中都接收到0。 我认为这是合理的。

    -如果我使用CHX_CFG0在输入通道上启用DRE ("1D = DRE或AGC或DRC启用,基于寄存器108 (P0_R108)中的位3配置)。 我可以获得 与00xxxxxx和 FFxxxxxx不同的值。 但我认为它们仍然是"随机的"。

    请尝试任何建议?

    提前感谢。

    KR,

    伊凡

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

    您好Ivan:

    在启用DRE的情况下,值会有所不同,因为增益是通过算法调整的。

    我不熟悉Beagle工具。 我很高兴它与您的示波器数据相匹配,但您是否意味着您看到的数据是方形的? 我想确保您不会将数字数据误认为是您在进行数字到音频转换后预期会看到的正弦波。 您的结果的图片将会很有帮助。

    "幻影"电压不会直接限制您的输入。 只需根据地面调整测量点中心。 您的最大输入(相对于接地,因为这是数据表对其进行量化的方式)为1Vrms = 1.42 Vpk。 此电压偏置为1.8V,因此在引脚上看到的电压为3.22V。 如果您的意思是降低Vref将限制您的输入摆动,那么是的,您是对的。 查看数据表中的表8-11,了解Vref和最大输入波动之间的关系。  

    如果我理解正确,您只看到大约为0和2.7V的值,而介于0和2.7V之间的值不存在? 这与我前面的问题有关,即您看到的结果是否为方波形。  

    我很快就会有一个EVM (在一周左右),我可以自己测试它以验证您看到的内容。 但我需要您的结果,即示波器/beagle捕获和寄存器转储。

    谢谢!

    Jeff

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

    您好,Jeff:

    我希望你一切顺利。 再次感谢您的回复。

    好的,让我们按照流程逐步进行操作,这将帮助您了解我的配置示例。 抱歉,我对音频ADC很陌生。

    • 此示例的我的配置:
      • 仅1个模拟通道(以简化和简化我们的生活)。
      • 模拟单端输入和直流耦合。
      • BIAS-CFG为“DEFAULT”->无更改(MBIAS设置为VREF,VREF设置为2.75V ->对于单端输入,它将支持1 Vrms)

     

    • 上述设置的I2C代码:
      • Sleep_CFG (0x02)->写入0x81
      • CH1_CFG0 (0x3C)->写入0x30
      • IN_CH_EN (0x73)->写入0x80
      • ASI_OUT CH_EN (0x74)->写入0x80
      • PWR_CFG (0x75)->写入0xE0

     

    • DCI配置
      • FSYNC = 44.1kHz (使用公式DCICON3 =(FCY/(2*FCSCK))–1 ->获得45.5kHz近端频率)
      • BCLK = FSYNC*64位(32位/通道)
      • FSYNC生成一个中断来读取数据并发送到ADC (这是可选的,因为在本例中我不需要将任何数据发送到GPIO1引脚)  {这只是供参考的,在本例中,我要重点介绍ADC输出, 不是dsPIC33侧)

     

    • 结果:
      • Plot Fsync (Channel 1) vs Vinput IN1P (Channel 2)->注:我正在使用函数发生器生成具有以下参数的Vinput信号:VPK-pk = 533mV // Voffset=489mV // Frequency = 5.057kHz (有关Fsync的比率为9)[这是我要测量的信号]

    CH1_Fsync-CH2-IN1P&IN2P

      • Plots Fsync (Channel 1) vs SDOUT (Channel 2)->备注:请查看以下不同时刻SDOUT线的屏幕截图。 如您所见,我们仅在信道1中看到数据(信道2已禁用)。

    CH1_Fsync-CH2-SDOUT (1)

    CH1_Fsync-CH2-SDOUT (2)

    CH1_Fsync-CH2-SDOUT (3)

    CH1_Fsync-CH2-SDOUT (4)

    CH1_Fsync-CH2-SDOUT (5)

      • Beagle SPI miso (SDOUT)数据已接收->这是接收到的数据,如果进行转换,它始终从0V到Vmax (1.41 伏特),无中间值。 [使用的公式: Vout = SDOUT (32位)* 1.41V/4294967295  (0xFFFFFFFF)]

     Beagle SPI MISO (SDOUT) - Data received

    希望现在我能澄清问题所在。 流程中是否有任何问题? 为什么我看不到中间值? 仅0.xxx或1.4xxxx (近端最小值和最大值)。

    附加说明:beagle的SPI采样率为50MHz。 我可以将dsPIC中的已知数据发送到ADC (GPIO1引脚),并且可以使用示波器和Beagle正确读取它们。 所以我认为沟通可能是正确的。 但我恐怕没有从SDOUT读取"预期"值。

    提前感谢。

    KR,

    伊凡

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

    您好Ivan:

    感谢您的图片和说明。 这很有帮助。

    ADC数据以正确的面值显示。 您可以看到每个示例如何具有不同的二进制字词,这些字词的值会上下变化(我假设这些图片按时间顺序排列)。 但这很难“眼球测试”。

    让我担心的是,您的FSYNC不接近44.1kHz。 我注意到每个周期应该有9个样本,而数据日志只显示6个样本。 同样的数据也不显示振荡运动。 例如,从第6个样本开始,从04 4E 24 FD开始,一直上升到FE 7 D 8C 1E,轻微下降到F7 5B CD D3,然后再次上升到F9 13 05 0E。 转换过程中会产生大量噪音,或者在SDOUT外测量数据的方式存在问题。 我担心Beagle不是测量整个单词,而是采集单词的样本,从而产生逻辑上的高值和低值

    我在过去也注意到,由于时钟边缘未对齐,正弦波输入有时会输出为方波。 查看您是否能够调整边缘同步以及这是否会更改您的结果。  

    最终,我认为我们需要尽可能删除Beagle,并将其替换为支持TDM的数字分析仪/DAC,以便绘制来自SDOUT的数据。 逐份采样容易出错,不能隔离ADC和dsPIC之间的问题。  

    此致,

    Jeff

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

    您好,Jeff:

    再次感谢您的回复。

    是的,我知道Beagle不是最佳的解决方案(基本上是因为它基于SPI协议),但不幸的是,我们目前还没有TDM分析仪。

    但这对我来说似乎很好,因为我在两端都得到了相同的数据[在SD卡和SDOUT线(Beagle)中保存数据]。 不幸的是,数据不是我所期望的。

    对于FSYNC,它不是44.1kHz (近端为45.56kHz)。 但这是因为DCI寄存器的公式[DCICON3 =(FCY/(2*FCSCK))-1],所以在我的代码DCICON3 =(7000万/2*64*441000)-1 =44.1万 = 11.4 (寄存器需要11,这就是为什么Fsync频率不会精确为44.1kHz)

    我有两个问题:

    1)是否有任何方法可在输入引脚处放置已知参考? 与内部引用一样 ,获取已知SDOUT数据的已知输入值?

    2)您知道我是否可以从ADC转换访问任何中间寄存器? IN1P至SDOUT数据之间是否有寄存器? 也许这可以帮助我找到问题。

    提前感谢。

    此致,

    伊凡

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

    好的,如果不是Beagle问题,我怀疑是某种计时问题。 遗憾的是,您无法输入"已知输入",因为噪声基板始终会产生一些差异。 也没有你要求的那种登记册。  

    我知道这是一项新功能,因此我建议您投资购买音频分析仪/升级现有示波器(支持TDM,I2S等解码),前提是您/ Aquatec经济实惠。 遗憾的是,如果不看到数据转换回模拟域,则很难进行调试。  

    我在这里提出的唯一建议是尝试调整ADC的定时协议。 在变速器中,你可能会损失一点。  

    此致,

    Jeff

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

    您好,Jeff:

    感谢您的回复。

    不用担心。 本周我将收到新的多氯联苯,希望我能做更多的测试。

    非常感谢您的信息和时间。

    此致,

    伊凡