UART、IIC和SPI串行通信协议的比较与分析

常见串行通信有三个,即UART (Universal Asynchronous Receiver/Trasmitter,异步串行收发器),IIC,SPI。下面将分别介绍三种串行通信的过程。

一、UART、IIC、SPI通信过程

1、UART通信过程

UART是一种异步全双工串行通信协议。UART通信就是常说的串口通信。其数据传输方式为:

1.串口通信的信号线只需要两条线就可以完成,即发送端TX和接收端RX。

2.起始位,数据线从高变低,低有效为0,数据传输开始。

3.数据位,起始位传输之后便是数据位开始,一般为8位,传输时低位(LSB)在前,高位(MSB)在后。

4.校验位,校验位可以认为是一个特殊的数据位,通常使用的是奇偶校验,使用串口协议时通常取消奇偶校验位。

5.停止位,停止位高有效为1,他表示这一个个字节传输结束。

6.位时间,起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。

7.空闲位,持续的高电平。

8.帧:从起始位开始到停止位结束的时间间隔称之为一帧。

2、IIC通信过程

IIC是一种同步半双工串行通信协议。其数据传输方式为:

  1. IIC有两根双向信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟同步。

  1. SCL为高电平时,SDA由高变低表示起始信号,代表开始传输数据。

  1. SCL为高电平时,SDA由低变高表示停止信号,代表数据传输结束。

  1. IIC通信时每个字节位宽为8位,数据先传送最高位,后传送最低位,发送器发送完一个字节数据后接收器必须发送1位应答信号来回应发送器,即1帧共9位。

  1. 同步信号,时钟线SCL为低电平期间,发送器向数据线上发送一位数据,期间数据线上的信号允许发生变化,时钟线SCL为高电平期间,接收器从数据线上读取一位数据,期间数据线上的信号不允许发生变化,需保持稳定。

  1. 时钟信号SCL每调整一次,发送1位数据,一个字节的发送要经历9个时钟。

  1. IIC通信采用TTL电平标准。

IIC宏观通信过程:

  1. 主机发送起始信号启用总线(告知从机开始通信)

  1. 主机发送一个字节数据指明从机地址(高7位)和后续字节的传送方向(最低位)

  1. 被寻址的从机发送应答信号回应主机

  1. 发送器发送一个字节数据

  1. 接收器发送应答信号回应发送器

···循环步骤4,5

N、通信完成后主机发送停止信号释放总线

3、SPI通信过程

SPI是一种同步全双工串行通信协议,其数据传输方式为:

  1. SPI有三根信号线,一根信号线MOSI用于主机向从机发送数据,一根信号线MISO用于从机向主机发送数据,时钟线SPICLK用于通信双方时间同步。

  1. 一个字节传送完成后无需像IIC一样发送应答位即可开始下一个字节的发送。

  1. 时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或者上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。

  1. 根据时钟的不同相位(CPOL)和极性(CPHL),SPI总线具有四种工作模式。对于从机,出厂时其工作模式已确定,使用主机和从机通信时需要保证主机工作模式和从机一致。

  1. SPI通信采用TTL电平标准

4、三种通信方式的简要对比:

类别

UART

IIC

SPI

时钟

异步

同步

同步

传输方向

全双工

半双工

全双工

信号线数

2

2

3

电平标准

TTL/RS232/RS422/RS485

TTL

TTL

应答信号

单字节所需时钟

由波特率决定

9

8

最大区别

UART每传输一个字节,数据线有一段持续的高电平,IIC数据传输时,时钟为持续的高电平,根据应答信号决定结束时间,SPI在每个时钟上升沿传输发送数据,下降沿接收数据

二、UART与RS232/RS422/RS485等的关系

1、RS232/RS422/RS485物理接口标准

RS232/RS422/RS485是三个常用的串行通信接口标准,什么是串行通信接口标准呢?是指用来进行串行通信的物理接口标准,它只表征了电气特性,而不涉及到接插件、电缆、协议等。电气特性规定了逻辑电平如何确定,数字电路以电信号0和1进行设计,逻辑家族中有不同的集成电路器件,在实际工作中,这些器件需要一个特定的电压电流标准去判定它的电信号是0还是1,将这个标准称为逻辑电平。

2、串口UART与RS232/RS422/RS485等的区别

需要说明一下,很多人经常把RS-232、RS-422、RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准,顶多是网络协议中的物理层面。

UART是通用异步收发传输器,既然是“器”,显然,它就是个设备而已,要完成一个特定功能的硬件。它最基本的功能是串并数据转换。

另外UART还要控制数据的格式(波特率、起始位、数据位、校验位、停止位等内容),这表示它也是异步串行通信的一种方式,它本身不是协议,但具有协议的特征,然而比RS232协议更具一般性。

因此可以说,UART同时具有硬件和协议的范畴。

3、串口UART为什么不使用TTL电平标准而使用RS232/RS422/RS485等电平标准

UART存在以下两个问题使得UART通信放弃TTL电平标准,首先TTL的高电平一般为处理器使用的电平,因此对于不同设备无法直接进行UART通信,例如51认为5V为高电平,0V为低电平;STM32认为3.3V为高电平,0V为低电平。因此对于不同的设备需要将其UART控制器输出的TTL电平转化为被广泛使用的RS232电平等。也就是说FPGA芯片是无法(较为复杂)发出对应的电平标准,如:RS485、RS232、USB接口电平等。在大多数板卡设计时,都会在FPGA外围添加电平转换器,将FPGA的电平标准转换为通信的电平标准。因此开发板上会采用USB <->UART(LVCOMS/LVTTL)的电平转换芯片例如CP2102。所以开发板上的供电端口不仅仅可以供电,还可以进行通信。

此外,UART没有规定不同器件连接时连接器的标准(知道到有RXD,TXD两根线),所以不同器件间通过UART通信时连接很不方便。第二点是TTL电平抗干扰能力差,数据传输易出错。

RS232协议规定了UART串口通信时连接器的标准(DB9)和高低电平。传输距离可达15m。虽然很多处理器会集成UART控制器,但处理器产生的信号时TTL信号,不是符合RS232标准的信号,所以需要在处理器外部添加电路对信号进行电平转换(MAX232可以实现232电平和TTL电平转换)

为了解决RS232标准传输距离短和抗干扰能力差等缺点,提出了RS485标准,传输距离可达1500m。RS485采用两线制连接器标准,RS422采用四线制连接器标准。RS485采用差分信号,因此对于处理器产生的TTL信号,我们需要在处理器外部去添加电路将TTL信号转换成差分信号。

4、串口UART与RS232/RS422/RS485的简要对比

类别

UART

RS232/RS422/RS485

定位

通信协议

网络协议的物理层面

作用

规定数据传输方式

规定了逻辑电平等电气特性

软硬件范畴

软件/硬件兼具

硬件

基本功能

串行传输数据

将UART通信的TTL电平转换为安全、可靠、广泛的RS电平

UART串口通信为何采用RS(422,232,485)电平而非TTL电平?

1、不同的设备TTL电平不同,因此采用统一电平标准RS232。

2、TTL电平抗干扰能力差。

参考资料链接:

https://blog.csdn.net/weixin_49780322/article/details/120216265

https://blog.csdn.net/weixin_42369496/article/details/98199353

https://blog.csdn.net/oqqHuTu12345678/article/details/65445338

https://www.bilibili.com/video/BV1Dd4y1R7NC

https://zhuanlan.zhihu.com/p/150121520

https://blog.csdn.net/weixin_42369496/article/details/98199353

https://blog.csdn.net/passerbyyuan/article/details/78477756

https://zhuanlan.zhihu.com/p/558953115

物联沃分享整理
物联沃-IOTWORD物联网 » UART、IIC和SPI串行通信协议的比较与分析

发表评论