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.

[参考译文] ADS131M03:读取多个寄存器问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1333317/ads131m03-reading-multiple-registers-issue

器件型号:ADS131M03
主题中讨论的其他器件: ADS131M04EVM

您好!

我正在使用 ADS131M03、除"读取多个寄存器"命令外、它的所有功能都没有问题:

A)如果我进行重复的单寄存器"0"读取(即0xA000)、我每次都得到正确请求的寄存器值加上3个通道值加上 CRC、符合预期。

b)如果我进行重复的多个寄存器"0、1、2"读取(即0xA002)、我得到:

按预期一次 ACK 0xE002加上三个请求的寄存器值加上 CRC、

下次 状态寄存器值加上3个通道值加上 CRC、因为我正在发送一个 NULL 命令、

然后 按预期将 ACK 0xE002加上三个请求的寄存器值加上 CRC、

接下来是 状态 寄存器值加上3个通道值加上 CRC、正如我发送的是 NULL 命令、

A 和 B 使用完全相同的代码和流程;前一事务结束后立即发送新命令;
通信使用 CS;
MODE = 0x2111;

每个事务的大小都是固定的、由 nr 5 x 24位组成。

我已经仔细阅读了手册,我没有指出情况(除了错误的命令)当预期 收到状态而不是响应。

您能帮助吗?
目前我正在"一次读取一个"寄存器、一切都有效、但效率不高。

谢谢、此致、

Andrea。

附录:此处是完整的 TX-RX 序列:

e2e.ti.com/.../SPI_5F00_DBG_5F00_.pdf

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

    尊敬的

    我明天会把它还给你的。

    Br、

    戴尔

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

    尊敬的  Andrea:

    我会与您核实您的步骤、请告诉我我的理解是否正确:

    帧1:  

    - DIN: 0xA002被发送到 ADC 读取3个寄存器

    帧2:  

    - DIN: 发送到 ADC 为空

    - DOUT: 0xE002加上请求的三个寄存器值加上 CRC 预期值

     帧3:

     - DIN: 空命令被发送到 ADC

    - DOUT: 状态寄存器值加上3通道值加上 CRC  

    帧4:   

    - DIN: 你给 ADC 发了什么?

    - DOUT: ACK 0xE002加上 请求的三个寄存器值加上 CRC 预期值

    帧5:

     - DIN:向 ADC 发送空命令

    - DOUT:  状态寄存器值加上3通道值加上 CRC

    您不希望看到哪个步骤或数据? 最好能共享使用逻辑分析仪捕获的时序图(/CS、SCLK、DIN 和 DOUT)。

    此致、

    戴尔

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

    尊敬的 Dale:

    我现在无法获取信号;我要试着像以前一样快速地实现它。

    不、我的序列(现在精简并重复到相同的3个寄存器、仅用于测试)如下所示:

    - IRQ DRDY

    -帧1:
    - DIN 0xA00200、0x000000、0x000000、0x000000、0x000000 (用于读取先前请求的状态和数据)
    - DOUT 0x010700、 0x0022E0、 0xFFFFBF、 0x3B1F57、0x"CRC" (正常状态和数据请求)

    -帧2:
    ——DIN 0xA00200、0x000000、0x000000、0x000000、0x000000 (用于读取前一个请求的 寄存器0、1、2和请求后一个寄存器3)
    -- DOUT 0xE00200、 0x230500、 0x010000、 0x211100、0x"CRC"(3个正确的请求寄存器值)

    -帧3:
    ——DIN 0xA00200、0x000000、0x000000、0x000000、0x000000 (用于读取前一个请求的 寄存器0、1、2和请求后一个寄存器3)
    - DOUT 0x010000、 0x0022E0、 0xFFFFBF、 0x3B1F57、 0x"CRC" (错误地获取状态和数据,而不是 3个错误请求的寄存器)

    -帧4:
    ——DIN 0xA00200、0x000000、0x000000、0x000000、0x000000 (用于读取前一个请求的 寄存器0、1、2和请求后一个寄存器3)
    -- DOUT 0xE00200、 0x230500、 0x010000、 0x211100、0x"CRC"(3个正确的请求寄存器值)

    -帧5:
    ——DIN 0xA00200、0x000000、0x000000、0x000000、0x000000 (用于读取前一个请求的 寄存器0、1、2和请求后一个寄存器3)
    - DOUT 0x010000、 0x0022E0、 0xFFFFBF、 0x3B1F57、 0x"CRC" (错误地获取状态和数据,而不是 3个错误请求的寄存器)

    ...
    ...

    如果我执行相同操作、但一次读取一个寄存器:

    -- DIN 0xA00000,0x000000,0x000000,0x000000,0x000000

    我每次请求都会获得寄存器值(后跟数据值)、不会报告任何状态、运行良好:

    - DOUT 0x230500、0x0022E0、 0xFFFFBF、 0x3B1F57、 0x"CRC"(正确的3个正确的请求寄存器值)

     

    是否知道读取多个寄存器的原因是什么?

    谢谢、此致、

    Andrea。

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

    尊敬的 Andrea Borghi:

    Dale 目前不在办公室、我们将在下周中旬他回来时回复您

    感谢您的耐心等待

    -Bryan

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

    大家好、Dale、我刚才在发布时添加了 pdf 文件中的完整序列。

    此致、

    Andrea。

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

    嗨、  Andrea、

    感谢您的耐心。

    根据 ADS131M0x 数据表、寄存器数据将在下一帧中从 ADC 移出、因此您不应在 每一帧中一直发送 RREG 命令。 下面是我刚刚在 ADS131M04EVM 上测试和捕获的时序、ADS131M04EVM 是同一 ADC 系列中的一个4通道 ADC。 从地址=01h 开始读取3个寄存器的命令(0xA082)在第一个帧内被发送到 ADC、然后在第二个帧内发出 NULL (无操作)命令。 从时序中可以看出、第二帧中接收到了正确的寄存器数据。 出于测试目的、该时序连续重复4次并且未观察到任何问题、第二个帧中接收到的三个寄存器的数据始终正确。 只要使用相同的时序、就应该能够从 ADC 获得正确的响应。

    此致、

    戴尔

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

    尊敬的 Dale:

    感谢你的评分

    这将确认我看到的内容:连续 RREG 不能被使用, ADS 将忽略第二个 RREG 并重放为 NULL 命令。

    这方面应明确写入数据表;它与新数据何时可用于移位寄存器无关、始终忽略第二个命令、 将提供带有通道数据的状态、即使没有新数据也是如此(状态为 DRDY0、1、2的状态为"0")。   

    再次感谢。

    此致、

    安德烈亚

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

    尊敬的  Andrea:

    由于 ADC 将在第二帧中移出寄存器的数据、因此如果您继续向 ADC 发送 RREG 命令、它会认为您的每个帧都是第一帧、 因此、 不带 RREG 命令的第二个帧有望使 ADC 移出数据。 我们将尝试在下一个数据表修订版中澄清这一点。

    谢谢、此致、

    戴尔

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

    谢谢、现在很清楚。

    此致、

    安德烈亚