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.

[参考译文] ADS131E04:无法通过 SPI 读取 ADS131E04 上的 ID 寄存器 (0x00)

Guru**** 2693225 points

Other Parts Discussed in Thread: ADS131E04, ADS131E08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1580176/ads131e04-unable-to-read-id-register-0x00-on-ads131e04-via-spi

器件型号: ADS131E04
Thread 中讨论的其他器件: ADS131E08

您好、  
我将 通过 SPI 将 ADS131E04 与 MCU 连接在一起。 我按照数据表中的启动顺序操作:
发送了复位 (0x06) 命令
已等待 100ms
发送 SDATAC (0x11) 命令以停止连续数据模式
已尝试读取 ID 寄存器 (0x00)
但是、我始终读回 0x00、而不是预期的 0xD0(对于 ADS131E04)。
示波器上的 SPI 线路和 MOSI 数据显示正确、并正确传输第一个字节。
其他意见:
MOSI 第一个字节反映 D0 数据(位于第一个和第三个字节中)。
有时会显示正确的 0xD0 模式、但不会始终显示。
我们尝试在所有 SPI 模式 (0 至 3) 下运行、但结果保持不变。
问题:
在上电或复位后发送 SDATAC 并读取 ID 寄存器之前、WAKEUP (0x02) 命令是否是必需的?
唤醒后寄存器访问之前的建议延迟是多少?
VCAP 电容器值不正确是否会导致 SPI 通信不稳定或 ID 读取失败?
是否需要 VCAP、AVDD 和 AVSS 电容值才能与数据表/EVM 套件建议完全匹配?
(当前所有电源轨都使用 1 µF 和 10 µF 电容器。)


VCAP 引脚:与 1 µF 或 10 µF 电容器连接(如果必须进行精确匹配,则需要澄清)。
SPI 设置详细信息:
SPI 时钟:10MHz
已验证示波器上的 MOSI 数据是否正确
提前感谢您的支持和指导。

谢谢、
马尼坎丹五世

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

    尊敬的  Manikandan V:

    欢迎来到 TI E2E 论坛。

    读取寄存器不是必需的唤醒 (0x02) 命令。

    VCAP 引脚是模拟引脚、因此 这些引脚上的电容值不会影响 SPI 通信、但我们强烈建议遵循 ADS131E04 数据表、并在 VCAP 和 AVDD 引脚上使用相同的电容器、以实现最佳性能。

    RREG 命令是一种多字节命令、存在 SCLK 速率限制、具体取决于如何发出 SCLK 来满足 tSDECODE 时序、如 ADS131E04 数据表的 9.5.3.1 发送多字节命令一节所述:  

     ADS131E0x 串行接口以字节为单位解码命令、需要 4 个 tCLK 周期来解码和执行每条命令。 因此、当发送多字节命令(例如 RREG 或 WREG)时、4tCLK 周期必须将一个字节(或命令)的结束与下一个字节(或命令)的结束分开。 假设 CLK 为 2.048MHz、则 tSDECODE (4 tCLK) 为 1.96µs。 当 SCLK 为 10MHz 时、可以在 0.8µs 中传输一个字节。 此字节传输时间不符合 tSDECODE 规范;因此、必须在第一个字节之后、第二个字节之前插入 1.16µs (1.96µs、– 0.8µs) 的延迟。

    另一个替代选项是在配置期间降低用于读取或写入寄存器的 SCLK 频率。 如果 SCLK 为 4MHz、则在 2µs 中传输一个字节。 由于此传输时间超过 tSDECODE 规范 (2µs > 1.96µs)、因此处理器可以毫无延迟地发送后续字节。 完成配置后、即可将 SCLK 频率设置为高频率、ADS131E04 的最大 SCLK 频率为 3.3V DVDD 下的 20MHz。

    当器件处于读取数据连续模式时、必须先发出 SDATAC 命令、然后才能发出 RREG 命令。

    BR、

    Dale

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

    尊敬的 Dale LI:

    感谢您的答复、

    最初、我无法读取正确的寄存器值、但在两个 SPI 字节之间添加 2µs 延迟后、我现在能够成功读取 ID 寄存器 (0xD0) 并使用 RREG 命令正确验证所有写入的寄存器值。
    每当我尝试写入或读取数据时、MISO 都会响应时钟本身的第 1 个字节、但 我也在预期的时钟字节中接收到正确的数据
    但是、我面临着一个问题、即 CH0 始终读取满量程 (0x7FFFFF)、即使在施加有效的直流输入时也是如此。 其他通道返回 0x000000。

    测试设置

    器件:ADS131E04

    AVDD/AVSS:5V/0V

    DVDD:3.3V

    SPI 时钟:10MHz (MODE0)

    VREFP–VREFN:内部 4V 基准

    增益:1(满量程范围=±4V)

    输入:

    AIN0P→+1V DC  

    AIN0N→GND(内部基准缓冲器连接 2.5V)

    寄存器设置序列:
    ADS_SEND_COMMAND (RESET);// 0x06
    DELAY_US (200);
    ADS_SEND_COMMAND (SDATAC);// 0x11、停止连续读取

    ADS_WRITE_reg (CONFIG3、0xEC);//内部基准缓冲器、启用运算放大器
    ADS_WRITE_reg (CONFIG1、0xF2);// 16kSPS、CLK 设置
    ADS_WRITE_reg (CONFIG2、0xE0);//内部基准使能、测试信号已禁用
    ADS_WRITE_reg (CONFIG4、0x00);//默认值
    ADS_WRITE_reg (CH0_CFG、0x10);// CH0 =正常输入
    ADS_WRITE_reg (CH1_CFG、0x80);// CH1 断电
    ADS_write_reg (CH2_CFG、0x80);// CH2 断电
    ADS_WRITE_reg (CH3_CFG、0x80);// CH3 断电

    //读取 ID 寄存器(正确返回 0xD0)

    ADS_SEND_COMMAND (START);// 0x08
    DELAY_US (1000);

    ads131e04_READ_ALL_channels (channels_raw);

    观察

    CH0 输出始终为 0x7FFFFF(满量程)。

    CH1–CH3 输出为 0x000000。


    问题

    您能否建议即使在使用有效模拟输入(1V 直流)的情况下 ADC 也读取满量程值的可能原因?

    附加了 clk、MOSI、MISO、cs 波形、






    这样 早期 MISO 活动(在第一个字节上) ADS131E04 的预期行为是什么?







    如波形所示、第一个状态字节 (0xC0) 在第一个和第二个时钟字节周期内出现。 理想情况下、它应该仅出现在第二个时钟字节期间、但它似乎在 MISO 上发生了重复或提前移动。

    请参阅下图、



    如果需要任何其他详细信息来调试问题、请告知我。  

    谢谢、  
    Saravana Kumar M




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

    尊敬的 TI 团队:

    由于这个问题、我们目前的项目面临瓶颈、阻碍了我们的进展。 我们尝试了多种方法、但仍然无法解决。 请帮助我们确定根本原因、并提供尽早解决问题的指导。

    有关该问题的一些其他详细信息:

    我们遵循下面所示的电压检测拓扑 — 使用内部生成的负输入偏置为 2.5V OPAMP_REF

    我们馈送 1 V DC 输入 但 ADC 输出始终显示 A 最大十六进制值或某个随机值 特殊的预防措施。

    请参阅随附的图以了解我们的连接拓扑(图 58:简化的电流检测连接)。

    您的及时支持将非常感谢。


    此致、
    马尼坎丹五世

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

    嗨、 Manikandan、

    我真的很抱歉、我们本周没有回应。 这款器件的应用专家本周都不在办公室。

    我觉得您的 SPI 通信看起来是正确的。 在 MOSI 上发送 RDATA 命令时、只需忽略 MISO 上的第一个字节。 第一个字节将始终为 (0xC0 + FAULT_STATP[7:4])。  重要数据从 MISO 上的字节 2 开始、同样采用 (0xC0 + FAULT_STATP[7:4])。

    断电的通道始终读取 0x000000。 正确。

    为什么通道 0 读取 0x7FFFFF 也不清楚。 作为第一个调试步骤、我建议设置 MUX0[2:0]= 001b。 这会在内部将正负模拟输入短接至 1/2 Vs。 然后、您应读取一个接近 0V 的值。 请尝试返回并报告。

    此致、
    Joachim Wuerker

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

    您好 Joachim、

    感谢您的答复和指导。

    建议的是、我通过设置将器件配置为进行内部短路测试 MUX0[2:0]= 001b 。 启用此配置后、输出值现在读数在所有通道上接近于零、这符合预期。

    我附上了测量结果和配置快照供您参考。

    请检查并告诉我您是否还有其他检查或配置需要您推荐。

    谢谢。此致、
    马尼坎丹五世

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

    嗨、 Manikandan、

    非常感谢您执行该测试。 ADC 似乎正在正确转换、您可以读取转换数据。
    您的“STATUS = 0x00D0“指的寄存器位是什么?

    下一步、您可以再次在输入端施加已知信号。 我建议从一些简单的东西开始。 该器件不支持负模拟输入连接到 AVSS 的单端测量、但出于调试目的、我们可以使用它。 意味着连接 INxN = AVSS、例如 INxP = 1V。 暂时不要使用缓冲器或任何东西驱动 INxN 输入来对其进行电平转换。 在这种情况下、您读取的值应该略小于 1V。

    如果有效、那么我们只需根据图 58.

    此致、
    Joachim Wuerker

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

    status = 0x00D0指的是 ID 控制寄存器(地址 0x00) ADS131E04

    在下一步中、我连接了 INxP = 1V DC INxN = GND 与建议的一样。 但是、我主要了解的是 满量程输出(十进制 0x7FFFFF 或 8388607) 但偶尔我会观察到一些波动或浮动值。
    谢谢、  
    ManIKANDAN V
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、 Manikandan、

    这很奇怪。 您能否确认、除了 AIN0P 和 GND 到 AIN0N 上的 1V 信号之外、您没有将任何其他内容连接到通道 0 输入?
    您是否使用 DMM 确认了两个引脚上的电压?
    之前、您提到了“AIN0N→GND(内部基准缓冲器连接了 2.5V)“

    您是否尝试过任何其他频道?

    此致、
    Joachim Wuerker

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

    嗨、 Manikandan、

    我认为此时应该是检查您的原理图是否存在任何问题的好时机、因为这里发生的事情非常令人费解。 您能否将原理图分享给我进行审核?

    从输出代码来看、好像使用了增益= 16。
    关于为何在 AIN0P 上使用 DMM 测量 1.5V 至 1.8V、我目前没有很好的解释。

    您是否在没有配置 ADS131E04 的情况下尝试过任何测量? 只需在默认寄存器配置中使用它即可?
     不过、当使用内部 VREF 时、至少可能必须设置 PDB_REFBUF = 1b。

    此致、
    Joachim Wuerker

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

    您好:Joachim Wuerker、

    是的,您回答正确 — 问题是由于上的焊点很干所致 VREFN 引脚接地。 重新焊接后、ADC 输出计数现在根据输入电压正确响应。

    以下是中输入电压的测试观察结果 0V 至 4V 。 测量的 ADC 计数严格遵循预期值、从而确认基准和输入电路正常工作。

    从数据中、我们观察到偏差大致为 5000–7000 个计数 、对应于 About 3mV 失调电压

    您能否确认 ADS131E04 器件的这种偏差水平是否正常、或者是否有进一步优化/减少此误差的方法?

    感谢您的持续指导和支持。

        公式 差值(按预期值和实际值) 电压 以伏特 (mV) 为单位的计数差值
    序号 模拟电压 (V) 呈指数衰减 实际      
      0V 至 4V ADC 按公式进行计数 四舍五入   ADC_COUNT      
                   
                   
    1. 0.005 10485.75875 10486. 2880 –7606. 0.001373291. –3.63
    2. 0.006. 12582.9105. 12583 4060 –8523 0.001935959. –4.06.
    3. 0.007. 14680.06225 14680 7730 –6950 0.003685952. –3.31.
    4. 0.008. 16777.214 16777. 8690 –8087 0.004143715 –3.86
    5. 0.009. 18874.36575 18874 10960 –7914 0.005226136. –3.77
    6. 0.01 20971.5175. 20972. 12710. –8262. 0.006060601 –3.94
    7. 0.02. 41943.035 41943 年 34260 –7683 0.01633643. –3.66
    8. 0.03. 62914.5525 62915 55140 –7775 0.026292804. –3.71.
    9. 0.04. 83886.07 83886 76570 7316 0.036511426 –3.49
    10. 0.05 104857.5875 104858 97430 –7428 0.04645825 –3.54
    11. 0.06. 125829.105. 125829 119140 –6689 0.056810386 –3.19
    12 0.07. 146800.6225 146801. 139760 –7041. 0.066642769 –3.36
    13 0.08. 167772.14 167772. 160980 –6792 0.076761255 –3.24
    14 0.09. 188743.6575 188744. 181420 7324 0.086507808. –3.49
    15 0.1 209715.175. 209715 202720 –6995 0.096666444 –3.34
    16 0.2 419430.35 419430 412850 –6580 0.196862244 –3.14
    17 0.3 629145.525 629146. 621410. –7736 0.296311414 –3.69
    18 0.4 838860.7 838861. 832160 –6701. 0.396804857 –3.20
    19 0.5 1048575.875 1048576 1042490 –6086 0.497098028 –2.90
    20 0.6 1258291.05. 1258291. 1251560 –6731. 0.596790385. –3.21
    21 0.7 1468006.225 1468006. 1461760 –6246 0.697021567 –2.98
    22 0.8 1677721.4 1677721. 1671450 –6271. 0.797009563. –2.99
    23 0.9 1887436.575 1887437 1881130 –6307. 0.89699279. –3.01.
    24 1. 2097151.75 2097152. 2091490 –5662 0.997300267. –2.70
    25 1.5 3145727.625 3145728 3140030 –5698 1.49728316 –2.72.
    26 2. 4194303.5. 4194304. 4187830 –6474 1.996913194 –3.09.
    28 2.5 5242879.375 5242879 5235790 –7089 2.496619522 –3.38
    29 3. 6291455.25 6291455 6284840 –6615 2.996845603 –3.15
    30 3.5 7340031.125 7340031. 7333070 –6961. 3.496680677 –3.32
    31. 4. 8388607. 8388607. 8381470 –7137 3.996596813 –3.40

    此外、我们还需要一些关于的澄清 时序优化和采样行为 最大额定值。 我们将分享观察到的时序数据、并很快跟进更多详细信息。

    此致、
    马尼坎丹五世

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

    嗨、 Manikandan、

    非常感谢积极的消息。 很高兴您在 PCB 上找到这个问题。

    如何施加 0V 到 4V 信号?
    如前所述、该器件不允许在 INxN 连接到 GND 的情况下进行单端测量。 我刚才让您使用此配置进行调试。 如果您使用的是单端测量、那么我不会惊讶地看到这种失调电压/非线性。

    使用增益=1 时、必须对信号进行电平转换、至少移动 300mV。 意味着您可以设置 INxN = 300mV、然后从 300mV 扫描 INxP 至 4.3V 以生成 0V 至 4V 范围内的差分输入信号。

    除此之外、您可以利用之前测试的内部短路连接来实现自失调电压校准。
    然后、您还可以实施系统增益校准、以消除初始增益误差和 VREF 不准确性。

    此致、
    Joachim Wuerker  

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

    您好:Joachim Wuerker、

    我们当前提供来自 A 的输入信号 Digilent 模拟发现 2. 使用鳄鱼夹的设备。
    目前 IN1N 引脚连接至 Digilent 负输出端 (GND)、和 IN1P 引脚连接到 Digilent 器件的正极端子。

    对于、我仍然不完全清楚 IN1N 引脚上的直流偏置要求 —您能否更详细地解释一下?

    按照建议、我们将继续实施 器件自偏移 增益校准 例行程序。

    以下是我们输入信号条件的详细信息:

    1. –125mV 至+250mV 直流信号—步长增量为 2mV

    2. 0V 至 4V、400Hz 正弦波 —步长为 50mV

      • 就是正弦波 单端 正面偏倚

      • 我们的原始源信号是 A ±2V 正弦波 、我们通过差分运算放大器级(使用基准电压)进行偏置、以产生一个 0V–4V 摆幅 然后再馈送到 ADC。

      • 此设置最初是为设计的 单端 ADC 和 PCB 已经是制造的。 我们后来切换到了这个 同步采样器件 从而优化采集时序。

    可以得出近似值 25 个模拟输入通道 不同的电压调节配置。 每个通道都处于 ADC 可读范围内。
    我们的 超低的输入信号振幅 2mV 、我们希望 ADC 能够准确地捕获如此小的级别。

    您能否建议使用 ADS131E04 的建议配置或最佳方法来有效应对这些信号情况?

    再次感谢您的宝贵支持和指导。

    下面是我们的 ADC 输入的示例图像:  

    此致、
    马尼坎丹五世

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

    嗨、 Manikandan、

    共模输入电压范围限制是由于每个 ADC 通道前面使用了 PGA 导致的。 与任何传统的仪表放大器一样、PGA 需要一定的共模输入电压才能工作。 数据表中的公式 4 表示这一限制。 遗憾的是、对这个公式的解释总是有点困难。 对于增益= 1、所有公式均表明、INxP 和 INxN 始终需要从任一电源轨至少获得 300mV 的余量。 如果不满足该余量、则 PGA 输出将饱和、从而导致非线性行为。

    0V 至 4V 正弦波信号测量的一种解决方案是将整个信号(包括在 IN1N 和 IN1P 上)进行电平转换 300mV 至 500mV。 或者、您可以将 IN1N 连接到 2V、然后衰减 INxP 上的正弦波信号、使其摆动 2V +/–1.7V。 使 IN1N = 2.5V 且 IN1P 摆幅为 2.5V +/–2V 也可以使用。 最后、您还可以通过双极模拟电源 (+/–2.5V) 运行 ADS131E04。 这样就可以直接测量+/–2V 正弦波信号。

    注意事项。 请注意、使用单极模拟电源时、您无法测量低于 GND 的信号。

    此致、
    Joachim Wuerker

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

    您好:Joachim Wuerker、

    很抱歉、延迟的回复。

    感谢您先前分享的信息。

    根据您的建议、我们计划使用 ADS131E08 ADC 与双极输入电源(±2.5V)搭配使用。 我们打算将所有输入信号(三相交流信号,电流互感器输出信号,LVDT 输出信号、RPM 传感器信号和主动换能器信号)衰减至±2.2V 的振幅、然后再将其馈送到 ADC 输入。

    通过这种方法、我们认为纯正弦波信号和直流输入(分流测量)不再需要 VCM 偏置。 请确认此理解是否正确。

    完整的原理图完成后、我将与您分享以供审核。 感谢您的耐心和持续支持。

    以下是三相交流输入测量的部分原理图。 请仔细查看并分享您的反馈。

    注意:

    1. AC_GND1 用作这三个相位的星点基准、未连接到系统中的任何其他接地端。

    2. 因为这是一个 没有中性线的隔离式三相电源 、我们为测量目的创建了一个星点参考。

    3. 在抗混叠滤波器之后、经调节的信号将路由到 ADS131E08 的三个输入通道

    完成传感器接口后、我将很快分享其余部分的原理图。

    此致、
    马尼坎丹五世

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

    嗨、Manikandan、

    非常感谢您的更新。
    您的理解是正确的。 使用双极模拟电源、您不再需要任何共模偏置。

    关于您的示意图:您可能不需要 R818、C325 和 C326。 但是、在第一个原型中为它们设置占位符可能是一个好主意。

    此致、
    Joachim Wuerker