首页 > 技术文章 > STM32之USART(一)

nwjlq 2020-05-04 19:28 原文

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

推荐阅读