SPI:TI还是Motorola模式?


8

我正在对Cortex M3裸机进行编程以与SPI Flash通讯。SPI控制寄存器的配置位之一是FRF(帧格式)。可以将其设置为SPI Motorola模式(0)或SPI TI模式(1)。(参见ARM的参考手册,第695页在这里。)

SPI闪存的数据表(在此处提供)未提供有关我应使用哪种模式的指示。

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

Answers:


1

摩托罗拉和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


啊哈,谢谢!那是哪一个呢?是{CPOL=0, CPHA=0}Motorola还是TI?
Randomblue 2012年

我不记得了,或者找不到权威的消息来源。
Toby Jaffey 2012年

1
每当我确定@Randomblue都包含一个作用域时,我发现测量起来比查找起来容易得多。
Kortuk 2012年

1
@Kortuk:“示波器”是指“示波器”,对吗?这听起来很令人兴奋,但是我以前从未做过这样的事情。您能否指向某种教程来说明如何执行此操作?
Randomblue 2012年

7
抱歉,这个答案是错误的。TI模式与极性无关。更多详细信息请点击这里:infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0194g/...

4

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.