SPI、UART、I2C通信的区别与应用!
扫描二维码
随时随地手机看文章
串行 VS 并行
SPI通信
SPI是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有着限定位数。
UART的主要目的是发送和接收串行数据,其最好的优点是它仅使用两条线在设备之间传输数据。UART的原理很容易理解,但是如果您还没有阅读SPI 通讯协议,那可能是一个不错的起点。
UART通信
在UART通信中,两个UART直接相互通信。 发送UART将控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART。只需要两条线即可在两个UART之间传输数据,数据从发送UART的Tx引脚流到接收UART的Rx引脚:
UART属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。
当接收UART检测到起始位时,它将以特定波特率的频率读取。波特率是数据传输速度的度量,以每秒比特数(bps)表示。两个UART必须以大约相同的波特率工作,发送和接收UART之间的波特率只能相差约10%。
UART数据包含有1个起始位,5至9个数据位(取决于UART),一个可选的奇偶校验位以及1个或2个停止位:起始位:
-
发送UART从数据总线并行接收数据:
-
仅使用两根电线
-
无需时钟信号
-
具有奇偶校验位以允许进行错误检查
-
只要双方都设置好数据包的结构
-
有据可查并得到广泛使用的方法
-
数据帧的大小最大为9位
-
不支持多个从属系统或多个主系统
-
每个UART的波特率必须在彼此的10%之内
I2C通信
-
仅使用两根电线
-
支持多个主机和多个从机
-
每个UART的波特率必须在彼此的10%之内
-
硬件比UART更简单
-
众所周知且被广泛使用的协议
-
数据传输速率比SPI慢
-
数据帧的大小限制为8位