UART、SPI、I2C串行通讯协议解释 同步/异步 全双工/半双工通信含义

一、什么是同步/异步通信?

同步通信:一方发送,另一方应答,否则不进行下一次传输(带时钟同步信号传输)。

异步通信:一方发送,不考虑另一方是否收到,直接进行下一次传输(不带时钟同步信号)。


二、什么是全双工/半双工?

单工:单向通信,只能由一方发送数据,另一方接收。

半双工:双方都可发送数据,但同一时刻只能一方发送,一方接收。

全双工:双方都可发送数据,并且可同时发送数据。


三、常见通讯方式

UART: 全双工、异步通信
SPI :    全双工、同步通信
I2C:     半双工、同步通信


四、UART(Universal Asynchronous Receiver/Trasmitter,异步串行收发器)

USART:通用同步和异步收发器
UART:通用异步收发器

区别:USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了,大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。

串行接口(串口):数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。

空闲位:数据线在空闲状态的时候为逻辑“1”状态。 
起始位:当要传输数据的时候先将数据线拉低,表示开始数据传输。 
数据位:即要传输的数据,数据位数可选择 5~8 位,低位在前,先传输,高位最后传输。 
奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可不使用。 
停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都
选择 1 位停止位。 
波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数 


五、I2C(Inter-Integrated Circuit)

  • SCL(串行时钟线)
  • SDA(串行数据线)

这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

 1.起始位:在 SCL 为高电平的时候,SDA 出现下降沿就表示为起始位。

 2.停止位:在 SCL 位高电平的时候,SDA出现上升沿就表示为停止位。

3.数据传输:数据传输需要保证在 SCL 高电平期间,SDA 上的数据稳定 。

嘻嘻嘻的的的的4.应答信号:主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。 

5.I2C写时序:写入从机地址 + 读写位 + “写入”要写入的寄存器地址 + 写数据。

 6.I2C读时序:写入从机地址 + 读写位(写) + “写入”要写入的寄存器地址 + 再次写入从机地址 + 读写位(读) + 读数据

7.I2C多字节读写时序

多字节读写时序和单字节的基本一致,只是在读写数据的时候可以连续发送多个自己的数据,其他的控制时序都是和单字节一样的。 


六、SPI(Inter-Integrated Circuit 串行外设接口)

SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。因此,SPI 接口的通信速度很快,I2C 最多 400KHz,但是 SPI 可以到达几十MHz。 

一般 SPI 需要 4 根线,但是也可以使用三根线(单向传输),标准的 4 线 SPI 含义如下:

1.CS/SS(Slave Select/Chip Select),这个是片选信号线,用于选择需要进行通信的从设备。I2C 主机是通过发送从机设备地址来选择需要进行通信的从机设备的,SPI 主机不需要发送从机设备,直接将相应的从机设备片选信号拉低即可

2.SCK(Serial Clock),串行时钟,和 I2C 的 SCL 一样,为 SPI 通信提供时钟。 

3.MOSI/SDO(Master Out Slave In/Serial Data Output),简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。

4.MISO/SDI(Master In Slave Out/Serial Data Input),简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。 

通过串行时钟极性(CPOL)和相位(COPHA)搭配出SPI的四种工作模式: 

  1. CPOL = 0:串行时钟低电平空闲
  2. CPOL = 1:串行时钟高电平空闲
  3. CPHA = 0:串行时钟第一个跳变沿传输数据
  4. CPHA = 1:串行时钟第二个跳变沿传输数据

以CPOL = 0, CPHA = 0为例(低电平空闲, 第一个时钟信号传输数据), SPI全双工通信时序图如下:

版权声明:本文为CSDN博主「最靓的跑路仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41709234/article/details/122948501

一、什么是同步/异步通信?

同步通信:一方发送,另一方应答,否则不进行下一次传输(带时钟同步信号传输)。

异步通信:一方发送,不考虑另一方是否收到,直接进行下一次传输(不带时钟同步信号)。


二、什么是全双工/半双工?

单工:单向通信,只能由一方发送数据,另一方接收。

半双工:双方都可发送数据,但同一时刻只能一方发送,一方接收。

全双工:双方都可发送数据,并且可同时发送数据。


三、常见通讯方式

UART: 全双工、异步通信
SPI :    全双工、同步通信
I2C:     半双工、同步通信


四、UART(Universal Asynchronous Receiver/Trasmitter,异步串行收发器)

USART:通用同步和异步收发器
UART:通用异步收发器

区别:USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了,大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。

串行接口(串口):数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。

空闲位:数据线在空闲状态的时候为逻辑“1”状态。 
起始位:当要传输数据的时候先将数据线拉低,表示开始数据传输。 
数据位:即要传输的数据,数据位数可选择 5~8 位,低位在前,先传输,高位最后传输。 
奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可不使用。 
停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都
选择 1 位停止位。 
波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数 


五、I2C(Inter-Integrated Circuit)

  • SCL(串行时钟线)
  • SDA(串行数据线)

这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

 1.起始位:在 SCL 为高电平的时候,SDA 出现下降沿就表示为起始位。

 2.停止位:在 SCL 位高电平的时候,SDA出现上升沿就表示为停止位。

3.数据传输:数据传输需要保证在 SCL 高电平期间,SDA 上的数据稳定 。

嘻嘻嘻的的的的4.应答信号:主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。 

5.I2C写时序:写入从机地址 + 读写位 + “写入”要写入的寄存器地址 + 写数据。

 6.I2C读时序:写入从机地址 + 读写位(写) + “写入”要写入的寄存器地址 + 再次写入从机地址 + 读写位(读) + 读数据

7.I2C多字节读写时序

多字节读写时序和单字节的基本一致,只是在读写数据的时候可以连续发送多个自己的数据,其他的控制时序都是和单字节一样的。 


六、SPI(Inter-Integrated Circuit 串行外设接口)

SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。因此,SPI 接口的通信速度很快,I2C 最多 400KHz,但是 SPI 可以到达几十MHz。 

一般 SPI 需要 4 根线,但是也可以使用三根线(单向传输),标准的 4 线 SPI 含义如下:

1.CS/SS(Slave Select/Chip Select),这个是片选信号线,用于选择需要进行通信的从设备。I2C 主机是通过发送从机设备地址来选择需要进行通信的从机设备的,SPI 主机不需要发送从机设备,直接将相应的从机设备片选信号拉低即可

2.SCK(Serial Clock),串行时钟,和 I2C 的 SCL 一样,为 SPI 通信提供时钟。 

3.MOSI/SDO(Master Out Slave In/Serial Data Output),简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。

4.MISO/SDI(Master In Slave Out/Serial Data Input),简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。 

通过串行时钟极性(CPOL)和相位(COPHA)搭配出SPI的四种工作模式: 

  1. CPOL = 0:串行时钟低电平空闲
  2. CPOL = 1:串行时钟高电平空闲
  3. CPHA = 0:串行时钟第一个跳变沿传输数据
  4. CPHA = 1:串行时钟第二个跳变沿传输数据

以CPOL = 0, CPHA = 0为例(低电平空闲, 第一个时钟信号传输数据), SPI全双工通信时序图如下:

版权声明:本文为CSDN博主「最靓的跑路仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41709234/article/details/122948501

生成海报
点赞 0

最靓的跑路仔

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Arduino 水滴检测

实物连接图: 电路图: 代码: void setup() {pinMode(3, OUTPUT);pinMode(2, INPUT); }void loop() {bool va2 digitalR

4pin oled字模,oled图片编码生成方法

在制作手工的时候,选用了一款4pin 的OLED单色显示屏,在取字模的时候遇到一些问题,特此做一下记录,对于也遇到这方面问题的朋友,也可以提供一些思路。 所选用的4pin