通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换
USART利用分数波特率发生器提供宽范围的波特率选择,它支持同步单向通信和半双工单线通信,还允许多处理器通信
USART的主要特性如下:
- 全双工的,异步通信
- NRZ标准格式
- 分数波特率发生器系统(发送和接收共用的可编程波特率,最高达4.5Mbits/s)
- 可编程数据字长度(8位或9位)
- 可配置的停止位-支持1或2个停止位
- 发送方为同步传输提供时钟
- 单独的发送器和接收器使能位
- 检测标志(接收缓冲器满,发送缓冲器空,传输结束标志)
- 校验控制(发送校验位,对接收数据进行校验)
接口通过三个引脚与其他设备连接在一起
- RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据
- TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活, 并且不发送数据时,TX引脚处于高电平
寄存器方面:
- 一个状态寄存器(USART_SR)
- 数据寄存器(USART_DR)
- 一个波特率寄存器(USART_BRR),12位的整数和4位小数
- 一个智能卡模式下的保护时间寄存器(USART_GTPR)
字长可以通过编程USART_CR1寄存器中的M位,选择成为8或9位。在起始位期间,TX
脚处于低电平,在停止位期间处于高电平。
空闲符号被视为完全由’1’组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位(‘1’
的位数也包括了停止位的位数)。
断开符号 被视为在一个帧周期内全部收到’0’(包括停止位期间,也是’0’)。在断开帧结束时,发
送器再插入1或2个停止位(‘1’)来应答起始位。
发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其 产生时钟。
在USART发送期间,在TX引脚上首先移出数据的最低有效位。在此模式里,USART_DR寄存器包含了一个内部总线和发送移位寄存器之间的缓冲器。每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置
在USART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,USART_DR寄存器包 含的缓冲器位于内部总线和接收移位寄存器之间
分数波特率的产生
接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同
USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器
注意:在写入USART_BRR之后,波特率计数器会被波特率寄存器的新值替换。因此,不要在通信进行中改变波特率寄存器的数值
USART的寄存器
可以用半字(16位)或字(32位)的方式操作这些外设寄存器
- 状态寄存器(USART_SR)
- 数据寄存器(USART_DR)
- 波特比率寄存器(USART_BRR)
- 控制寄存器 1(USART_CR1)
- 控制寄存器 2(USART_CR2)
- 控制寄存器 3(USART_CR3)
- 保护时间和预分频寄存器(USART_GTPR)