UART
1. 理论知识
1.1 通讯常见概念
-
串行通信和并行通信分别指什么?
串行通信是按位传输,一次传输一位。并行同学是多位同时传输。串行通信 并行通信 通信距离 远 近 抗干扰能力 强 弱 传输速率 弱 高 成本 低 高 -
单工、半双工和全双工的区别。
三者主要是描述通信方向的不同名称 通信方向 单工 数据只能单向传输 半双工 数据可以从A到B,也可以从B到A,但同一时间只能一个方向 全双工 同一时间,数据可以A到B,也可以B到A -
同步通信和异步通信的区别。
同步通信在数据传输过程中要与时钟信号一一对应,而异步通信两边各自根据约定好的频率发送和接收数据。同步通信会比异步通信多一根信号线。
1.2 串口通信协议参数
串口通信的定义等见博客:https://www.cnblogs.com/yangyang13/p/18664776
此篇主要介绍STM32的串口控制与应用。
USART工作流程如下图:
-
功能引脚说明
TX:发送数据的输出引脚;
RX:接收数据的输入引脚;
SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,无外部引脚;
nRTS:请求发送(Request to Send),n表示低电平有效。使能RTS流控制,如果USART做好接收数据准备,nRTS就会变成低电平;接收寄存器装满时,就把nTRS置为高电平。仅适用硬件流控制。
nCTS:清除发送(Clear to Send),n低电平有效。使能RTS流控制,发送器在发送下一帧数据前检测nCTS。如果为低电平,则可以发送数据;高电平则在发送完当前数据帧后停止发送。 -
波特率产生
发送器和接收器波特率相同,通过设置BRR寄存器来实现
APB2一般是72MHz,APB1是36MHz
需要的波特率是115200,则对应的分频值应该是:39.0625,把这个值写入到BRR寄存器中。39.0625的小数部分:0.0625 * 16 = 1, 整数部分是:39(0x27)。
所以写入到BRR寄存器的值是:0x0271。
2. 实践验证
2.1 寄存器方式
验证的硬件环境:stm32最小系统板+串口板
实现逻辑: