UART
1. 简介
UART:Universal Asynchronous Receiver Transmitter即通用异步收发器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。
名词解释:
- 并行通信:指多比特数据同时通过并行线进行传送。多条数据线。速度快,数据线多消耗大
- 串行:使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
- 单工通信:数据只能在一个方向上传输,只能发送端到接收端这样传输数据。
- 双工通信:在同一时刻数据可以进行双向传输。半双工:数据可以在两个方向上传输,但在同一时刻,只能有一个方向上的数据传输。全双工:全双工指可以同时(瞬时)进行数据的双向传输
- 同步通信:同步通信的原理是发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如:在时钟信号的上升沿的时候,将数据发送出去)发送数据。接收端根据发送端提供的时钟信号,以及双方的约定,接收数据。这种通信方式中,因为数据分组较大,所以效率更高,适用于对速度要求高的传输。但同时,它对时序的要求也更高。
- 异步通信:异步通信的原理是接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟。发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。这种传输通常是很小的分组,比如:一个字符为一组,数据组配备起始位和结束位。所以这种传输方式的效率是比较低的,因为额外加入了很多的辅助位作为负载,常用在低速的传输中。
数据线空闲时为高电平。
波特率:用于描述UART通信时的通信速度,其单位为bps(bit per second)即每秒传送的bit数量。2. UART帧格式
IIC总线
1. 简介
IIC总线是一种串行、半双工主要用于近距离、低速的芯片之间的通信。IIC总线有两根双向的信号线,一根数据线SDA用于收发数据。一根时钟线SCL用于通信双方时钟的同步。
IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机。主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC具备冲突检测和仲裁的功能来防止错误产生。每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器。
IIC可以发送任意多个字节,因为公用时钟信号线。

2. 通信过程
- 主机发送起始信号启用总线
- 主机发送一个字节数据指明从机地址和后续字节的传送方向(高7位为从机地址,最后一位为0时表示主机给从机发送数据,为1时表示从机给主机发送数据)
- 被寻址的从机发送应答信号回主机
- 发送器发送一个字节数据
- 接收器发送应答信号回应发送器
...(循环步骤4、5)
n. 通信完成后主机发送停止信号释放总线
主要四个信号:起始信号、寻址信号(步骤2)、应答信号、停止信号
3. 信号实现
SCL和SDA空闲时都为高电平。
- 起始信号和停止信号
- SCL为高电平时,SDA由高变低表示起始信号;
- SCL为高电平时,SDA由低变高表示停止信号;
- 起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态
- 字节传送和应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答信号来回应发送器,即一帧共有9位
- 同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生改变,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。一位一位发送,满一个字节应答。
SPI总线
1. 简介
SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速的、全双工的、同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选);SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。

2. 寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。


3. 通信过程
SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑'1',低电平表示逻辑'0';一个字节传送完成后无需应答即可开始限一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或者下降沿时发送器向数据线上发送数据,在紧接着的下降沿或者上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送。

4. 极性和相位
SPI总线共有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)
CPOL表示SCLK空闲时的状态
CPOL = 0,空闲时SCLK为低电平
CPOL = 1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA = 0, 每个周期的第一个时钟沿采样
CPHA = 1,每个周期的第二个时钟沿采样
对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和该从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置(通过寄存器配置)。
IIC和SPI的异同
相同点:
- 均采用串行、同步的方式;
- 均采用TTL电平,传输距离和应用场景类似
- 均采用主从方式工作
不同点: - IIC为半双工,SPI为全双工
- IIC有应答机制,SPI无应答机制
- IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送片选信号寻址
- IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可配置
SPI需要的资源多,多个从设备要有多个片选线,IIC相较于SPI会慢一点点



