USART简介
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器。USART是stm32单片机内部的外设。USART可以根据内存中的数据生成数据帧的时序发送出去,也可以接收RX引脚的数据帧时序拼接为数据。USART可配置数据位长度是8或9,停止位长度0.5/1/1.5/2,可选效验为可以是无效验、奇效验、偶效验,最高速度可达4.5Mbits/s。USART资源有USART1、USART2、USART3。
USART在单片机中的框图
- 数据通过RX引脚进来,到接收移位寄存器。
- 数据通过发送移位寄存器出来,通过TX发送出去。
- TDR是发送数据寄存器。
- RDR是接收数据寄存器。
- nRTS是请求到发送Request To Send,n是低电平有效,当可以接收数据时,发送一个低电平,表示对方可以发送数据了。请求发送意思就是现在可以发送数据了。
- nCTS是清除发送Clear To Send,n是低电平有效,当接收到对方低电平信号时,就停止发送数据。
- SCLK是输出时钟,可以让从机不知道波特率的情况下自适应。
- 唤醒单元可以实现多设备通信。
- 标志位:TXE发送寄存器为空,RXNE接收寄存器非空。
- 中断控制,控制中断到NVIC的通路。
stm32 USART串口的引脚
通用同步异步收发器的引脚由AFIO重映射到GPIO上。
USART1的收发引脚如下
TX > PA9
RX > PA10
USART2的收发引脚如下
TX > PA2
RX > PA3
USART3的收发引脚如下
TX > PB10
RX > PB11
USART简化结构图
1、系统时钟通过波特率发生器产生的时钟通向,发送控制器和接收控制器。
2、发送控制器和接收控制器用于控制发送和接收移位。
3、通过发送数据寄存器TDR和发送移位寄存器的配置将数据一位一位的发送出去。
4、通过引脚复用,将数据映射到针脚。
stm32 USART接收数据采样
1、采样时将一位分成16次采样。
2、起始位的采样如果前7位有3位是噪音,或8、9、10位有1次是噪音则不算。
3、8、9、10位保证是在没一位的中间进行采样。
- 数据帧如果8、9、10位有一位是噪音,按照2/3的比例决定该为是0还是1。
- 产生噪音时会在标志位上标识数据有噪音。
波特率
波特率由系统时钟和波特率寄存器系数BBR决定。
波特率 = 时钟频率 / 16 * BBR
因为stm32时钟频率是固定的,要产生指定频率的波特率,所以波特率系数BBR是一个可以存放小数的寄存器。
USB转串口
usb有4根线,分别是GND、D+、D-、VCC。
usb标准供电是5V。