00. 目录
文章目录
01. USART简介
通用同步异步收发器 (USART) 能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。USART 通过小数波特率发生器提供了多种波特率。
它支持同步单向通信和半双工单线通信;还支持 LIN(局域互连网络)、智能卡协议与 IrDA(红外线数据协会)SIR ENDEC 规范,以及调制解调器操作 (CTS/RTS)。而且,它还支持多处理器通信。
通过配置多个缓冲区使用 DMA 可实现高速数据通信。
02. USART主要特性
● 全双工异步通信
● NRZ 标准格式(标记/空格)
● 可配置为 16 倍过采样或 8 倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能
● 小数波特率发生器系统
— 通用可编程收发波特率(有关最大 APB 频率时的波特率值,请参见数据手册)。
● 数据字长度可编程(8 位或 9 位)
● 停止位可配置 - 支持 1 或 2 个停止位
● LIN 主模式同步停止符号发送功能和 LIN 从模式停止符号检测功能
— 对 USART 进行 LIN 硬件配置时可生成 13 位停止符号和检测 10/11 位停止符号
● 用于同步发送的发送器时钟输出
● IrDA SIR 编码解码器
— 正常模式下,支持 3/16 位持续时间
● 智能卡仿真功能
— 智能卡接口支持符合 ISO 7816-3 标准中定义的异步协议智能卡
— 智能卡工作模式下,支持 0.5 或 1.5 个停止位
● 单线半双工通信
● 使用 DMA(直接存储器访问)实现可配置的多缓冲区通信
— 使用 DMA 在预留的 SRAM 缓冲区中收/发字节
● 发送器和接收器具有单独使能位
● 传输检测标志:
— 接收缓冲区已满
— 发送缓冲区为空
— 传输结束标志
● 奇偶校验控制:
— 发送奇偶校验位
— 检查接收的数据字节的奇偶性
● 四个错误检测标志:
— 溢出错误
— 噪声检测
— 帧错误
— 奇偶校验错误
● 十个具有标志位的中断源:
— CTS 变化
— LIN 停止符号检测
— 发送数据寄存器为空
— 发送完成
— 接收数据寄存器已满
— 接收到线路空闲
— 溢出错误
— 帧错误
— 噪声错误
— 奇偶校验错误
● 多处理器通信 - 如果地址不匹配,则进入静默模式
● 从静默模式唤醒(通过线路空闲检测或地址标记检测)
● 两个接收器唤醒模式:地址位(MSB,第 9 位),线路空闲
03. USART功能说明
接口通过三个引脚从外部连接到其它设备。任何 USART 双向通信均需要至少两个引脚:接收数据输入引脚 (RX) 和发送数据引脚输出 (TX):
RX :接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从而用于恢复数据。
TX :发送数据输出引脚。如果关闭发送器,该输出引脚模式由其 I/O 端口配置决定。如果使能了发送器但没有待发送的数据,则 TX 引脚处于高电平。在单线和智能卡模式下,该 I/O用于发送和接收数据(USART 电平下,随后在 SW_RX 上接收数据)。
04. USART字符说明
可通过对 USART_CR1 寄存器中的 M 位进行编程来选择 8 位或 9 位的字长。
TX 引脚在起始位工作期间处于低电平状态。在停止位工作期间处于高电平状态。空闲字符 可理解为整个帧周期内电平均为“1”(停止位的电平也是“1”),该字符后是下一个数据帧的起始位。
停止字符 可理解为在一个帧周期内接收到的电平均为“0”。发送器在中断帧的末尾插入 1或 2 个停止位(逻辑“1”位)以确认起始位。
发送和接收由通用波特率发生器驱动,发送器和接收器的使能位分别置 1 时将生成相应的发送时钟和接收时钟。
05. USART寄存器
5.1 状态寄存器 (USART_SR)
Status register
偏移地址:0x00
复位值:0x00C0 0000
5.2 数据寄存器 (USART_DR)
Data register
偏移地址:0x04
复位值:0xXXXX XXXX
5.3 波特率寄存器 (USART_BRR)
Baud rate register
注意: 如果 TE 或 RE 位分别被禁止,则波特计数器会停止计数。
偏移地址:0x08
复位值:0x0000 0000
位 31:16 保留,必须保持复位值
位 15:4 DIV_Mantissa[11:0]:USARTDIV 的尾数这 12 个位用于定义 USART 除数 (USARTDIV) 的尾数
位 3:0 DIV_Fraction[3:0]:USARTDIV 的小数这 4 个位用于定义 USART 除数 (USARTDIV) 的小数。当 OVER8 = 1 时,不考虑 DIV_Fraction3位,且必须将该位保持清零。
5.4 控制寄存器 1 (USART_CR1)
Control register 1
偏移地址:0x0C
复位值:0x0000 0000
5.5 控制寄存器 2 (USART_CR2)
Control register 2
偏移地址:0x10
复位值:0x0000 0000
5.6 控制寄存器 3 (USART_CR3)
Control register 3
偏移地址:0x14
复位值:0x0000 0000
5.7 保护时间和预分频器寄存器 (USART_GTPR)
Guard time and prescaler register
偏移地址:0x18
复位值:0x0000 0000
06. 附录
6.1 【STM32】STM32系列教程汇总