工具/软件:
大家好、我使用配备 ADS8688 的 ADS8688EVMA。 我对运行连接到 TMDISDK5749 的 SPI 通信示例有疑问。
ADS8688 数据表解释如下。
•事件 3:在 SCLK 信号的第 16 个下降沿、器件读取 SDI 线路上输入字的 LSB。 对于剩余的数据帧、器件不会从 SDI 线路读取任何内容。 在同一边沿、转换数据的 MSB 在 SDO 线路上输出、并可由主机处理器在 SCLK 信号的随后下降沿读取。 对于 16 位输出数据、可以在第 32 个 SCLK 下降沿读取 LSB。 SDO 在后续 SCLK 下降沿输出 0、直到下一次转换启动。
我使用的 SPI 模式为 1、CPOL 设置为 0、CPHA 设置为 1。 这与数据表中列出的内容相符。
SPI 示例是使用 TMDSIDK5749 RTOS 的 pdk_am57xx_1_0_17 安装的、并执行了调优、例如将缓冲器修改为 32 位以匹配执行 ADC 的芯片的规范。
将数据从主器件发送到从器件没有问题。 SDI 值在时钟的上升沿发生变化、相应的 SDI 值在下降沿保持。
问题出在从器件向主器件 (SDO) 发送数据的过程中。 在 SPI 通信中、如果 CPOL 为 0 且 CPHA 为 1、则 SDO 值必须在上升沿更改、并在下降沿保持不变。 然而、根据 ADS8688 数据表、ADC 结果的 MSB 会在第 16 个下降沿输出到 SDO。 然后、主器件在第 17 个下降沿读取数据。
使用示波器进行验证后、确认 SDO 值实际上在第 16 个下降沿发生变化。
问题是:当第 17 个 (SCLK) 时钟出现下降沿且 SCLK 信号变为低电平时、从器件再次改变 SDO 的值、主器件如何读取在第 17 个时钟下降沿在第 16 个时钟下降沿发送的信号? 似乎没有足够的时间。