工具与软件:
在链模式下配置 ADS131A04数据转换器时遇到一个奇怪的问题、我觉得这值得分享。
我的配置:
两个 ADS131A04 ADC 共享同一条 SPI_CLK、MISO、MOSI、DRDY 线路。
第一个 ADS131A04配置为 M0设置为 IOVDD、异步中断模式。 M1和 M2接地。
第二个 ADS131A04配置为 M0悬空、同步从模式。 CS 连接到第一个 ADC 的 DONE 线路。 M1和 M2接地。
我有一个在16MHz 上运行的函数发生器、为两个器件提供通用时钟输入线路(引脚25)、用于测试。 该时钟信号始终亮起、并将在最终设计中使用。
所有寄存器的配置都正常工作。 我能够正确写入和读取每个寄存器。 我使用的是24位模式、因此我的 MCU 主站通过 SPI 发送6字节数据包。 发送前3个字节后、第一个 ADC 将 DONE 线路拉至低电平、以选择第二个 ADC。 这些都可以正常工作、正如数据表所述。 我将在没有任何 CRC 或汉明的动态帧模式下使用这些器件。
我写入 ADC_ENA 寄存器的那一刻、数据包的大小就发生变化。 通过反复试错、我发现必须为第一个 ADC 中启用的每个通道提供 NULL 字节。 如果我启用所有4个通道、这意味着在我发送启用第二个 ADC 的命令之前有12个 NULL 字节。 后续的唤醒和锁定命令也是如此。 从编程侧来看、一旦在第一个 ADC 上启用通道、传出写入寄存器命令就会不同。
这在数据表或附录中的任何地方都有描述吗? 这是一个非常不寻常的功能或操作方面、值得标注。
Rgds、
Gary