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:通过使用单端输入、四个通道的全范围从0.5到1.0、不知道为什么不从0开始

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1258742/tlv320adc5140-using-single-ended-input-all-four-channels-are-starting-at-5-to-1-0-in-terms-of-full-range-not-sure-why-not-starting-at-0

器件型号:TLV320ADC5140

我不知道我做错了什么。

我根据产品说明书将 INM 输入接地。
我设置了10k 阻抗。
我已经测量了 INP 输入端的信号、我可以将其设置为0和3V 直流
我设置了直流模式、禁用了 HP 滤波器。  
我已经验证了来自 ALSA 驱动程序的原始值、它们处于32位范围的中间。  我看到这些值在32位的中心值周围浮动。

输入由一个串联电阻为100R、输入接地端为10nF 的 R2R 运算放大器馈电(我在其他 ADC 实现中使用过这个精确的电路)

用于初始化 ADC 的代码

//唤醒设备(第一个似乎是启动已识别的 SPI)
spiADC (FD_AUD、0x02、0x81、0);
spiADC (FD_AUD、0x02、0x81、0);
std::this_thread::sleep_for (std::chrono:::毫秒(10));
// TDM 和32位(I2S 仅支持2个通道、需要支持更多通道的 TDM)
spiADC (FD_AUD、0x07、0x30、0);//32位
//设置所有4个通道的线路输入(有些增益设置并未涉及下一个地址)(阻抗设置为10k,因为单端不支持2.5k
spiADC (FD_AUD、0x3C、0xB4、0);
spiADC (FD_AUD、0x41、0xB4、0);
spiADC (FD_AUD、0x46、0xB4、0);
spiADC (FD_AUD、0x4B、0xB4、0);
//关闭 HPF
spiADC (FD_AUD、0x6B、0x00、0);

//启用所有4个 ADC
spiADC (FD_AUD、0x73、0xF0、0);
//启用 ASI 4输出插槽(不确定我是否正确)
spiADC (FD_AUD、0x74、0xF0、0);
//加电 ADC 和 PLL (不确定它们是否正确)
spiADC (FD_AUD、0x75、0x60、0);

我用于 ALSA 的设置:

SND_PCM_HW_PARAMS_malloc (&HW_PARAMS);
SND_PCM_HW_PARAMS_ANY (CAPTURE_Handle、HW_PARAMS);
SND_PCM_HW_params_set_access (capture_handle、hw_params、SND_PCM_access_rw_interleaved);
SND_PCM_HW_PARAMS_SET_FORMAT (CAPTURE_Handle、HW_PARAMS、SND_PCM_FORMAT_S32_LE);
SND_PCM_HW_PARAMS_SET_RATE (CAPTURE_Handle、HW_PARAMS、48000、0);
SND_PCM_HW_PARAMS_SET_CHANNELS (CAPTURE_Handle、HW_PARAMS、4);
SND_PCM_HW_PARAMS (CAPTURE_Handle、HW_PARAMS);

我以前使用过此代码、但它用于 I2S 2通道 ADC。  但是、这些设置看起来是正确的。

这是我的原理图(减去输入电路)、与参考设计非常相似。



不确定这是否有用、但这是我的测试代码的输出:



第一行是我将值转换为浮点值(0->1)的地方

第二个值是驱动器外的 int32_t、未改变。  这些值浮动了一点、这让我非常怀疑。 通常、在应用零伏的情况下、不会出现任何噪声、值也不会移动。 与越过 Vrms 值末尾时一样、它也会将其绑定为高电平。

如果有人知道电路或直流设置可能存在什么问题、从而导致这些值接近 ADC 范围的中间值、

谢谢!
瑞克

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

    感谢您的提问。 预计下周同一时间再见。  

    此致、

    Ore.  

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

    感谢你的评分

    周末我重新检查了每个电压,每个信号,每个指示。  我的实施找不到任何错误。

    瑞克

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

    嗨、Richard、  

    需要注意的几点:

    • 尝试使用麦克风偏置来偏置输入信号  
    • 将 SDA 和 SCL 拉至 IOVDD。  
    • 如果要对输入进行交流耦合、请在输入端子处使用电容器、

    如果您需要进一步的支持、请告诉我们。  

    此致、

    Ore.

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

    SPI 连接正常工作、因此我不确定这为何重要?  我不使用 I2C、因此我不认为应该上拉信号。

    这些是线路输入、我不明白麦克风偏置是如何使用的。  如果我将麦克风偏置输出添加到信号中、会更高、我看不出会怎样。

    现在、当我将0V 电压施加到输入引脚时、在 INM 接地的情况下、针对所有设置和单端输入模式、将 ADC 设置为直流电、如果我转换来自2补码的32位值、我将看到0.5输出。  除非这不是正确的方法?

    也存在来自0的偏移。

    我没有使用交流耦合。  这全部是直流电。

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

    嗨、Richard、

    感谢您的澄清。  听起来您在尝试通过 ADC 传递直流信号、同时观察数字输出位。   

    尝试将 ADC 配置为使用单端模式。 您的地址0x3C、B4配置显示您在差分模式下运行:  

    数据表8.6寄存器映射介绍了有关如何配置 ADC 的大量详细信息。  

    另外、我想知道在输入0VDC 时、它是否转换为0.5? 3VDC 时会出现什么情况?  

    此致、

    Ore.

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

    B4 = 0b1011 0100

    查看数据表、其中显示:
    7 = 1 =线路输入
    6-5 = 01 =模拟单端输入
    4 = 1 =直流耦合
    3-2 = 01 = 10k 阻抗
    1 = 0 =保留
    0 = 0 =禁用 DRE/AGC

    我尝试更改所有值的迭代、但没有得到任何真正的区别。  当我切换到 DIFF 模拟输入时、起始值从0.509变为0.512

    如果我应用3V 电压、则会变为1.00、但似乎会提早达到该值(比如在2.5ish 范围内)

    听起来很奇怪、在前一个芯片上(我只是为了以防万一而更换了它)、我将一个悬空接地连接到 INM、它显示了完整范围! 这真的很奇怪。  


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

    嗨、Richard、

    当输入为零时、您是将引脚还是让它们悬空?

    还要尝试在差分模式下的两个输入端输入1.4VDC、并让我们知道您观察到的情况、  

    然后在差分输入中将 INM 保持为1.4VDC、将 INP 保持为2.8VDC。 并让我们知道您观察到了什么、

    然后、在差分模式下、使 INM 保持1.4VDC、使 INP 保持为0VDC、并告诉我们您观察到的是什么。  

    此致、

    Ore.  

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

     INP 的输入来自运算放大器输出。  它通过一个小电阻器、然后命中 INP 引脚。  有一个10nF 电容器从输入引脚接地。  我使用了一个示波器来测量 INP 引脚的输入、以验证 它是否为0V。  我还使用 相同的 示波器测量了 INM 引脚(因为我 可以接触到一个小焊盘)

    我无法很容易地从接地端移除 INM、因为它连接到定制 板上的焊盘上的接地端。  我可以尝试 在引脚下方滑动绝缘体、几天后我可以尝试看看是否可能。  (该芯片的引脚排列使其难以使用、因为所有焊盘都在下方)

      


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

    我懂了。  

    因此、当0VDC 输入到 INP 和 INM 时、仍可观察到0.5VDC。  

    请确认您在其他测试中看到的内容。  

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

    好的、终于回到了我可以做这个测试的地方。  I 从 INM 断开接地、然后使用 RIGOL DP832可编程电源向 INMP 引脚发送特定电压。  我将 INP 从0改为3V、具体取决于通过 TDM 接口传入的完整值范围。

    结果如下:

    INM 引脚开路(悬空)、数字值(转换为全范围悬空)、0.0至1.0
    INM 上的0.0V、0.5至1.0 (与我一直看到的一致)
    INM 上为0.1V、0.48至1.0
    INM 上为0.5V、0.34至1.0
    INM 上为1.0V、0.16至1.0
    INM 上为1.5V、0.0至1.0 (这是我预期 INM 上的 GND)
    INM 上为2.0V、0.0至0.87 (顶部切断范围)

    因此、INM 基本上设置为范围的1/2时、它会提供全范围输出。  这与数据表中的任何内容都不匹配。

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

    (1.4V 相同、因为我认为完整范围实际上是2.8V)

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

    您好、Richard、

    我认为您发现的是利用直流耦合电路的结果。 该器件确实需要电源提供交流耦合模式本身(通常为 Vref /2)提供的直流偏置。  

    但是、这不是预期的用例、正如您指出的、它不在数据表中。 我自己进行了测试、能够看到预期的性能:0VDC = 0FS、700mVDC = 0.5FS、1.4VDC = 1FS。 请参阅随附的 zip 文件。

    我还附加了我之前使用的设置的 cfg 文件。 幸运的是、您的代码格式看起来非常友好、我相信您应该能够加载我的设置并查看是否仍然可以观察到相同的效果。

    e2e.ti.com/.../ADC5140_5F00_DCtests.zip

    e2e.ti.com/.../ADC5140_5F00_DC.cfg

    此致、
    J·麦克弗森

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

    嘿、Jeff、

    仔细检查您的配置、我看到没有任何设置差异。  您正在转储高通系数、但未在第4页设置它们。  我不是在设置它们。  每一个其他设置都相同。

    我测试了4款不同的芯片、都可以确保不会有其他问题、但是都非常一致。

    现在、使用 INM 引脚上的 GND、我需要将0.5和倍数减2以在32位空间中获得0 1。

    我的问题是、我能否将 INM 引脚偏置到1.4V、然后再获得完整的0至2.8范围?  有没有理由不这么做?

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

    另一件我不明白的事情是、如果我将所有 INM 保持悬空、输入也会在32位输出上达到全范围。  芯片中是否有某种弱上拉电阻、使此时的点设为1.4V?

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

    您好、Richard、

    只要 INM 不超过 AVDD、就不会因使用您的解决方案而损坏器件。

    我不能完全理解你的第二次答复。 您说、当所有 INM 都悬空时、您可以返回所需的完整32位范围? 都在0处?

    在交流耦合模式下、该器件确实会在输入引脚上产生偏置以使数据居中、但在直流模式下、会断开偏置。

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

    是的、这真的很奇怪。  我将所有 INM 引脚悬空、当施加到 INP 的电压介于0至2.8V 之间时、这些引脚器件显示为完整范围。  

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

    您好、Richard。

    我同意这很奇怪。 您在前面提到过、您尝试了类似的方法、并且在前一款芯片上工作正常。 简单来说、这种现象是否可预测且可重复? 它仍然存在于多个电路板和芯片中?

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

    我没有尝试跨多个电路板、但我确实使用示波器测量了所有电源/GND/基准输入、以确保它们是正确的。

    我目前已将 INM 硬连线到1.4V 分压器(要拆分为电路板、这只是原型)、现在它可以工作到高达2.8V 的全范围直流输入(对我来说可以跟踪1VRMS)

    我换掉了芯片、只是为了进行确认。  所有芯片都是一样的。

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

    您好、Richard、

    好的。 我很想知道它在多个电路板上的工作原理、因为这可能是布局方面的问题。 无论哪种方法、如果您对解决方案满意、我都不会看到它的问题。

    此致、
    J·麦克弗森