我写这封信是为了征求您的专业知识 、以解决客户 同时在 AM6422 上从两个 ADC 读取数据时遇到的一个具有挑战性的问题。 请参阅以下 电子邮件:
我们已经实现了一种解决方案、使用两个 SPI 外设 (MCSPI0 和 MCSPI1) 与两个 ADS7038Q ADC 并联进行通信、但事实证明、该实现并不可靠。
我们当前的方法
-
MCSPI0 配置为时钟主器件、从而为两个器件生成 SPI 时钟。
-
MCSPI1 设置为“仅数据“、旨在使用来自 MCSPI0 的时钟。
-
单个 GPIO 引脚 用作两个 ADC 的共享芯片选择 (CS)。

-
将共享 GPIO CS 引脚拉至低电平。
-
然后发起这两个
MCSPI_transfer呼叫。 为了管理时序、我们使用 SysConfig 工具中的 Init 延迟参数、特别是在开始从外设 (MCSPI1) 传输时(在主器件 (MCSPI0) 开始生成时钟之前)。 -
我们等待使用信标完成两次传输。
-
最后、我们将共享 GPIO CS 引脚拉至高电平。
Init delay、我们也无法克服从软件启动两个外设操作的固有计时抖动。 轻微的不可预测延迟足以导致数据不一致和不可靠。 会上提出了一种替代解决方案、该解决方案涉及使用 PRU 直接对 SPI 协议进行“位移“。 该方法将提供解决我们的同步问题所需的确定性、周期精确的时序。
例如、我们能否使用内部事件触发器或另一个外设功能来确保两个 MCSPI 模块以完美的锁步启动?









