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.

[参考译文] ADS8528:SPI 时钟方案

Guru**** 1129500 points
Other Parts Discussed in Thread: ADS8528, TMS320F28335, ADS8568
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1055095/ads8528-spi-clock-scheme

器件型号:ADS8528
主题中讨论的其他器件: TMS320F28335ADS8568

我对 ADS8528上的 SPI 时钟极性和相位感到困惑。

在数据表(SBAS543C、第33页)中、它说:

从最高有效位(MSB)开始、输出数据随着 SCLK 下降沿而改变。

串行数据输入 SDI 在 SCLK 下降沿锁存。

从 MCU 的角度来看:

- MCU 在上升沿输出数据,因为 ADS8528在下降沿锁存数据

-由于 ADS8528在下降沿输出数据,因此 MCU 在上升沿锁存数据

下面是 TMS320F28335支持的时钟方案(SPRUI07、第558页):

下降沿。 SPI 在下降沿发送数据、在 SPICLK 的上升沿接收数据。

具有延迟的下降沿。 SPI 在下降沿前半个周期发送数据、在 SPICLK 的下降沿接收数据。

无延迟的上升沿。 SPI 在上升沿发送数据、在 SPICLK 的下降沿接收数据。

具有延迟的上升沿。 SPI 在上升沿前半个周期发送数据、在 SPICLK 的上升沿接收数据。

这是否意味着我必须在写入配置后更改主器件(MCU)的时钟方案? 更具体地说:

-要将配置写入 ADS8528、我将使用下降沿和延迟

-要从 ADS8528读取配置和数据,我将立即使用下降沿

数据表中没有提到这一点、但从图中我假设串行时钟应该在高电平空闲。 这就是为什么我只提到"下降沿"时钟方案的原因。  如果我错了、请纠正我的问题。

这是我第一次需要更改读取和写入操作的时钟方案。  请确认此结论吗?

如果我对此回答正确、那么在 ADS8528上实施此计时方案的原因是什么? 为什么不对读取和写入操作使用单个时钟方案?


让我先从某种角度了解一下我是如何实现这一点的。

我首先将时钟方案配置为适用于"写入配置"。 我使用相同的时钟方案读回配置、直到我在代码中进行了一些与 SPI 无关的微小更改。

我说它不起作用的意思是、我读回的配置不符合预期。 整个配置似乎被位移向左边2。 再说一次、只有当我在代码中进行了一些与 SPI 无关的微小更改时、这个问题才会出现。

然后、我再次阅读 ADS8528的数据表、并认为读取和写入操作的时钟方案是不同的。 我 实施了这种新逻辑 、似乎可行、但我仍想得到确认。

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

    Marko、您好!

    该器件使用 CPOL =1、CPHA =1通信协议。 下图提供了可用模式的可视化表示。  

    这意味着 ADC 在下降沿启动或更改 SDI。 ADC 还在下降沿捕获或读取 SDI 上的数据。  您注意到、SCLK 的空闲时间较长。   

    如果您对 MCU 进行编程、使  其与 CPOL =1和 CPHA =1匹配、则应该更容易对器件进行读取和写入。  

    此致

    Cynthia

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

    您好、Cynthia、

    请注意、我并不是很难理解不同的 SPI 时钟方案是如何工作的。 我想说的是、至少根据数据表、单个时钟方案不适合这两种情况。

    在图片中、您显示了两条数据线(MISO 和 MOSI) 在一条边沿上发生更改、并在另一条边沿上锁存。 ADS8528显然可以在同一个边沿(下降)输出和锁存数据、这是我以前从未见过的。

    CPOL=1和 CPHA=1对应于原始 POST 中的"有延迟的下降沿"。 以下是两条数据线相对于时钟边沿发生的情况:

    - MCU-SIMO --> ADC-SDI 在上升沿发生变化,ADC 在下降沿锁存数据。 正如我已经解释过的那样、这一点很清楚。

    - MCU-SOMI <-- ADC-SDO 在上升沿发生变化,而 MCU 在下降沿锁存数据。 这与 ADS8528数据表以及您在帖子中所写的内容不一致:

    从最高有效位(MSB)开始、输出数据随着 SCLK 下降沿而改变。 [数据表]

    这意味着 ADC 在下降沿启动或更改 SDI。 [您的帖子。 您可能是指 SDO、而不是 SDI?]

     如果 CPOL=1和 CPHA=0、这对应于原始帖子中的"无延迟下降沿"、情况如下:

    MCU-SOMI <-- ADC-SDO 在 下降沿发生变化,而 MCU 在上升沿锁存数据。  这与上面的两个引号一致-[数据表][您的帖子]

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

    Marko、您好!  

    我在上一篇文章中犯了一个错误、请参阅下面的更正、对误解表示歉意。  

    "该器件使用 CPOL =1、CPHA =0通信协议。 下图提供了可用模式的可视化表示。  

    这意味着 ADC 在下降沿启动或更改 SDI。 ADC 还在下降沿捕获或读取 SDI 上的数据。  您注意到、SCLK 的空闲时间较长。   

    如果您对 MCU 进行编程以匹配此值、  CPOL =1、CPHA =0、则应该更容易对器件进行读写操作。 "

    您的理解似乎是正确的!

    此致

    Cynthia  

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

    您好、Cynthia、

    感谢你的答复。

    在我之前的帖子中、我详细解释  了为什么 CPOL=1 CPHA=1 或  CPOL=1 CPHA=0 与 ADS8528数据表中描述的内容以及您在第一个(和第二个)回复中所写内容不相符:

    在图片中、您显示了两条数据线(MISO 和 MOSI) 在一条边沿上发生更改、并在另一条边沿上锁存。 ADS8528显然可以在同一个边沿(下降)输出和锁存数据、这是我以前从未见过的。

     CPOL=1和 CPHA=1 对应于原始 POST 中的"有延迟的下降沿"。 以下是两条数据线相对于时钟边沿发生的情况:

    -  MCU-SIMO --> ADC-SDI  在上升沿发生变化,ADC 在下降沿锁存数据。 正如我已经解释过的那样、这一点很清楚。

    -  MCU-SOMI <-- ADC-SDO  在上升沿发生变化,而 MCU 在下降沿锁存数据。 这与 ADS8528数据表以及您在帖子中所写的内容不一致:

       从最高有效位(MSB)开始、 输出数据随着 SCLK 下降沿而改变。  [数据表]

       这意味 着 ADC 在下降沿启动或更改 SDI。 [您的帖子。 您可能是指 SDO、而不是 SDI?]

     如果 CPOL=1和 CPHA=0、这对应于原始帖子中的"无延迟下降沿"、情况如下:

    MCU-SOMI <-- ADC-SDO 在 下降沿发生变化,而 MCU 在上升沿锁存数据。  这与上面的两个引号一致- [数据表] 和 [您的帖子]

    我将再次强调最重要的部分:

    ADS8528显然同时在同一个边沿上输出和锁存数据(下降)。 SPI 从器件通常在一个边沿上输出数据、在另一个边沿上锁存数据、但 ADS8528在同一个边沿上都运行。

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

    Marko、  

    我同意数据表中的时序原理图不会直接对齐边线、但时序规格增加了更多详细信息。  

    请参阅  ADS8568数据表图1中的串行时序、SCLK 电平对于空闲状态为"1"、因此时钟极性 CPOL=1、
    ADC 将在第一个边沿 SCLK 的下降沿锁存或读取数据、因此时钟相位 CPHA = 0、

    请注意、设置和保持时间都以 SCLK 下降沿为基准。   

    此外、 器 件的16位版本 ADS8568EVM 的用户指南中、它指出必须使用 CPOL =1、CPHA =0来与此系列器件通信。   

    您是否尝试过这些通信方法、但它无法正常工作?  

    此致

    Cynthia