通用同步异步收发器[USART]
1. USART功能概述
接口通过三个引脚与其他设备连接在一起。任何USART双向通信至少需要两个脚:接
收数据输入(RX)和发送数据输出(TX)。
RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。
TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
- 总线在发送或接收前应处于空闲状态
- 一个起始位
- 一个数据字(8或9位),最低有效位在前
- 0.5,1.5,2个的停止位,由此表明数据帧的结束
- 使用分数波特率发生器 —— 12位整数和4位小数的表示方法。
- 一个状态寄存器(USART_SR)
- 数据寄存器(USART_DR)
- 一个波特率寄存器(USART_BRR),12位的整数和4位小数
- 一个智能卡模式下的保护时间寄存器(USART_GTPR)
2.USART 特性描述
字长可以通过编程USART_CR1寄存器中的M位,选择成8或9位(见图249)。在起始位期间,TX脚处于低电平,在停止位期间处于高电平。
空闲符号被视为完全由’1’组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位(‘1’的位数也包括了停止位的位数)。
断开符号 被视为在一个帧周期内全部收到’0’(包括停止位期间,也是’0’)。在断开帧结束时,发送器再插入1或2个停止位(‘1’)来应答起始位。
发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其产生时钟。
3.发送器
3.1 字符发送
发送器根据M位的状态发送8位或9位的数据字。当发送使能位(TE)被设置时,发送移位寄存器中的数据在TX脚上输出,相应的时钟脉冲在CK脚上输出。
字符发送在USART发送期间,在TX引脚上首先移出数据的最低有效位。在此模式里,USART_DR寄存器包含了一个内部总线和发送移位寄存器之间的缓冲器。每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置。USART支持多种停止位的配置:0.5、1、1.5和2个停止位。
注: 1.在数据传输期间不能复位TE位,否则将破坏TX脚上的数据,因为波特率计数器停止计数。正在传输的当前数据将丢失。
2. TE位被激活后将发送一个空闲帧。
3.2可配置的停止位
随每个字符发送的停止位的位数可以通过控制寄存器2的位13、12进行编程。
- 1个停止位:停止位位数的默认值。
- 2个停止位:可用于常规USART模式、单线模式以及调制解调器模式。
- 0.5个停止位:在智能卡模式下接收数据时使用。
- 1.5个停止位:在智能卡模式下发送和接收数据时使用。
空闲帧包括了停止位。
断开帧是10位低电平,后跟停止位(当m=0时);或者11位低电平,后跟停止位(m=1时)。不可能传输更长的断开帧(长度大于10或者11位)。
配置步骤:
- 通过在USART_CR1寄存器上置位UE位来激活USART
- 编程USART_CR1的M位来定义字长。
- 在USART_CR2中编程停止位的位数。
- 如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。
- 利用USART_BRR寄存