通用收发器(USART)
1. USART介绍
1.通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
2.USART利用分数波特率发生器提供宽范围的波特率选择。
3.支持同步单向通信和半双工单线通信
2. 主要特征
起始位:低电平有效
数据位:8/9位
校验位:无/奇偶校验
停止位:高电平有效
波特率:单位时间内发送数据的个数。(9600:1s内传输9600个二进制)
TX------RX
RX------TX
GND-----GND
3. 常用单片机通讯
USART RS485 RS232 RS422 SPI IIC IIS
单片机中通讯作用:实现数据交互
3.1 通讯分类
串行:一根线接收,一根线发送;
并行:多根线收发,速度一般高于串行; 8080 6800
同步:硬件上有同步时钟线(软件编程简单)
异步:硬件上没有同步时钟线(软件编写困难)
全双工:收发两条路,同时收发;
半双工:能收发,但是不能同时收发;
单工:只能发不能收,单向通信;
USART: 串行异步全双工
4. 功能概述
任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。
RX:接收数据串行输。
TX:发送数据输出。
总线在发送或接收前应处于空闲状态
● 一个起始位
● 一个数据字(8或9位),最低有效位在前
● 0.5,1.5,2个的停止位,由此表明数据帧的结束
● 使用分数波特率发生器 —— 12位整数和4位小数的表示方法。
● 一个状态寄存器(USART_SR)
● 数据寄存器(USART_DR)
● 一个波特率寄存器(USART_BRR),12位的整数和4位小数
CK:发送器时钟输出。此引脚输出用于同步传输的 时钟
5. 特性描述
5.1 字长
通过USART_CR1寄存器选择M位,选择成8或9位 。
USART支持多种停止位的配置: 0.5、 1、1.5和2个停止位 ,以9位字长为例,设置M位,一个停止位。
起始位期间, TX脚处于低电平,在停止位期间处于高电平 。
5.2 接收器
根据USART_CR1的M位接收8位或9位的数据字 。
在USART中,如果辨认出一个特殊的采样序列,那么就认为侦测到一个起始位 。
该序列为: 1 1 1 0 X 0 X 0 X 0 0 0 0
字符接收:在USART接收期间,数据的最低有效位首先从RX脚移进。在此模式里, USART_DR寄存器包含的缓冲器位于内部总线和接收移位寄存器之间。
5.3 波特率
T x / R x 波特率= ∗ 16 ( U S A R T D I V ) f C K Tx / Rx 波特率 = *16( USARTDIV ) fCK Tx/Rx波特率=∗16(USARTDIV)fCK
USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器。
这里的fCK是给外设的时钟(PCLK1用于USART2、 3、 4、 5, PCLK2用于USART1)
以9600为例:
DIV=72000000/16/brr;
Mantissa=(int)DIV;
Fr = (DIV - Mantissa)*16;
USART1->BRR = (Mantissa<<4) | (Fr);
DIV=72000000/16/brr;
Mantissa=(int)DIV;
Fr = (DIV - Mantissa)*16;
USART1->BRR = (Mantissa<<4) | (Fr);