[其他ST产品] 【STM32】USART

[复制链接]
1434|54
 楼主| 发GV第几啊 发表于 2023-7-25 16:33 | 显示全部楼层 |阅读模式
硬件基础
USART仅规定了协议层通信标准,物理层硬件可以根据通讯对象灵活选择。

1.USART主机接USART从机
这种情况不用进行任何转换,直接将信号线交叉连接,地线直接连接即可。

73264bf88c8cf88a.png

评论

———————————————— 版权声明:本文为CSDN博主「sunshine42.7」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_40130613/article/details/125438749  发表于 2023-7-25 17:00
 楼主| 发GV第几啊 发表于 2023-7-25 16:33 | 显示全部楼层
USART主机接电脑USB
一般的单片机硬件设计都会预留一个USART连接电脑,用于在调试程序时可以将调试信息打印在电脑端的串口调试助手。
但单片机的USART无法直接与PC通讯,需要借助CH340或CP2102等芯片实现USB与USART的相互转化。

8468064bf88deab7be.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:33 | 显示全部楼层
USART主机接RS232从机
单片机的USART无法直接与232设备通讯,需要借助MAX232等芯片实现232与USART的相互转化。

284364bf88ee989be.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:34 | 显示全部楼层
USART主机接RS485从机
单片机的USART无法直接与485设备通讯,需要借助MAX485等芯片实现485与USART的相互转化。

6540864bf88fd84a32.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:34 | 显示全部楼层
功能框图

8423064bf890e20340.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:34 | 显示全部楼层
1.功能引脚
TX:数据发送
RX:数据接收
SW_RX:略
nRTS:硬件流控制,略
nCTS:硬件流控制,略
SCLK:仅适用于同步模式,略
 楼主| 发GV第几啊 发表于 2023-7-25 16:34 | 显示全部楼层
2.数据寄存器
数据寄存器USART_DR只有低9位有效,并且第9位是否有效受CR1寄存器的M位控制,详见控制寄存器部分。
 楼主| 发GV第几啊 发表于 2023-7-25 16:34 | 显示全部楼层
USART_DR实际包含两个寄存器,一个用于发送的TDR,一个用于接收的RDR。发送时往USART_DR写入数据会自动存入TDR,读取USART_DR会自动提取RDR的数据。

6174564bf892fedc74.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:35 | 显示全部楼层
控制与状态寄存器
该部分寄存器囊括了USART接收发送的功能控制,收发状态监视,中断控制。

3504164bf893fa9317.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:35 | 显示全部楼层
RE:接收使能
TE:发送使能
RXNEIE:接收缓冲区非空中断使能
TCIE:发送完成中断使能
PS:校验位(0:偶校验,1:奇校验)
PCE:校验控制使能
M:字长(0:8位,1:9位)
UE:USART使能
 楼主| 发GV第几啊 发表于 2023-7-25 16:35 | 显示全部楼层
 楼主| 发GV第几啊 发表于 2023-7-25 16:35 | 显示全部楼层
STOP:停止位
00:1个停止位;
01:0.5个停止位;
10:2个停止位;
11:1.5个停止位;
1937364bf895e63fbf.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:44 | 显示全部楼层
4089264bf8b4cc575d.png
DMAT:DMA使能发送
DMAR:DMA使能接收
4413464bf8b62c112e.png
PE:校验错误
RXNE:读数据寄存器非空
TC:发送完成
TXE:发送数据寄存器空

 楼主| 发GV第几啊 发表于 2023-7-25 16:44 | 显示全部楼层
TC与TXE的区别:数据从TDR发送到发送移位寄存器之后触发TXE置位,但数据还没有从TX引脚发送出去,只有数据从TX引脚发送出去之后,才算完成一次数据发送,触发TC置位。也就是说,TC相比TXE更进一步。
 楼主| 发GV第几啊 发表于 2023-7-25 16:47 | 显示全部楼层
发送
第一步:一般设置数据位为8位,停止位为1位,无校验位;//M=0,STOP=00,PCE=0;

此时字符帧格式为“起始位+数据帧+停止位”。

注意:奇偶校验只能验错,不能验对,校验准确率在50%以下,故一般设置为无校验。
 楼主| 发GV第几啊 发表于 2023-7-25 16:49 | 显示全部楼层
第二步:使能USART,使能TE,即可启动数据发送,发送顺序为低位在前,高位在后

举例:以发送字符’A’为例,其ASCII码为65,二进制为0100 0001,则发送次序为1000 0010。
86264bf8ca70d126.png
 楼主| 发GV第几啊 发表于 2023-7-25 16:49 | 显示全部楼层
第三步:发送数据过程中需要等待TC标志位1,当其置位时,表示传输完成,如果之前有设置TCIE为1,则在数据传输完成时产生中断。
 楼主| 发GV第几啊 发表于 2023-7-25 16:49 | 显示全部楼层
接收
跟接收相似,使能RE 之后开始接收数据,接收完成后就把数据从移位寄存器移到RDR内,并把RXNE置位,如果之前将RXNEIE置位的话将触发中断。
 楼主| 发GV第几啊 发表于 2023-7-25 16:50 | 显示全部楼层
波特比率寄存器
USART发送器和接收器使用相同的波特率,计算公式为:

521664bf8ce48c363.png

其中fPCLK为USART时钟,以F1为例,USART1挂载在APB2总线上,时钟频率为72M,USART2挂载在APB1总线上,时钟频率为36M。
 楼主| 发GV第几啊 发表于 2023-7-25 16:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

323

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部