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.

[参考译文] ADS1299:读取菊花链器件中的寄存器

Guru**** 2577385 points
Other Parts Discussed in Thread: ADS1299

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/946885/ads1299-reading-registers-in-daisy-chained-devices

器件型号:ADS1299

您好!

我正在以菊花链模式使用8个 ADS1299、当我尝试读取寄存器时、我会发现一个奇怪的行为。 当我发送命令0x20 0x00来只读第一个寄存器时、我读取了第一个 ADS 的预期值。 然后、在第216个 SCLK 边沿之后、我按照预期接收到第二个 ADS 的寄存器值、依此类推。 当我尝试读取多个寄存器时、会出现问题。 例如、如果我发送命令0x20 0x02来读取前三个寄存器、我将接收器件1的寄存器0x00、0x01和0x02的值、 但是、在216个 SCLK 边沿之后、我接收到两个0x00字节、之后是器件2中寄存器0x02的值。 其他器件也是如此。 继续操作、当我尝试读取多个寄存器时、我接收器件1中的所有寄存器值、但对于其他器件、我接收所有寄存器0x00、除了我要读取的最后一个寄存器。 这是使用菊花链器件时该命令的预期行为吗?

此致、

Mateus

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

    您好、Mateus、

    使用菊花链模式时、多读回功能不可用。  CONFIG1寄存器中的/DAISY_EN 位必须设置为"1"才能进行多次回读。

    有关菊花链模式的更多详细信息、请参阅数据表中的第10.1.4.2节。

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

    Praveen、您好、感谢您的回答!

    我不想执行多次回读、我正在尝试从发送 RREG 命令的所有器件读取多个寄存器。 我从数据表中了解到、当器件以菊花链方式连接并执行读取命令(RDATA 或 RREG)时、我会在前27个字节中接收第一个器件的值、在后27个字节中接收器件2的值、等等。 我使用 RDATA 命令进行了测试、它按预期工作。 当我发送 RREG 命令仅读取一个寄存器时、它也能正常工作。 例如、如果我发送0x20 0x00、那么我读取的第一个字节是来自 DEV 1的0x00寄存器的值、之后我接收到26个0x00字节、而28个字节是来自 DEV 2的寄存器0x00的值、 之后、我接收到26个0x00字节、来自 DEV 3的寄存器0x00的值、26个0x00字节等。

    但是、如果我发送0x20 0x05、例如、我从 DEV 1接收前5个寄存器的值、之后我接收到22 0x00字节、之后我希望从 DEV 2接收前5个寄存器、 但我从 DEV 2接收四个0x00字节、仅接收寄存器0x05的值。 后续器件也是如此。 我认为我应该从所有器件接收前5个寄存 器、而不是从 DEV 1接收前5个寄存器、而只从其他器件接收第五个寄存器。

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

    您好、Mateus、

    对于示例 RREG 命令(0x20 0x03)、您能否在32个 SCLK 期间从第二个或第三个器件探测 DOUT、您在32个 SCLK 期间从器件1读取前4个寄存器?  

    我将与团队核实此模式的详细信息。

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

    您好 Praveen、

    发送0x20 0x03命令后、我探测了器件1和2的 DOUT。 在下图中、器件1的 DOUT 为通道2 (MISO)、器件2的 DOUT 为通道3 (菊花链式)

    您可以看到、第二个器件正在将值正确发送到器件1中的 DAISY_IN。 但是、如果我提前时间、只有器件2的0x03寄存器从器件1中读取。

    谢谢、

    Mateus

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

    您好、Mateus、

    我与设计团队进行了核对、他们确认了您的观察结果。

    器件寄存器读回(RREG)仅对菊花链中的器件1有效。 菊花链中其他器件的寄存器数据无效。

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

    Praveen、您好、非常感谢您的澄清。 很高兴知道我的电路按预期工作!

    作为补充、根据我的经验、可以从菊花链中的其他器件读取寄存器、但一次只读取一个地址。 例如,要读取地址为0b000rrrr 的寄存器,您需要发送0b001rrrr 0b00000000,然后读取27*n 个字节(n 是设备数量)。 来自器件 N (N=0、..、n-1)的寄存器0b000rrr 的值是接收到的(1+N*27)第字节。

    此致、

    Mateus