SPI 与 UART:您应该使用哪种协议?

介绍

SPI 和 UART 用于从简单的微控制器到复杂的一切 产业 设备。 如果您要连接两台设备,则需要选择其中之一。

我们将在本文中比较 SPI 和 UART,以帮助您确定哪种协议适合您的项目。

SPI

SPI

什么是 SPI(串行外设接口)?

它代表串行外设接口。 这是一种允许两个设备相互通信的通信协议。

通常用于微控制器和存储芯片之间的通信。 它也常用于连接外围设备,例如 传感器 或显示。

由于 SPI 是一种串行协议,它只使用一根线(或线)来传输数据。 这意味着通过线路发送的数据一次仅发送一位。 在大多数情况下,这种串行传输发生得非常快。

它还具有足够的通用性,可以用于各种不同的应用程序——例如,您可以使用 SPI 将闪存驱动器连接到您的 一台 或者也许连接一个 LCD 显示到您的 Arduino 开发板。

SPI 线

SPI 线

SPI 线

该协议允许两个设备相互发送信息。 SPI 协议由四根线组成:

味噌

MISO 代表主进从出。 这是一种在两个 SPI 设备之间进行通信的方式。

MISO 线是双向信号线。 在同步通信系统中提供主从设备之间的数据交换。 该线用于将数据从主设备传输到从设备,并允许主设备从从设备接收数据。

不锈钢/不锈钢

这控制当前是否选择正在与之通信的设备。 SS/CS 线是这些共享线之一。 它可用于选择要与总线上的哪个设备进行通信。

SS 引脚通常被拉高,而 CS 引脚被拉低。 对于 SPI,这些信号是漏极开路的。 它们必须用电阻上拉才能将它们拉低。 例如,如果您想在 4 位总线上使用一个 8 位片选,您可以将所有 4 个片选组合成一个 8 位片选,方法是将它们连接在一起并用一个拉低它们单个上拉电阻。

SCK

串行时钟线,也称为移位时钟,用于同步微控制器和 SPI 设备之间的数据传输。 它是一个连续的时钟信号,决定了数据移入和移出设备的速度。

该时钟信号用于同步 SPI 总线中的所有其他信号。 它通常连接到主设备上的专用引脚。 这 频率 此时钟信号的频率必须大于或等于 1 MHz。

摩西

MOSI 信号让计算机中的微控制器知道它应该向 SPI 外设发送数据。 然后这将读取它并将其发送到它自己的外围设备。

在数据传输领域,串行接口意味着一次按顺序传输一位信息。 它从主设备传输和获取数据并将其发送到从设备。

UART

UART

什么是 UART(通用异步收发器)?

在两个设备之间发送数据的标准方式。 它用于许多不同类型的电子设备,从消费设备到工业设备。

之所以称为“通用”,是因为它可以用于与许多不同类型的设备和协议进行通信,之所以称为“异步”,是因为它不需要发送方和接收方彼此同步——也就是说,它不需要不需要他们定期发送数据位。

UART 从计算机或其他设备获取输入,然后使用相同的协议将其发送到另一个设备。 这意味着如果您有一台带有串行端口的计算机,则可以使用此端口将其连接到另一台计算机或设备,并通过电线在它们之间发送数据或 无线 只要两个设备支持相同的协议。

SPI 和 UART 相似之处

两者都用于微控制器和外围设备之间的通信。 这两种协议都基于相同的原则:

串行通讯

串行通讯

双工串行通讯

这些协议都使用双工串行通信。 这意味着它们可以同时发送和接收数据,这使得它们非常适合需要能够在同时做其他事情的同时相互交谈的设备——比如笔记本电脑与其打印机交谈。

这允许 SPI 和 UART 协议以比其他串行接口更高的速度运行,因为它们不必在发送另一个信号之前等待响应。

近距离通信

SPI和UART都用于短距离通信。 这意味着它们在几英尺内传输数据,而不是像以太网那样长距离传输数据。 它们都用于微控制器,微控制器是执行控制电机或传感器等任务的微型计算机。

数据处理

SPI 和 UART 都有类似的数据处理概念。 两者都是使用串行通信接口发送和接收数据的接收器-发送器设备。 在 SPI 中,接收器连接到微处理器,而在 UART 中,它连接到外围设备。 微处理器可以通过 SPI 总线或 UART 线高速发送字节数据。

SPI 和 UART 的区别

它们在使数据能够在设备之间发送的方式上相似,但它们之间存在一些关键差异。

速度

SPI 使用四根数据线高速传输数据,而 UART 仅使用两根,这就是为什么与 UART 协议相比,SPI 协议可以更快地向设备传输数据和从设备传输数据。

数据率

SPI 以高达 100 MHz 的高速发送和接收数据,而 UART 以高达 20 KBps 的低得多的速度发送和接收数据。 这意味着 UART 可用于发送文本消息等低速应用,而 SPI 更适合用于控制电机或其他硬件设备等高速应用。

有线接口

有线接口

有线接口

SPI 是一种以全双工模式运行的主/从通信协议。 主机向从机提供信息,从机对其进行处理并返回响应。 使用 SPI,可以在同一总线上连接多个从设备,从而允许它们同时相互通信。

UART 是一种简化的串行协议,只需要一对线来发送和接收数据。 可以使用 UART 将多个设备连接到同一条总线上,但它们无法像使用 SPI 那样同时通信。

数据传输

通常用于两个设备之间的高速数据传输,例如微控制器和另一个芯片或外围设备。 微控制器充当主设备,控制自身与从设备之间的数据流。 SPI 可以一次传输多个位,这使得它比 UART 更高效,但它在连接两端需要更复杂的硬件。

UART 不利于高速传输,因为每个位必须单独发送; 无法一次发送多个位。

SPI优势

与其他接口类型相比,SPI 具有多种优势。 这比需要一次一个数据传输的串行通信快得多。 其他优势包括:

低信号/引脚数

SPI 提供低信号/引脚数,这意味着与使用其他类型的接口相比,您可以使用更少的电线来连接您的系统。 这使得 SPI 在您查看小型设备或空间有限时特别有用。

支持多个大师

允许多个主站相互通信。 这使得它非常适合在微控制器中使用,在微控制器中,多个设备可以共享同一条总线,并且每个设备都可以向总线发送数据或从总线发送数据。

例如,基于 SPI 的设备可以将数据发送到另一个基于 SPI 的设备(例如 产品 或传感器),而不必担心其他设备是否已完成其任务。

两根通讯线

该协议使用两条线在多个设备之间创建通信。 SPI 使用单独的时钟和数据线在设备之间发送信息。 SPI 总线有一个主设备和一个或多个从设备。 主机可以通过 MOSI 线路以串行格式发送命令与每个从机通信,同时通过 MISO 线路向从机发送数据。

适应不同从机需求

SPI 非常适合需要将多个从设备连接到主机控制器的应用,例如在 嵌入式 系统或计算机系统。 该协议允许从设备适应主机控制器的需求,这意味着它可以轻松用于连接具有不同通信要求的多个传感器等应用。

SPI 缺点

虽然 SPI 有很多好处,包括它支持多种设备的能力,但它也有一些缺点。

复杂

SPI 是一种串行接口,允许在多个设备之间进行通信。 SPI 的问题是它的设置可能很复杂,尤其是当混合中有很多设备时。

当您连接 SPI 设备时,您需要确保线路不会相互干扰并且不会交叉。 这可能会导致数据丢失或传感器读数不正确等问题。

慢速

SPI 比其他通信协议慢,因为它需要比它们更多的时钟周期来传输数据。 如果您尝试传输大量数据,这可能会成为一个问题,因为较慢的速度意味着传输所有信息需要更长的时间。

半双工接口

SPI 接口是一个半双工接口,这意味着如果一个设备正在发送数据,它就不能接收任何数据。 如果设备还没有准备好发送或接收数据,则必须告诉它等待,直到它准备好发送或接收数据。

串口优势

与其他串行接口相比,UART 具有其他几个优点:

不需要时钟

UART 不需要任何类型的时钟。 这意味着数据以恒定速率发送,不需要同步。 这使得 UART 对于远距离或通过嘈杂环境发送数据非常有用。

对于其他类型的串行通信,例如 SPI 或 I2C,您需要同步发送方和接收方,以便它们可以相互通信。 这意味着,如果任何一台设备出现任何类型的延迟,都可能导致通信出现问题——例如,如果一台设备发送数据的时间比另一台设备预期的晚一点,这可能会导致接收错误。

操作简便

UART 易于设置和使用,因为除了将数据引脚连接到微控制器上适当的 I/O 引脚外,它们不需要任何配置。 它们的针脚也很少,因此您可以将许多针脚放在一个 单电路板 而不必担心占用太多空间或 功率.

用于错误检查的奇偶校验位

当您使用串行接口时,进行错误检查很重要。 UART 带有一个奇偶校验位,可以进行错误检查,这有助于确保您的数据被正确传输。

串口缺点

虽然 UART 是多种应用的有效解决方案,但使用 UART 协议也有一些缺点:

帧大小仅 9 位

这意味着帧大小或可以通过单根线路发送的数据量被限制为每帧 9 位。 如果您尝试在一帧中发送超过 XNUMX 位,它将被截断。

低数据传输速度

UART 最大的缺点是数据传输速度慢。 虽然这对于简单的应用程序可能不是问题,但对于高速数据传输来说可能是一个主要缺点。

这样做的原因是 UART 仅使用一根线进行通信,并且不使用任何纠错技术。

因此,UART 不太适合需要在两个设备之间快速传输大量数据的应用。

不能使用多个主系统或从系统

如果您想使用多个主系统或从系统,您需要确保它们都在相同的时钟频率上。 如果不是,您的数据将被损坏。

您还需要注意对同一主从系统使用不同的波特率。 如果这样做,数据将无法正确处理。

SPI 与串口

SPI 与串口

总结

那么,判决是什么? 您应该使用哪种总线协议? 是 SPI 还是 UART? 好吧,对此没有简单的答案。 最佳选择可能取决于您的项目需求和对这些协议的熟悉程度。 但是,如果您的系统已经使用其中一种协议,最好坚持使用它,以保持多个系统之间的通信一致。

更新 cookie 偏好
滚动到顶部