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.

[参考译文] ADS127L01:采用菊花链配置的 SPI 寄存器访问

Guru**** 2964790 points

Other Parts Discussed in Thread: ADS127L01

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/902758/ads127l01-spi-register-access-in-daisy-chain-configuration

器件型号:ADS127L01

您好!

我‘m 在 SPI 受控模式下使用和 ADS127L01。 一切都按预期工作。 现在、一个新项目需要跨隔离栅以菊花链模式连接多个器件。 此外,硬件配置引脚(OSR、FLT)也应在此应用中进行配置。 由于这些设置在 CONFIG 寄存器中是只读的、并且通过隔离栅的引脚数量非常有限、因此我们的想法是使用与 ADS127L01并联的外部移位寄存器设置 MODE 引脚。

数据表的表19列出了六个有效的 SPI 命令。 如果在运行期间有任何其他命令列表计时进入器件、会发生什么情况? 我没有n‘t 任何建议、在读取 ADC 样本期间允许哪些数据时钟进入器件。 (0x00、0xff… 还是与有效 SPI 命令不同?)

计划是使用一些保留代码、这些代码不会被芯片解码、从而通过隔离栅传输硬件设置、而无需隔离额外的信号…

以下是我的问题:

1.是否可以在每个未定义的命令进入器件时安全计时?

或者是否有任何位序列可安全使用? 每个命令的 MSB 似乎都为零??

3.对于如何在菊花链模式下对不同器件中的各个校准值进行编程、是否有任何建议? (不使用不同的芯片选择…。)

此致

Klaus Schober

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

    Klaus、您好!

    欢迎访问 TI E2E 社区!

    我 建议在向外部移位寄存器发送数据时、先填充8个零、然后填充您需要发送的任何数据。  这是从器件获取转换数据的默认命令。

    2. 使用0x00h、因为命令在/CS 变为低电平后、在前7个或8个 MSB 上被处理。

    使用 菊花链时、只能向每个 ADC 写入相同的命令或值;不支持 MOSI 线路、只支持 MISO 线路。  如果您需要为每个 ADC 写入不同的值、即增益和偏移值、则需要采用某种方法来单独控制每个 CS 线路。

    此致、

    Keith Nicholas
    精密 ADC 应用

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

    您好、Keith、

    非常感谢您的快速响应。 我希望以下解决方案能够正常工作:许多 ADC 采用菊花链配置(每个 ADC 通过隔离栅进行隔离)。 一个带有输出锁存器的简单8位移位寄存器被并行连接至每个 ADC 的 DIN 和 SCK。 因此、每次传输的最后8位可以很容易地被 CS 的上升沿锁存。 由于只需要6位,因此在每次传输结束时都可以向移位寄存器发送配置字节“11xxxxxx”,而不会影响 ADC。 一些额外的逻辑可能会为每个 ADC 生成单独的 CS、移位寄存器组合(用于对各个校准值进行编程)或为所有器件生成通用 CS (在菊花链模式下读出)。 为了确保此解决方案有效、我还有一些问题。

    1) 在每次传输结束时发送代码11xxxxxx (位7和位6设置为1)(位5到0变量)是否安全。 是否有任何其他未记录的命令被芯片解码?

    2) 2) start/stop 0000100x/0000101x 命令是否可以由保留代码11xxxxxx 扩展? (移位寄存器的输入值) 而不影响 ADC 的行为?

    3) 3)您说的命令仅在/CS 下降沿之后的第7位或第8位解码。 数据表显示、如果仅连接一个器件、/CS 可连接到 GND。 如果/CS 保持低电平、芯片在哪些情况下接受额外的命令?

    4) 4)我是否需要在读取新样本之前向 ADC 发送 RDATA 命令字节、或者在移出新 ADC 结果时输入任何保留命令是否足够、即使在两个周期之间禁用了/CS?

    4) 4)是否可以通过 RREG 命令“0010 rrr”读取菊花链模式下所有器件的配置寄存器? 如果该命令并行提供给所有器件、则每个芯片应将寻址寄存器时钟输出到其 DOUT 和下一个器件的 DAISY_IN。 它们是否在整个器件链中移位(通过应用额外的时钟周期...) 可以在最后一个 DOUT 看到什么?

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

    Klaus、您好!

    我需要更正我之前的回答。  ADC 内的命令处理器将继续每7到8个时钟将数据解释为命令、因此我的初始建议将不起作用。

    我们尚未针对多个无效命令输入测试或验证器件的运行情况、因此不建议发送多个随机值。  但是、一种有效的方法是使用 RREG 命令。  在 RREG 命令的第16个 SCLK 之后、器件将忽略 DIN 引脚上的任何其他数据。  因此、您可以发送 RREG 命令来读取无效寄存器、然后为与 SPI 总线并行连接的外部移位寄存器计时数据。

    例如、您可以发送以下位序列:

    0x00101000 00000000 xxxxxxxx

    从寄存器8 (无效寄存器)读取、寄存器1的数量、xxxxxxxx 是用于外部移位寄存器的8位。  由于这是对无效寄存器的读取命令、DOUT 将读取0。

    关于问题4、ADS127L01仅支持在菊花链模式下读取转换结果。  您可以读回菊花链中第一个器件的寄存器内容、但无法从其他器件读取结果。  请参阅此相关文章、该文章对此进行了更详细的介绍。

    https://e2e.ti.com/support/data-converters/f/73/p/528991/1924460

    此致、
    Keith