打印
[学习笔记]

MCU常见通信协议 UART /SPI / I2C 学习记录

[复制链接]
1582|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2023-9-11 13:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
首先先了解通信的三种基本类型:

单工通信:只允许一方向另一方传送信息,而另一方不能回传信息。
半双工通信:数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方。
全双工通信:发送数据的同时也能接收数据,两者同步进行,互不干扰。
UART、I2C和SPI是单片机系统中最常用的三种串行通信协议,实际应用中一般采用中断方式发送和接收,避免程序堵塞

一、UART
UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和计算机之间以及单片机和单片机之间的通信。

UART有发送和接收 2条 数据线,互不干扰,属于全双工通信方式,不同的MCU驱动方式也不相同,实际应用中一般会自定义收发数据格式,增加校验方法,避免数据出错,比如校验和和CRC校验。双方通信时需要设置相同波特率 ,调试碰到问题时首先检查两边实际波特率是否相同。

常见连接方式如下:

通信数据格式如下图



起始位:发送一位逻辑电平0开始传输数据

空闲位:当为高电平时,无数据传输

数据位:先发低位再发高位,传输8位数据

校验位:奇偶校验,1的位数为偶数(偶校验),1的位数为奇数(奇校验)

停止位:发送逻辑电平1停止数据传输

二、SPI
SPI(Serial Peripheral Interface串行外围设备接口):是一种高速的、全双工、同步通信总线。(如MCU与EEPROM、FLASH、实时时钟、数字信号处理器之间的通信)

SPI主从模式有一点需要注意,SPI从机是没有时钟的,从机发送数据时,需要主机发送数据提供时钟信号。

SPI有4根线:

SSEL(SCS):片选,从设备片选使能信号(一主机多从机情况);

SCLK(SCK):时钟,由主机产生,类似I2C的SCL;

MOSI(Master Output/Slave Input):主机输出从机输入,主机给从机发送指令或者数据的通道;

MISO(Master Input/Slave Output):主机输入从机输出,主机读取从机的状态或者数据的通道。

4种SPI模式:

CPOL(Clock Polarity):时钟的极性。

CPOL = 1: SCK空闲状态为高电平;
CPOL = 0: SCK空闲状态为低电平;
CPHA(Clock Phase):时钟的相位。

CPHA = 1: 数据的输出是在一个时钟周期的第一个沿;(采样自然在第二个沿)
CPHA = 0: 数据的采样是在一个时钟周期的第一个沿;(输出自然在第二个沿)
当MCU作为SPI主机时通信格式如下图:



作为SPI从机时:



三、I2C
I2C(Inter-Integrated circuit)总线是由PHILIPS公司开发的两线式串行总线,多用于连接微处理器及其外围设备(特别是外部存储器件)。I2C总线的主要特点是接口方式简单,两条线可以挂多个参与通信的器件,即多机模式,而且任何一个器件都可以作为主机,当然同一时刻只能有一个主机。UART通信多用于板间通信,比如单片机和计算机,这个设备和另外一个设备之间的通信。而I2C多用于板内通信,比如单片机和E2PROM。

在硬件上,I2C总线是由时钟总线SCL和数据总线SDA两条线构成,连接到总线上的所有器件的SCL都连到一起,所有SDA都连到一起。

I2C通信的起始信号后,首先要发送一个从机的地址,这个地址一共有7位,紧跟着的第8位是数据方向位(R/W),“0”表示接下来要发送数据(写),“1”表示接下来是请求数据(读)。需要注意的是,起始信号与停止信号都是由主机产生的。

1.起始信号:I2C通信的起始信号的定义是SCL为高电平期间,SDA由高电平向低电平变化产生一个下降沿,表示起始信号。

2.数据传输:I2C通信是高位在前,低位在后。I2C通信没有固定波特率,但要求当SCL在低电平的时候,SDA允许变化,也就是说,发送方必须先保持SCL是低电平,才可以改变数据线SDA,输出要发送的当前数据的一位;而当SCL在高电平的时候,SDA绝对不可以变化,因为这个时候,接收方要来读取当前SDA的电平信号是0还是1,因此要保证SDA稳定。

3.停止信号:I2C通信停止信号是SCL为高电平期间,SDA由低电平向高电平变化产生一个上升沿,表示结束信号。

通信数据格式如下图:

1.主机发送:



2.主机接收:



3.从机发送:



4.从机接收:



如有问题,感谢指正!
————————————————
版权声明:本文为CSDN博主「又来学习了呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yiyiyuanyuanyiyi/article/details/132337238

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1931

主题

15611

帖子

11

粉丝