关于SPi协议的三线和四线区分一直都比较疑惑.
Three-wire serial buses
When someone says a part supports SPI or Microwire, you can normally assume that means the four-wire version.
还有一网友翻译的文章.
原文链接: http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
bluenochange 翻译
串行设备接口总线或SPI总线是由摩托罗拉公司(现在叫做飞思卡尔Freescale)命名的一种工作与全双工模式的同步数据通信标准。设备在主机或从机模式下通信,主机设备初始化数据帧。多个从机设备允许有各自独立的从机选择线(片选线)。有时区别于3线、2线和1线串口总线,SPI也被叫做4线串口总线。
SPI总线也是一种事实标准,它没有被任何的国际委员会承认。
但是,这种缺乏标准化的特点在协议选项的多样化中表现出来。不同的字长是很常见的。每个器件定义了它们自己的协议,包括它们是否支持命令。一些器件只能发送,另一些只能接受。片选有时是高有效而不是低有效。一些协议是先发送最低有效位的。
一些器件甚至在CPOL/CPHA模式上与上面介绍的有微小的差异。数据从主机发给从机可能会使用与从机发给主机相反的时钟沿。设备通常在第一个时钟之前和最后一个时钟之后需要额外的空闲时钟时间,或者在一个命令和它的响应之间也需要。一些设备有两个时钟,一个用于“捕获”或者“显示”数据,另一个则用于提供将数据输入器件的时序。很多的“捕获时钟”脱离片选线运行。
一些器件需要一个附加的从从机到主机的流量控制信号来指出什么时候数据就绪。这使得总线变成5线而不是4线。这种“就绪”或者“使能”信号通常是低电平有效的,并且需要在一个命令后或者字之间的关键时间点上使能。如果没有这种信号,数据传输率可能会明显的降低,或者在协议上需要插入“伪字节”来调节到从机响应时间的最坏情况。(很多SPI主机不直接的支持这个信号,它们将依赖一个固定的延时。)
Many SPI chips only support messages that are multiples of 8 bits. Such chips can not interoperate with the JTAG or SGPIO protocols, or any other protocol that requires messages that are not multiples of 8 bits.
很多SPI芯片只支持8比特的整数倍的消息。这种芯片没法和JTAG、SGPIO协议或者其它需要支持非8比特的整数倍的消息的协议进行交互。
甚至还有硬件级的不同。一些芯片把MOSI和MISO合成了一根数据线(SI/SO);这种接口叫做3线信号接口(与普通的4线SPI相比)。另一种SPI省略了片选线,用其他的方式来管理协议状态机的入口和退出; 但是这种方式通常并不叫做3线串口。任何需要用SPI外围接口的人都自己做了定义。信号电平也全部依赖与其所在的芯片。
有此可见.三线与四线的区别在于DATA线. mosi 和miso 合并为一根data线 就是标准的三线.
省略cs 的虽然也是三根线. 但是不是表完全意义上是三线.
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215621.html原文链接:https://javaforall.net
