STM32串口学习总结及USART应用指南

1.基本概念

通信:是指将一个设备的数据发送到另一个设备。

通信协议:制定专门的通信规则,通信双方按照协议规则来进行数据的收发。

常见的通信协议:USART、IIC、SPI、USB、CAN

USART全称为通用同步异步收发器。USART通信也称串口通信。一般使用的是串口异步通信,同步工作只在与其他通信协调时使用(新手一般用不到),所以也叫UART。

全双工:串口通信是有TX,RX两个引脚,表示发送数据和接收数据,所以它是全双工。

异步:使用串口通信时,因为没有时钟信号线,工作频率不一样,为异步工作,所以两个设备使用串口通信时,需求相互规定一下频率(也叫波特率),这样才能进行数据的收发。

2.USART硬件电路

串口相互时的电路连接为:

注意事项:

串口通信时,设备双方的TX与RX要交叉连接。

串口为单端信号通信,指的是VCC与地端参考值来判断电平信号,所以设备双方需要共地,也就是把GND连接起来,这样VCC与GND的差值比较才有意义。

保证相同的电平标准:若电平标准不一样,需要加电平转换芯片。一般从控制器出来的信号为TTL电平。

2.1USART基本结构

收发数据时:发送移位寄存器往TX引脚移位。接收移位寄存器从RX引脚移位。

下图为STM32参考手册中的USART基本结构图

下图为简便理解型结构图

2.2STM32—USART引脚图

2.3串口转换

(这里讲一下串口的应用,便于理解)

下图是三种串口的转换电路:第一个为:USB与串口的通信。第二个为:串口与IIC的通信。第三个为:蓝牙与串口的通信。

下图为USB转串口的电路图,所用的为CH340串口转换芯片。从USB的引脚与CH340芯片的引脚相连,CH340芯片再与串口的引脚相连,从TXD与RXD引脚中完成数据的传输。

3.串口参数

3.1波特率

串口是异步通信,使用需要规定设备双方的波特率,保持一致,才能进行通信。

波特率是指每秒钟传送二进制数码的位数,以bit/s(bps)为单位。
⚫ 常用的波特率有: 9600、 19200、 38400、 57600和115200;
⚫ 波特率为115200, 表示每秒传输115200位,且每一位数据在数据线上持续时间为Tbit = 1/115200 ≈ 8.68us。

3.2起始位与停止位

起始位:标志着一个数据帧的开始,固定为低电平。一般空闲位为高电平,需要起始位为低电平产生一个下降沿,打破空闲位,表示开始进行数据的传输。

停止位:用于数据的间隔,固定为高电平。一个数据的结束,需要停止位为高电平,回到空闲位。停止信号可由 0.5、 1、 1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。

3.3数据位

数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行。有效数据的长度常被约定为 5、 6、 7 或 8 位长。

3.4校验位

校验位:分为三种。无校验;奇校验(置0/1,使九位数据包含奇数个1);偶校验(置0/1,使九位数据包含偶数个1)。

3.5时序图

配合波特率,一位的起始位,8位的数据包,一位的校验位(无校验则么有),一位的停止位(可配置0.5/1.5/2)。

4、STM32软件程序配置

1.时钟配置: 配置UART 外设所需的时钟。这可能涉及设置外设时钟源、时钟分频等。

2.引脚配置: 配置 UART 外设的引脚,包括设置引脚为输入或输出、选择引脚复用功能等。

3.中断配置: 配置与UART 相关的中断,包括中断优先级、使能中断等。

4.1数据发送

首先初始化,开启时钟,引脚配置,(只发送的话不需要中断配置),使能

初始化完成后,调用函数发送数据。使用时,在主函数调用封装的函数即可。

4.2数据发送+接收

接收数据时,进行中断配置,需要进行中断查询,首先开启中断,开启某个(RXNE)标志位到NVIC的输出,然后再配置NVIC。一但RXNE置1后,就会向NVIC申请中断,之后就可以在中断函数里接收数据。

中断函数在启动文件里找,函数中,先判断标准位,如果RXNE置1,就下一步,然后就可以读取数据。

参考:

STM32入门教程-2023版 细致讲解 中文字幕

常见的通讯协议总结(USART、IIC、SPI、485、CAN)

物联沃分享整理
物联沃-IOTWORD物联网 » STM32串口学习总结及USART应用指南

发表评论