串行与 SPI
Posted
技术标签:
【中文标题】串行与 SPI【英文标题】:Serial versus SPI 【发布时间】:2013-03-11 03:39:27 【问题描述】:SPI和串行有什么区别?在阅读有关处理器间通信的文章时,它指出串行接口正在被 SPI 取代以获得更好/更快的通信?到底有什么区别?
【问题讨论】:
【参考方案1】:“连续”这个词没有多大意义。但我假设您在谈论传统的串行通信标准。 SPI 的根本不同在于它是同步的。与 RS-232 相对,一种异步信号标准。
异步信令的一个重要属性是波特率,即发送字节中位的频率。接收器必须做额外的工作来恢复发送器使用的时钟。典型的 UART 通过以 16 倍波特率的速率对信号进行过采样来实现这一点。起始位很重要,它同步过采样时钟。字节之间的延迟可以是任意的,接收器为每个单独的字节重新同步。该方案的问题是发射器和接收器时钟频率和时钟抖动之间的不匹配,有效地限制了波特率。
这不是 SPI 的问题,它有一条额外的信号线来传输时钟信号,因此发送器和接收器都使用完全相同的时钟。因此不受失配和抖动的影响,允许更高的传输速率。时钟频率完全没有稳定性要求,信号可以简单地在软件中生成。典型的四线接线如下所示:
SCLK 是时钟信号。 MOSI和MISO携带数据,SS是片选信号。假设有共同点。在Wikipedia article 中了解更多信息。 electronics.stackexchange.com 是一个很好的网站,可以询问有关它的更多问题。
【讨论】:
真的很好的解释,虽然它应该是“过度采样”吗?我认为二次抽样低于利率。【参考方案2】:SPI 是一种双向数据协议。不同之处在于 SPI 使用二进制数据交换。而UART使用ASCII,数据传输速度要慢得多
【讨论】:
【参考方案3】:previous answer 有点误导。
SPI 和 UART 都以字节和/或字的形式传输二进制数据,具体取决于硬件。如上所述,一种是同步的,一种是异步的。两者都需要额外的数据线来实现双向。 ASCII 是对二进制数据的一致解释,实际上也不是其中的一个因素。
【讨论】:
【参考方案4】:first answer 对于一些小 cmets 几乎是正确的:
1) SPI 是 SSI 的一个子类型(另一个例子是 RS-422) 2)SPI使用主/从概念与CS/SS(芯片选择,从选择)引脚...
因此,一个主机可以有多个从机,并使用 SS 引脚在它们之间进行选择。此外,在某些芯片上,使用 SS 可以将芯片从主机切换到从机。
【讨论】:
以上是关于串行与 SPI的主要内容,如果未能解决你的问题,请参考以下文章