一、概念

USART 通用 同步异步收发器,全双工数据交换,利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和irDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTX/RTS)操作。它还允许多处理器通信 。 用多缓冲器配置的DMA方式,可以实现高速数据通信。


STM32 有3个USART接口(通用同步/异步接收、发送端口,比UART增强了同步功能)

STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S

  • 全双工异步通信
  • 单线半双工通信
  • 使用DMA的可配置的多缓冲通信
  • 单独的发送器和接收器使能位
  • 检测标示  接收缓冲器满,发送缓冲器空 传输结束标志
  • 校验控制  发送检验位 对接收数据进行检验(奇偶校验)
  • 四个错误检测标志
  • 10个带标志的中断源

任何USART通信,需要用到 2个对外连接的引脚:RxD、TxD SCLK:发送器时钟输出(同步模式用到)

在IrDA模式里需要下列引脚: IrDA_RDI:IrDA模式下的数据输入 IrDA_TDO:IrDA模式下的数据输出

调制解调模式中需要: nCTS:清除发送 nRTS:发送请求


数据接收过程:


STM32 学习七 USART通信1_芯片


数据发送过程:


STM32 学习七 USART通信1_arm_02



异步串行通信协议需要定义以下5个内容:



  1. 起始位
  2. 数据位(8、9)
  3. 奇偶校验位(9位包含)
  4. 停止位(1、1.5、2周期)
  5. 波特率设置(速度)

范围解析:


STM32 学习七 USART通信1_arm_03



应用场合:



  1. 芯片间近距离通信
  2. 与PC机通信
  3. 模块间远距离通信

芯片通信连接示意图:        STM32 学习七 USART通信1_arm_04


PC机通信连接示意图: STM32 学习七 USART通信1_stm32_05


RS-485接口最大传输距离可达3000米,最高传输速率10Mbps: STM32 学习七 USART通信1_芯片_06




二、数据发送过程

USART框图:

STM32 学习七 USART通信1_芯片_07

1.USART特征描述

通过USART_CR1寄存器M位,选择成8位或9位。起始位期间,TX脚处于低电平,在停止位期间处于高电平。

空闲符号被视为完全由“1”组织的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位。

断开符号被视为在一个帧周期内全部收到“0”(包括停止位期间也是0)。在断开帧结束时,发送器再插入1或2个停止位来应答起始位。

发送和接收由一共用的波特率发生器鸡翅。

2.USART寄存器描述

(1)状态寄存器(USART_SR)

STM32 学习七 USART通信1_芯片_08

(2)数据寄存器(USART_DR)

位8:0

DR[8:0]:数据值
包含了发送或接收的数据。由于它是由两个寄存器组成的,一个
接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供
器之间的并行接口(参见图1)。RDR寄存器提供了输入移位寄
接口。
当使能校验位(USART_CR1种PCE位被置位)进行发送时,写
度不同,MSB是第7位或者第8位)会被后来的校验位该取代。
当使能校验位进行接收时,读到的MSB位是接收到的校验位。

(3)波特率寄存器(USART_BRR)

位31:16 保留位

位15:4 DIV_Mantissa[11:0]:DIV的小数部分
             这12位定义了USART分频器除法因子(DIV)的小数部分

位3:0   DIV_Fraction[3:0] 
            这4位定义了USART分频器除法因子(DIV)的整数部分

(4)控制寄存器1(USART_CR1)

数据发送过程:

(i)在USART_CR1 UE位使能(1);

(ii)编程USART_CR1的M位来定义字长;

(iii)在USART_CR2中定义STOP停止位;


      如果采用多缓冲器通信,配置DMA使能;

(iv)设置USART_CR1的TE位,发送一个空闲帧作为第一次数据发送;

(v)利用USART_BRR寄存器选择要求的波特率;

(vi)把要发送的数据写进USART_DR寄存器(此动作清除TXE位)。

在只有一个缓冲器的情况下,对每个待发送的数据重复步骤7.

数据接收过程:

(i)在USART_CR1 UE位使能(1);

(ii)编程USART_CR1的M位来定义字长;

(iii)在USART_CR2中定义STOP停止位;


      如果采用多缓冲器通信,配置DMA使能;

(iv)设置USART_CR1的RE位,激活接收器,使它开始寻找起始位;

RXNE位被置位,它表明移位寄存器的内容被转移到RDR。如果RXNEIE位被设置,产生中断。

在接收期间如果检测到帧错误,噪音或溢出错误,(USART_SR)错误标志将被置起。



(5)控制寄存器2(USART_CR2)

(6)控制寄存器3(USART_CR3)

(7)保护时间和预分频寄存器(USART_GTPR)

三、引脚图示



我用的是STM32C8T6最小板,接口如下:


STM32 学习七 USART通信1_arm_09


STM32通过PA9、PA10连接MAX3232(或SP) STM32 学习七 USART通信1_芯片_10


STM32 学习七 USART通信1_stm32_11


USART功能图:


STM32 学习七 USART通信1_芯片_12



STM32 有3个USART接口(通用同步/异步接收、发送端口,比UART增强了同步功能)

STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S

STM32 有3个USART接口(通用同步/异步接收、发送端口,比UART增强了同步功能)

STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S


我用的是STM32C8T6最小板,接口如下:


STM32 学习七 USART通信1_arm_09


STM32通过PA9、PA10连接MAX3232(或SP) STM32 学习七 USART通信1_芯片_10


STM32 学习七 USART通信1_stm32_11

每个USART有7个设置寄存器,

  • 状态寄存器:USART_SR
  • 数据寄存器:USART_DR
  • 波特率寄存器:USART_BRR
  • 控制寄存器1:USART_CR1
  • 控制寄存器2:USART_CR2
  • 控制寄存器3:USART_CR3
  • 保护时间和预分频寄存器:USART GTPR


USART功能图:

STM32 学习七 USART通信1_芯片_12