SPI:TI 还是摩托罗拉模式?

电器工程 嵌入式 手臂 spi 闪光
2022-01-30 10:58:18

我正在编写一个 Cortex M3 裸机来与 SPI Flash 通信。SPI 控制寄存器的配置位之一是FRF(帧格式)。它可以设置为 SPI Motorola 模式 (0) 或 SPI TI 模式 (1)。(请参阅此处的 ARM 参考手册第 695 页。)

SPI Flash 的数据表(可在此处获得)没有说明我应该使用哪种模式。

这两种不同的模式是什么,我应该使用哪种模式来用于我正在使用的特定闪存芯片?

2个回答

简要浏览一下 ARM 数据表就会发现,TI 模式和摩托罗拉模式之间的主要区别在于它们对称为 SSPFSSOUT 的输出信号的处理,而许多设备根本不需要这种信号。该信号应该在字节之间产生高电平脉冲,以指示每个字节的哪一位应被视为第一个。在 TI 模式下,它在字节的最后一位传输期间变为高电平,而在摩托罗拉模式下,它在字节之间变为高电平然后变为低电平。闪存芯片需要一个在整个事务期间保持低电平的芯片选择信号,因此在字节之间变为高电平的输出对它没有用处。

我希望即使不使用 SSPFSSOUT,摩托罗拉模式也会使数据更容易在示波器上读取(因为每个字节后都会有暂停)但 TI 模式可能会更快(因为它不会浪费任何时间暂停字节之间)。然而,重要的是确保控制器生成的信号序列满足外设数据表中给出的要求。

Motorola 和 TI 模式是指时钟极性 (CPOL) 和时钟相位 (CPHA) 的不同配置。时钟极性决定了高信号还是低信号标志着时钟,相位告诉设备何时对数据线进行采样。

根据您的 ARM 数据表,您可以为 SPI 控制器设置 CPOL 和 CPHA。

您的闪存芯片(见第 3 章)支持 {CPOL=0, CPHA=0} 或 {CPOL=1, CPHA=1}。

如需更多信息,请访问 http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus#Clock_polarity_and_phase