串行与SPI

时间:2013-03-21 14:48:04

标签: serial-port hardware spi

SPI和串口有什么区别?在阅读一篇关于处理器间通信的文章时,它指出串行接口正在被SPI取代以获得更好/更快的通信?究竟有什么区别?

4 个答案:

答案 0 :(得分:23)

“连续”这个词并不意味着什么。但我会假设你在谈论传统的串行通信标准。 SPI的根本不同之处在于它是同步。与RS-232相反,是异步信令标准。

异步信令的一个重要特性是波特率,即字节中的比特发送的频率。接收器必须做额外的工作来恢复发射器使用的时钟。典型的UART通过以16倍波特率的速率对信号进行二次采样来实现。起始位很重要,它使子采样时钟同步。字节之间的延迟可以是任意的,接收器为每个单独的字节重新同步。此方案的问题是发送器和接收器时钟频率与时钟抖动之间不匹配,从而有效地限制了波特率。

这不是SPI的问题,它有一条额外的信号线来承载时钟信号,因此发送器和接收器都使用完全相同的时钟。因此可以免受不匹配和抖动的影响,从而实现更高的传输速率。在时钟频率上根本没有稳定性要求,信号可以简单地在软件中生成。 SPI的另一个名称是SSI,同步串行接口。典型的四线布线如下所示:

enter image description here

SCLK是时钟信号。 MOSI和MISO承载数据,SS是芯片选择信号。假设有一个共同点。有关它的更多信息Wikipedia article。 electronics.stackexchange.com是一个很好的网站,可以提出更多相关问题。

答案 1 :(得分:1)

first answer几乎是正确的,带有一些小注释:

1)SPI是SSI的子类型(另一个示例是RS-422)
2)SPI通过CS / SS(片选,从机选择)引脚使用主/从概念...

因此,一个主机可以有多个从机,并可以使用SS引脚在它们之间进行选择。另外,在某些芯片上,使用SS可以将芯片从主芯片切换到从芯片。

答案 2 :(得分:0)

previous answer有点误导。

SPI和UART都将二进制数据作为字节和/或字传输,具体取决于硬件。如上所述,一个是同步的,一个是异步的。两者都需要额外的数据线是双向的。 ASCII是二进制数据的商定解释,实际上并不是两者中的一个因素。

答案 3 :(得分:-1)

SPI是一种双向数据协议。不同之处在于SPI使用二进制数据交换。 UART使用ASCII,使数据传输速度慢得多