13

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

4

4 回答 4

26

“连续”这个词意义不大。但我假设您在谈论传统的串行通信标准。SPI 的根本不同在于它是同步的。与 RS-232(一种异步信号标准)相反。

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

这不是 SPI 的问题,它有一条额外的信号线来传输时钟信号,因此发送器和接收器都使用完全相同的时钟。因此不受失配和抖动的影响,允许更高的传输速率。时钟频率完全没有稳定性要求,信号可以简单地在软件中生成。典型的四线接线如下所示:

在此处输入图像描述

SCLK 是时钟信号。MOSI和MISO携带数据,SS是片选信号。假设有共同点。更多关于它的信息,请参阅这篇 Wikipedia 文章。electronics.stackexchange.com 是一个很好的网站,可以询问有关它的更多问题。

于 2013-03-21T15:49:29.357 回答
2

前面的答案有些误导。

SPI 和 UART 都以字节和/或字的形式传输二进制数据,具体取决于硬件。如上所述,一种是同步的,一种是异步的。两者都需要额外的数据线来实现双向。ASCII 是对二进制数据的一致解释,实际上也不是其中的一个因素。

于 2017-03-31T00:12:38.247 回答
1

一个答案几乎是正确的,有一些小评论:

1) SPI 是 SSI 的一个子类型 (另一个例子是 RS-422)
2) SPI 使用主/从概念与 CS/SS (chips select, slave select) pin ...

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

于 2020-01-10T13:21:18.343 回答
-3

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

于 2015-01-20T00:16:48.643 回答