USART简介
•
USART
(
Universal Synchronous/Asynchronous Receiver/Transmitter
)通用同步
/
异步收发器(主要是异步通信)
•
USART
是
STM32
内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从
TX
引脚发送出去,也可自动接收
RX
引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
•
自带波特率发生器,最高达
4.5Mbits/s
•
可配置数据位长度(
8/9
)、停止位长度(
0.5/1/1.5/2
)
•
可选校验位(无校验
/
奇校验
/
偶校验)
•
支持同步模式、硬件流控制(可以防止处理数据慢而导致数据丢失的问题)、
DMA
、智能卡、
IrDA
、
LIN
•
•
STM32F103C8T6
USART
资源:
USART1(APB2)、 USART2(APB1)、 USART3(APB1)
USART框图
接收移位寄存器和发送移位寄存器都是低位先行,
硬件数据流控可以防止丢弃数据和覆盖数据的现象(nRTS反馈是否能接收信号可接收时RTS置低电平;nCTS接受信号)
SCLK控制用来产生同步的时钟信号(用于兼容别的协议)
唤醒单元实现串口挂载多设备
中断输出控制(配置中断是否能通向NVIC)
波特率发生器其实就是分频器
串口引脚
USART基本结构![](https://img-blog.csdnimg.cn/direct/018bee5440c2460c8f7fb1dbdbdecc69.png)
数据帧
空闲帧和断开帧是写局域网用的(串口不需要)
stm32的串口可以配置停止位长度为0.5,1,1.5,2这四种(区别:停止位的时常不一样)
起始位侦测(USART电路输入数据的策略)
输入数据要在采样点的正中央,如果过于靠前或靠后,电平不稳定,采样会出错
输入最好对噪声也一定的判断能力
采样在正中间8,9,10位进行采样,为保证数据的可靠性,这里是连续采样三次,如果有噪声就按照2:1的规则来(噪声标志位置1)
波特率发生器
•计算公式:波特率 = fPCLK2/1 (时钟频率)/ (16 * DIV)