为什么在SPI通信中提供不同的模式?



我正在互联网上阅读各种文档,并找到一些关于SPI协议如何工作的数据和通信机制。 但是我找不到在SPI通信中分离模式背后的逻辑意味着为什么SPI通信中提供了四种模式?

四种模式由"时钟极性(CPOL)"和"时钟相位(CPHA)"的四种组合组成。

Mode 0 -> CPOL = 0, CPHA = 0
Mode 1 -> CPOL = 0, CPHA = 1
MODE 2 -> CPOL = 1, CPHA = 0
MODE 3 -> CPOL = 1, CPHA = 1

模式 0 - 由于时钟极性为 0,这意味着当没有数据传输时,时钟将被下拉到 0。所以闲置很低。 由于时钟相位为0,数据将在时钟周期的前缘进行采样。

模式 1 - 由于时钟极性为 0,这意味着当没有数据传输时,时钟将被下拉到 0。所以闲置很低。 由于时钟相位为1,数据将在时钟周期的后沿采样。

模式 2 - 由于时钟极性为 1,这意味着当没有数据传输时,时钟将被上拉到 1。所以空闲是高。 由于时钟相位为0,数据将在时钟的前缘采样。

模式 3 - 由于时钟极性为 1,这意味着当没有数据传输时,时钟将被上拉到 1。所以空闲是高。 由于时钟相位为1,数据将在时钟周期的后沿采样。

请点击链接了解时钟图。

另请记住,并非所有SPI器件都支持所有模式。因此,您需要查看器件数据表以了解模式,在与该器件通信时,您需要首先通过编程相关主机寄存器来设置正确的模式,然后开始通信。

根据 https://www.corelis.com/education/tutorials/spi-tutorial/:

时钟极性(CPOL)和时钟相位(CPHA)可以指定为"0"或"1",以形成四种独特的模式,为主站和从机之间的通信提供灵活性,如图2所示。

现在提供灵活性对我来说并不完全清楚。 我无条件的猜测是,某些设备能够/设计为比其他设备响应更快。 因此有不同的模式。 http://dlnware.com/theory/SPI-Transfer-Modes 的描述强化了(对我来说)这一结论。

只是我的一个无条件的假设。

SPI通信有4种不同的模式,因为它只是一个事实上的标准。它是由摩托罗拉在87'开发的。(先去飞思卡尔,然后去恩智浦)但摩托罗拉在他们的设计建议中没有定义固定的ClockPolarity和ClockPhase。 用户可以自由选择它们。因此,使用SPI的工程师可以自行选择时钟是高电平有效还是低电平,以及移位寄存器是否对下降沿或上升沿做出反应。使用 2 个变量和 2 个选项,这将生成 4 种不同的可能模式。

但是,大多数设备使用模式 0。

总之,因为摩托罗拉确实在开发过程中保持开放,并且从未引入强加它的标准。

在这里,您可以阅读1987年的原始应用说明: http://www.bitsavers.org/components/motorola/_appNotes/AN-0991_Using_the_Serial_Peripheral_Interface_to_Communicate_between_Multiple_Microcomputers.pdf

最新更新