USART简介:
串口是设备间进行同步/异步的全双工的一种通信方式。工程师常用串口显示一些调试信息.
串口通信分为物理层与协议层。
物理层:
说明:
设备A传送数据到设备B:
设备A通过控制器A将TTL电平数据通过电平转换芯片(如 max232)转换成RS-232电平标准数据,再通过DB9接口将数据传送到设备B上。
设备B通过DB9接口将接收到的RS-232电平标准数据通过电平转换芯片转换成单片机所使用的TTL电平,控制器B接收数据。
设备B传输数据到设备A与上面类似.
RS-232电平标准与TTL电平标准区别:
DB9接口:
实物图:
我们把带插头的那端称为公头,另一端称为母头。
各个接口表示的含义:
DTE与DCE:
DTE:数据终端设备,常作为信号源,比如计算机。
DCE:数据通信设备,负责数据的接收和发送的。
常用引脚:TXD(数据发送引脚),RXD(数据接收引脚)。注意:在两台设备间进行通信GND引脚必须共地。
DTE与DCE连接方式:
协议层:
一个数据是从起始信号(逻辑0表示)开始到停止信号(0.5\1\1.5个逻辑1表示)结束。
图中位0-位7表示数据位,数据位的长度可以为:5\6\7\8.
紧接着一位可选的校验位:校验有奇校验(odd),偶检验(even),1检验(mark),0检验(space),无检验(noparity).
STM32中USART功能框图:(USART只是比UART多了一个同步通信,但平时经常使用UART)
(1):在框图所有引脚中,只需要知道 TX(数据发送引脚),RX(数据接收引脚)。
stm32f103zet6芯片各个usart对应的引脚:
其中USART1挂接在APB2总线上的(一般APB2总线上的时钟频率为72MHz),USART2,USART3挂接在APB1总线上的(一般APB1总线上的时钟频率为36MHz)
(2):写数据:单片机通过PWDATA将要写的数据发送到发送数据寄存器(TDR)中,TDR寄存器再将数据发送到发送移位寄存器中,发送移位寄存器再将数据一位一位通过TX引脚发送出去。数据传输方向是:先发送低位数据(LSB)再发送高位数据(MSB).
读数据:RX引脚接收数据,将数据发送到接收移位寄存器中,移位寄存器再将数据发送到接收数据寄存器中(RDR),接收数据寄存器再将数据通过PRDATA发送给单片机。
(3):用来配置在发送/接收数据当中的一些重要参数。
发送器控制:根据CR1 CR2寄存器来控制发送数据的。发送数据中重点标志:
接收器控制: 根据相应寄存器来控制接收数据的。接收数据中重点标志:
(4):中断控制:
(5):波特率生成:
波特率:传输码元的速率。
一般发送数据的波特率与接收数据的波特率相等
波特率计算公式:
fck=APB1时钟(使用USART2/3)/APB2时钟(USART1)
USARTDIV:分频因子,通过USART_BRR寄存器配置
比如:当波特率为115200时,USART1的时钟分频因子 USARTDIV=72M/(16*115200)=39.0625
其中整数部分(DIV_Mantissa)为 39,既为0x27
小数部分(DIV_Fraction)为0.0625,即为0x01