STM32 学习七 USART通信1

一、概念

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:发送请求

数据接收过程:


数据发送过程:



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

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

范围解析:



应用场合:

  1. 芯片间近距离通信
  2. 与PC机通信
  3. 模块间远距离通信
芯片通信连接示意图:
      

PC机通信连接示意图:


RS-485接口最大传输距离可达3000米,最高传输速率10Mbps:



二、数据发送过程

USART框图:

1.USART特征描述

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

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

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

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

2.USART寄存器描述

(1)状态寄存器(USART_SR)


(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通过PA9、PA10连接MAX3232(或SP)




USART功能图:


STM32 有3个USART接口(通用同步/异步接收、发送端口,比UART增强了同步功能)
STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S




STM32 有3个USART接口(通用同步/异步接收、发送端口,比UART增强了同步功能)
STM32的USART串口,采用分数波特率发生器,最高速率=72M/16=4.5Mb/S





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



STM32通过PA9、PA10连接MAX3232(或SP)



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

USART功能图:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值