通用同步异步收发器通用同步异步收发器 USART 通信外设通信外设 USART特性(特性(1)) 灵活可配置的串行通信属性 数据位长度:8位或9位 校验位(奇或偶)的产生和检测 停止位长度:1位、1.5位或2位 波特率可灵活配置 过采样位数:16位或8位 最高6M波特率(48MHz外设频率+8位过采样) 模块的双时钟域使得 ((New)) UART活动能把MCU从停止模式唤醒 波特率设置更方便,独立于外设总线时钟 收、发引脚可互换((New)) 支持单线半双工通信 USART特性(特性(2)) 独立的发送、接收标志(TxE和RxNE),并可触发中断 支持DMA功能,可触发DMA的发送和接收请求 支持主模式下的同步通行 支持硬件流控(CTS和RTS) 兼容LIN协议的主设备、从设备 串行红外通行编/解码模式 智能卡模式 对字块模式(T=1)的支持((New)) 对反向协议(inverse convention)的支持((New)) 支持基本的MODBus通信((New)) 地址/字符匹配 接收超时特性 USART特性(特性(3)) 多处理器通信 USART模块可进入静默模式 静默模式下关闭接收中断 可通过空闲帧检测或地址匹配检测来被唤醒 自动波特率检测((New)) 和nRTS共享引脚的用于RS485的发送使能信号 DTE ((New)) 14个中断源(13?) 比F2/F1新增5个中断源((New)) USART模块的实现模块的实现 所有封装都带2个USART:U1和U2 U2比U1所支持的功能少些,不具备 USART的扩展特性 智能卡模式 红外编解码模式 LIN总线模式 MODBus总线模式 接收超时中断 波特率自动检测 模块双时钟域以及从停止模式唤醒 4 双时钟域双时钟域 USART挂在APB总线上 通过PCLK时钟访问模块的寄存器 驱动USART内部过采样的时钟fCK有以下选择 PLCK,默认值 SYSCLK,独立于PCLK HSI,停止模式下可以被USART唤醒 LSE,低功耗模式下仍可驱动USART工作 USART1唤醒连到EXTI25 5 USART1SW[1:0] @ RCC_CFGR3 USART1 LSE 32.768KHz HSI 8MHz PCLK max 48MHz SYSCLK max 48MHz AHB分频 因子 APB分频 因子 STOP模式下 USART1仍可工作, 还可唤醒MCU fCK 6 多处理器通信环境多处理器通信环境 一主多从的通信环境 只有目标接收者收到完整的数据帧 非目标接收者保持“静默”状态,减少接收开销 使能控制位:MME@USART_CR1 接收状态位不被置位 接收中断被关闭 唤醒(退出“静默”状态)的方式 WAKE@USART_CR1=0:检测到空闲帧 WAKE@USART_CR1=1:检测到地址标志 USART2 Rx Tx USART1 Tx Rx USART3 Rx Tx USART4 Rx Tx 主设备 从设备 从设备 从设备 7 从静默状态唤醒从静默状态唤醒 地址标志唤醒 WAKE=1 总线上传输的字节由MSB=1 来表示是地址字节 地址字节的低4/7位指明目标接 收节点 USART设备自身地址的定义 ADD[3:0]@USART_CR2 ADD[7:0]@USART_CR2 ADDM7@USART_CR2 空闲帧唤醒 WAKE=0 唤醒后硬件清零RWU 并不置位IDLE@SR 8 多处理器通信下的静默模式多处理器通信下的静默模式 静默模式静默模式 唤醒方式唤醒方式 Wake =0(空闲帧) Wake =1(地址帧) 使能使能 软件置位MME@CR1(接收方可在静默和活动模式下切换) 如何进入如何进入 软件置位MMRQ 收到不匹配的地址字节; 或软件置位MMRQ 进入后的状态进入后的状态 同时置位RWU; 随后的数据不会置位 RxNE以及触发接收中断 硬件置位RWU; 收到的不匹配地址字节和后续的数据字 节都不会置位RxNE,也没有相应中断和 DMA请求; 如何退出如何退出 检测到Idle frame 收到匹配的地址字节 (MSB=1,4位或7位LSB是地址信息) 退出后退出后 硬件清零RWU; 不会置位IDEL 硬件清零RWU; 该匹配的地址字节会置位RxNE 备注备注 从停止模式唤醒从停止模式唤醒 USART可以把MCU从停止模式唤醒 使能控制:UESM@USART_CR1 建议进入停止模式前置位它,退出后就复位它 前提:时钟采用HSI或LSE 唤醒源选择:WUS@USART_CR3 RxNE置位 检测到起始位 收到匹配的地址字节 唤醒后 硬件置位WUF@ISR 如果使能了WUFIE还将产生中断 注意: 进入STOP模式前必须使能WUF中断 使用LSE作为USART时钟源时,唤醒字节波特率最高不能超 过4K(16倍采样时)、2K(8倍采样时) 9 RxNE都会置位,这个唤醒字节不会丢 和静默模式一起使用和静默模式一起使用 若MCU进入STOP模式之前,USART已进入静默模式 10 STOP模式唤醒模式唤醒 ((WUS[2:0]@CR3)) 相关控制寄存器:UESM、USART1SW、WUS、 WUFIE 相关标志寄存器:WUF 00 匹配地址 10 起始位 11 RxNE Mute模式唤醒 (wake@CR1) 相关寄存器: MMRQ、 RWU、 RxNE 0 Idle帧 1 匹配 地址 波特率自动检测波特率自动检测 USART_BRR包含由用户设置的波特率;它也可 以在自动波特率检测模式下由硬件自动更新 使能控制 @ABREN 使能检测之前,要给USART_BRR赋上非0值 检测方法选择 @ABRMOD[1:0] 以”1”开头的字符:检测起始位的长度 以”10”开头的字符:检测起始位和第一位的长度 检测阶段结束 成功检测到波特率 硬件置位ABRF、RxNE,并同时由硬件更新USART_BRR 如果线路噪声过大,检测值BRR不准确 硬件置位ABRF、RxNE,以及ABRE和FE等错误标志 无论是否成功检测,第一个数据都能接收 ABRE置位时,收到RDR中的数据可能不正确 11 可以通过软件置位ABRRQ来复位ABRF和ABRE标志,使 得再发起一次波特率自动检测 自动波特率检测时都使用16倍过采样,所能自动检测到的所能自动检测到的 波特率范围:波特率范围:f CK/65535 ≤ 位时间位时间 ≤ f CK/16 LSE(32.768KHz):允许的波特率范围是0.5~2048 HIS(8MHz):允许的波特率范围是122~500K 12 0 起始位 1 0 起始位 1 0 xxxx xxxx MODBus模式通信模式通信 由施奈德发明的用于工业现场的总线协议 有两种传输模式 RTU(远程终端设备) 消息中每个字节包含两个4位的十六进制字符 ASCII(美国信息交换码) 消息中每个字节都作为两个ASCII字符发送 USART提供对以上两种传输协议基本的支持 硬件检测数据块结尾,无需软件或其他资源干预 RTU:通过超时@USART_RTOR检测长时间的空闲总线 中 断 ASCII:通过特定的字符序列进行字符匹配 中断 协议的控制部分,地址识别、数据块完整性控制、命令 解析,需要软件实现 13 智能卡模式智能卡模式 支持ISO 7816-3标准定义的智能卡异步通信协议 单线半双工通信 TX引脚和智能卡一起驱动双向数据线,配置成AF-OD 置位CLKEN,以向智能卡提供时钟信号 收、发的数据帧格式 带校验的9位数据 & 1.5位停止位 支持字符协议(T=0)和字块协议(T = 1) 可配置的时钟分频器以提供智能卡宽泛的时钟信号范围 USART Tx SCLK 智能卡模式特性比较智能卡模式特性比较 F0 Vs. F1 Features STM32F05x STM32F1xx 智能卡模式下的最大波特率智能卡模式下的最大波特率 3Mbits/s 4.5Mbits/s T = 0 字符模式字符模式 发送出错时,根据协议发送方必 需重传数据 USART可以自动重发,并且重发的次数 可配置(最多8次) 必需由软件来处理自动重 传的要求 接收出错时,根据协议智能卡也 必需重传数据 能够重新接收的次数也是可编程的(最 多8次) 如果多次接收的数据还是有错,USART 不再发送NAK信号,而是硬件置位校验 错误标志 发送时,两个连续的字符之间自 动插入用户设置的保护时间 硬件支持 无此特性 T = 1 字块模式字块模式 字符等待超时(CWT) 使用新增的超时机制来实现 所有T=1模式下的特性都 有软件来实现 字块等待超时(BWT) 字块长度以及结尾检测 正向/反向协议 新增MSB/LSB数据位序可配置以及逻辑 电平反转的特性 New USART比以往模块新增比以往模块新增4种中断源种中断源 Interrupt event Interrupt flag Transmit Data Register Empty TXE Transmission Complete TC CTS CTSIF Receive Data Register Not Emptyy RXNE Overrun Error ORE Idle line detection IDLE Parity Error PE LIN break LBDF Noise Flag, Overrun error and Framing Error in multibuffer communication. NE, ORE, FE Character Match CMF Receiver timeout error RTOF End of Block EOBF Wakeup from STOP mode WUF 新增中断源新增中断源 CMF,字符匹配标志 收到和定义在ADD[7:0]中匹配的字符 可以用ADD[6:0]+ADD[7]=1来定义该模块的节点地址(用于从静默模式唤 醒);也可以用ADD[7:0]来定义要被识别的特殊字符 RTOF,接收超时 由RTOR寄存器定义接收超时,以波特率时钟为单位 普通模式下,从最后一个数据收到开始计时 智能卡模式下,从最后一个数据的起始位开始计时 RTOR可以动态地修改,若新值小于当前计数器,立刻置位超时 计数器即使在RE=0时也在计数,但只有RE=1了才会置位RTOF EOBF,数据块结束标志 用于智能卡通信模式 WUF,从停止模式唤醒标志 检测到由WUS定义的唤醒事件 只在停止模式下才会触发对应WUF中断 17 其他新特性其他新特性 接收、发送寄存器分开 USART_RDR USART_TDR RS485硬件控制模式 和nRTS复用的DTE信号(Data Transmit Enable) DEAT[4:0]: Driver Enable assertion time DEDT[4:0]: Driver Enable deassertion time DEP: Driver enable polarity selection DEM: Driver enable mode,DE信号从RTS引脚输出 发送、接收引脚可通过软件交换@SWAP 发送、接收使能应答 新增标志 BUSY:表示接收线上是否有。