UART、IIC、SPI通信总结(理论)
UART、IIC、SPI通信总结(理论)
目录
UART、IIC、SPI通信总结(理论)
一、UART通信
1、基本原理
UART ( universal asynchronous receiver-transmitter )是一种采用全双工、异步、串行的通信方式。
全双工通信:
全双工通信是一种双向通信模式,其中通信的双方能够同时进行发送和接收操作,允许双方同时传输数据。

异步通行:
在异步通信中,数据的发送和接收不依赖于共享时钟信号。每个数据块之间有一定的间隔,而不需要严格的时序同步。通信设备会使用起始位和停止位来标识数据块的开始和结束。
UART通信是异步的,发送端和接收端不需要共享时钟信号。发送端在发送数据时会添加起始位和停止位来标识数据的开始和结束,接收端通过检测起始位来同步数据,从而实现数据的正确接收。这样就有了双方都约定了一个通信速率:波特率 bps (位 / 秒)
串行通信:
UART通信是串行通信的一种,数据一位一位地按顺序传输,而不是像并行通信那样同时传输多位数据。这种方式减少了通信线路的数量,降低了硬件成本和复杂度,特别适合长距离传输。

2、数据帧格式

1位起始位,规定为低电平0。
5~8位数据位,要传输的有效信息。
1位奇偶校验位。
1~2位停止位,规定为高电平1。
3、通信基础——波特率
波特率是指每秒钟传输的比特数,是通信双方事先约定好的。通信的双方必须使用相同的波特率才能正常通信。单位是 bps (位 / 秒)。常用的波特率有 9600 、 19200 、 38400 、 57600 以及115200 等。如波特率为9600bps的计数器需要计数(8/9600/时钟周期)次才可以传输1Byte数据。
4、硬件连接

TXD发送、RXD接收、GND接地。
二、IIC通信
IIC(Inter-Integrated Circuit)通信是一种广泛应用于电子设备中的半双工、同步、串行的通信方式
1、基本原理
半双工通信:
半双工通信是指通信双方可以在同一时刻只能进行单向通信,即在同一时间内,数据只能在一个方向上进行传输。通信双方需要交替地发送和接收数据。

同步通信:
同步通信是指通信双方使用相同的时钟信号来同步数据传输,确保数据的发送和接收在时间上保持一致。
IIC通信使用时钟线SCL来同步数据传输。时钟信号由主设备生成,从设备根据时钟信号的上升沿或下降沿来读取或发送数据。这种时钟同步机制确保了数据传输的准确性和一致性。
串行通信:
串行通信是指数据一位一位地按顺序传输,而不是同时传输多位数据。这种方式减少了通信线路的数量,降低了硬件成本和复杂度
IIC通信使用两根线:SDA(串行数据线)和SCL(串行时钟线)。数据通过SDA线一位一位地传输,每个时钟周期传输一位数据。这种串行传输方式使得IIC通信适合于低速、多设备的通信场景。
2、IIC总线
IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。

IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器。
SCL时钟线、SDA数据线。
3、IIC总线通信过程
完成IIC数据传输:

起始信号和停止信号:
开始信号:SCL为高电平时,SDA由高变低表示起始信号 。
结束信号:SCL为高电平时,SDA由低变高表示停止信号 。
注意:起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态停止信号产生后总线处于空闲状态。

主机发送一个字节数据指明从机地址和后续字节的传送方向:
IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据 。主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,'0'表示主机发送数据,'1'表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定为发送器或接收器。

数据先发送MSB、后发送LSB

字节传送与应答:
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位

数据先发送MSB、后发送LSB

同步信号:
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定

4、典型的时序图
参考说明图:

主机向从机发送数据:


S:主机 AD+R / AD+W:发送器件地址和读写位 RA:数据写入地址 DATA:8位数据位 ACK:应答位 P:停止位
从机向主机发送数据:


S:主机 AD+R / AD+W:发送器件地址和读写位 RA:数据写入地址 DATA:8位数据位 ACK:应答位 P:停止位NACK:没有回应
主机先向从机发送数据,然后从机再向主机发送数据:

四、SPI通信
1、基本原理
SPI(Serial Peripheral Interface)是一种全双工、同步、串行通信协议
全双工通信:
全双工通信是指通信双方可以在同一时刻同时进行双向通信,即数据可以在两个方向上同时传输。
在SPI通信中,数据线分为MOSI(Master Out Slave In,主设备输出从设备输入)和MISO(Master In Slave Out,主设备输入从设备输出)。主设备可以通过MOSI线向从设备发送数据,同时从设备可以通过MISO线向主设备发送数据。这种双向数据传输是同时进行的,因此SPI是全双工通信。

同步通信:
同步通信是指通信双方使用相同的时钟信号来同步数据传输,确保数据的发送和接收在时间上保持一致。
SPI通信使用时钟线SCK(Serial Clock Line)来同步数据传输。时钟信号由主设备生成,从设备根据时钟信号的上升沿或下降沿来读取或发送数据。这种时钟同步机制确保了数据传输的准确性和一致性。
串行通信:
串行通信是指数据一位一位地按顺序传输,而不是同时传输多位数据。这种方式减少了通信线路的数量,降低了硬件成本和复杂度。
SPI通信是串行通信,数据通过MOSI和MISO线一位一位地传输。每个时钟周期传输一位数据,而不是同时传输多位数据。这种串行传输方式使得SPI通信适合于高速、多设备的通信场景。
2、物理连接

一主一从:

一主多从:

CLK串行时钟引脚、MISO主设备输入/从设备输出、MOSI主设别输出/从设别输入、SS/CS从设别选择引脚。
3、总线时序

时钟极性(CPOL)和时钟相位(CPHA)
-
CPOL(Clock Polarity):定义时钟信号的空闲状态电平。CPOL=0表示时钟空闲时为低电平,CPOL=1表示时钟空闲时为高电平。
-
CPHA(Clock Phase):定义数据采样的时刻。CPHA=0表示数据在时钟的第一个跳变沿(上升或下降)被采样,CPHA=1表示数据在时钟的第二个跳变沿被采样。
四种SPI工作模式
-
模式0(CPOL=0,CPHA=0):
-
时钟空闲时为低电平。
-
数据在时钟的上升沿被采样,数据在下降沿切换。
-
-
模式1(CPOL=0,CPHA=1):
-
时钟空闲时为低电平。
-
数据在时钟的下降沿被采样,数据在上升沿切换。
-
-
模式2(CPOL=1,CPHA=0):
-
时钟空闲时为高电平。
-
数据在时钟的下降沿被采样,数据在上升沿切换。
-
-
模式3(CPOL=1,CPHA=1):
-
时钟空闲时为高电平。
-
数据在时钟的上升沿被采样,数据在下降沿切换
-
参考资源:https://download.csdn.net/download/2403_82436914/90639308
实战参考文章:https://blog.csdn.net/2403_82436914/article/details/154131543?spm=1001.2014.3001.5502
更多推荐



所有评论(0)