STM32学习——USART学习

这里写目录标题

  • USART是什么?
  • 通信格式
  • USART用途
  • STM32的USART资源
  • USART数据帧
  • USART特性
    • USART波特率
    • USART特性分析
    • USART功能说明
  • 框图分析
  • 小数波特率发生器
  • USART寄存器
    • 状态寄存器 (USART_SR)
    • 控制寄存器 1 (USART_CR1)
  • 程序配置

USART是什么?

USART(Universal Synchronous Asynchronous Receiver Transmitter)通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,它在USART基础上裁剪掉了同步通信功能,只有异步通信。

通信格式

串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。

USART用途

1、可以连接STM32和电脑端通信。
2、可以连接STM32和WiFi。
3、可以连接STM32和传感器(指纹模块MG200)。

STM32的USART资源

例如STM32F407ZGT6芯片,有6个USART+UART
USART1, USART2, USART3, USART6
UART4, UART5

USART数据帧

STM32学习——USART学习_第1张图片
数据帧组成:起始位+数据位+校验位+停止位
1、起始位:目的是告知接收方接收数据,0有效
2、数据位:可以被编程(5,6,7,8),一般选择8位字长可以编程:数据位+校验位
3、校验位:奇偶校验位
4、停止位:可以被编程STM32学习——USART学习_第2张图片

USART特性

USART波特率

波特率指的是USART的数据传输速率。
常用的波特率:9600bit/s,76800bit/s,115200bit/s

USART特性分析

1、串行全双工
2、可配置为 16 倍过采样或 8 倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能
STM32学习——USART学习_第3张图片

3、数据字长度可编程(8 位或 9 位)
数据字长=数据位+校验位
数据位:8bit
校验位:1bit //常规情况下,不用校验位
数据字长:9bit
4、停止位可配置 - 支持 1 或 2 个停止位

5、单线半双工通信
在单线和智能卡模式下,该 I/O用于发送和接收数据(USART 电平下,随后在 SW_RX 上接收数据)。

6、发送器和接收器具有单独使能位
使能发送器,关闭接收器,此时USART就是单工通信
使能发送器和接收器,此时USART就是全双工通信

7、传输检测标志:
— 接收缓冲区已满
— 发送缓冲区为空
— 传输结束标志

USART功能说明

任何 USART 双向通信均需要 至少两个引脚:接收数据输入引脚 (RX) 和发送数据引脚输出 (TX):
RX:接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从 而用于恢复数据。
TX:发送数据输出引脚。如果关闭发送器,该输出引脚模式由其 I/O 端口配置决定。如果使能了发送器但没有待发送的数据,则 TX 引脚处于高电平。在单线和智能卡模式下,该 I/O 用于发送和接收数据(USART 电平下,随后在 SW_RX 上接收数据)。
正常 USART 模式下,通过这些引脚以帧的形式发送和接收串行数据:
● 发送或接收前保持空闲线路
● 起始位
● 数据(字长 8 位或 9 位),最低有效位在前
● 用于指示帧传输已完成的 0.5 个、1 个、1.5 个、2 个停止位
● 该接口使用小数波特率发生器 - 带 12 位尾数和 4 位小数
● 状态寄存器 (USART_SR)
● 数据寄存器 (USART_DR)
● 波特率寄存器 (USART_BRR) - 12 位尾数和 4 位小数。

在同步模式下连接时需要以下引脚:
● SCLK:发送器时钟输出。该引脚用于输出发送器数据时钟,以便按照 SPI 主模式进行同步发送始位和结束位上无时钟脉冲,可通过软件向最后一个数据位发送时钟脉冲)。RX 上可同步接收并行数据。这一点可用于控制带移位寄存器的外设(如 LCD 驱动器)。时钟相位和极性可通过软件编程。在智能卡模式下,SCLK 可向智能卡提供时钟。
在硬件流控制模式下需要以下引脚:
● nCTS:“清除以发送”用于在当前传输结束时阻止数据发送(高电平时)
● nRTS:“请求以发送”用于指示 USART 已准备好接收数据(低电平时)。

框图分析

STM32学习——USART学习_第4张图片
1、数据寄存器:DR
对于USART来说,其数据寄存器具有双重功能。当发送数据时,数据寄存器DR被用作发送数据寄存器(TDR–发送缓冲区);当接收数据时,数据寄存器DR被用作接收数据寄存器(RDR–接收缓冲区)。
2、发送移位寄存器
DR和发送移位寄存器之间是并行接口,即TDR可以直接将8bit数据一次性全部放在移位寄存器中,然后移位寄存器会将来自TDR的8bit数据一位一位的发送出去。串行通信都会有移位寄存器。
3、数据的发送过程
发送的数据:”HELLO WORLD”
第一次发送:‘H’放到TDR-》发送移位寄存器-》’E’放到TDR
第二次发送:等待发送移位寄存器为空-》TDR将‘E’放到移位寄存器
4、数据的接收过程
接收的数据:”HELLO WORLD”
第一次接收:‘H’放到-》发送移位寄存器-》RDR
第二次接收:‘E’放到-》发送移位寄存器-》RDR为空-》放到RDR

小数波特率发生器

STM32学习——USART学习_第5张图片

USART寄存器

状态寄存器 (USART_SR)

用来观察发送器和接收器的状态
STM32学习——USART学习_第6张图片
TXE:发送数据寄存器为空 (Transmit data register empty)
当 TDR 寄存器的内容已传输到移位寄存器时,该位由硬件置 1。如果 USART_CR1 寄存器
中 TXEIE 位 = 1,则会生成中断。通过对 USART_DR 寄存器执行写入操作将该位清零。
0:数据未传输到移位寄存器
1:数据传输到移位寄存器
注意:单缓冲区发送期间使用该位。

TC:发送完成 (Transmission complete)
如果已完成对包含数据的帧的发送并且 TXE 置 1,则该位由硬件置 1。如果 USART_CR1 寄存
器中 TCIE = 1,则会生成中断。该位由软件序列清零(读取 USART_SR 寄存器,然后写入
USART_DR 寄存器)。TC 位也可以通过向该位写入‘0’来清零。建议仅在多缓冲区通信
时使用此清零序列。
0:传送未完成
1:传送已完成

RXNE:读取数据寄存器不为空 (Read data register not empty)
当 RDR 移位寄存器的内容已传输到 USART_DR 寄存器时,该位由硬件置 1。如果
USART_CR1 寄存器中 RXNEIE = 1,则会生成中断。通过对 USART_DR 寄存器执行读入
操作将该位清零。RXNE 标志也可以通过向该位写入零来清零。建议仅在多缓冲区通信时使
用此清零序列。
0:未接收到数据
1:已准备好读取接收到的数据

IDLE:检测到空闲线路 (IDLE line detected)
检测到空闲线路时,该位由硬件置 1。如果 USART_CR1 寄存器中 IDLEIE = 1,则会生成中
断。该位由软件序列清零(读入 USART_SR 寄存器,然后读入 USART_DR 寄存器)。
0:未检测到空闲线路
1:检测到空闲线路
注意:直到 RXNE 位本身已置 1 时(即,当出现新的空闲线路时)IDLE 位才会被再次置 1。

控制寄存器 1 (USART_CR1)

在这里插入图片描述
OVER8:过采样模式 (Oversampling mode)
0:16 倍过采样
1:8 倍过采样
注意:8 倍过采样在智能卡、IrDA 和 LIN 模式下不可用:当 SCEN=1、IREN=1 或 LINEN=1 时,
OVER8 由硬件强制清零

UE:USART 使能 (USART enable)
该位清零后,USART 预分频器和输出将停止,并会结束当前字节传输以降低功耗。此位由软
件置 1 和清零。
0:禁止 USART 预分频器和输出
1:使能 USART

M:字长 (Word length)
该位决定了字长。该位由软件置 1 或清零。
0:1 起始位,8 数据位,n 停止位
1:1 起始位,9 数据位,n 停止位
注意:在数据传输(发送和接收)期间不得更改 M 位

程序配置

例如:使用USART1通信
1、开时钟:APB2—USART1; AHB1—GPIOA
2、对PA9和PA10进行初始化:工作模式—复用模式
3、指定将PA9和PA10复用为USART1_TX和USART1_RX
4、USART1进行初始化=》波特率,硬件流控制,校验位,模式,停止位,字长
5、使能USART1

你可能感兴趣的:(笔记,stm32,单片机,学习)