目录
USART简介
USART大体可分为发送和接收两部分
发送:根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去
接收: 接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
常用串口参数
波特率:9600/115200
数据位8位 停止位1位 无校验
同步模式就是多了个clk时钟
硬件流控制:通过低电平表示接收方准备完成,防止在传输时因为传输速度过快导致数据被抛弃或覆盖
USART框图
数据寄存器
TDR:只写(写入0x55二进制为0101 0101)转移到 发送移位寄存器后,标志位TXE置1,可以继续写入新的数据。
移位寄存器:在发送器控制的情况下,向右移位,低位先行,传入TX,移位完成后立刻转移新的数据
移位寄存器:数据从RX引脚通向接收移位寄存器,在接收器控制的驱动下,一位一位的读取RX电平,先放在最高位,然后向右移,移动8位(一个字节)后,整体转移到RDR中,标志位RXNE置1,读取数据
RDR:只读
流控(了解)
硬件数据流控: 能接收数据时,RTS给低电平,连接到外部设备的CTS,设备通过TX向RX传输数据,反正高电平,停止传输
nRTS:请求发送(低电平有效),输出脚
nCTS:请求接收(低电平有效),输入脚
同步时钟信号
发送寄存器每移位一次, 同步时钟信号跳变一个周期
用途
1、兼容其他协议,串口加上时钟后,类似SPI协议
2、自适应波特率
唤醒单元
作用:实现串口挂载多设备,发送特定地址唤醒设备工作
中断控制
两个重要的状态寄存器标志位
TXE发送寄存器空,RXNE接收寄存器非空
波特率发生器
作用类似分频器,APB进行分频,得到发送和接收移位的时钟
USART1挂载在APB2,PCLK2的时钟,一般是72M
其他USART挂载在APB1,PCLK1的时钟,一般是36M
引脚图
USART基本结构图
波特率发生器用于产生约定的通信速率,时钟来源是PLCLK2/1,经过波特率发生器分频后,发送给发送和接收控制器,用来控制发送移位和接收移位,经过发送和移位寄存器的配合将数据一位一位的传送,通过GPIO的复用输出输出到TX引脚,产生串口协议规定的波形,当数据由数据寄存器转移到移位寄存器时,标志位TXE置1,RX波形通过GPIO输入,一位一位的移入接收移位寄存器,当数据由接收移位寄存器转移到接收数据寄存器时,标志位RXNE置1,标志位可以申请中断
数据帧
9位字长可以在最后一位设置奇偶校验或者无校验
时钟的极性、相位可以通过配置寄存器决定,LBCL位控制最后一个数据的时钟脉冲
STM32可配置的停止位长度为:0.5 1 1.5 2(与数据位长度之比) ,一般为1
起始位侦测
一开始的空闲状态高电平采样为1,直到采样到0,所以1-0中产生了下降沿,检测到起始位,从起始位开始进行连续16次采样,应该是都为0,为了防止噪声带来的干扰会在第3、5、7、8、9、10次再进行采样,要求每3位里至少有2个0,标志位NE代表有噪声
数据采样
在第8、9、10次进行连续采样,理想情况下应该全为1、0,少数服从多数决定数据高低电平的判定
波特率发生器
例:配置USART1为9600的波特率
9600 = 72M / 16 / DIV
DIV = 468.75
转换为二进制为111010100.11
整数12位,前面补0,小数4位,后面补0