目录
前言
上一期我们学习了串口通信的相关知识,了解了串口通讯工作的相关原理(上一期:stm32入门-----串口协议-CSDN博客)。本期我们就开始进一步学习串口通信协议,这里我们学习最常见的USART协议,这个协议对大家来说都不陌生的,在我们学习51单片机的时候就已经用过这个协议了,我们就是用这个协议来去烧录.hex文件到单片机上的,那么本期就详细学习这个协议在stm32中具体是怎么工作的,下一期我们就通过这个协议进行项目实操。(视频:[9-2] USART串口外设_哔哩哔哩_bilibili)
USART
1.基本概念
- USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器
- USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
- 自带波特率发生器,最高达4.5Mbits/s
- 可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
- 可选校验位(无校验/奇校验/偶校验)
- 支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
- STM32F103C8T6 USART资源: USART1、 USART2、 USART3
2.结构与框图
下面是USART的框图,这里主要是有两个输入输出信号口分别是RX和TX,当要进行发送信号的时候,这里会把发送信号写入到发送数据寄存器,然后由低位到高位从右到左依次进入到发送移位寄存器,此时发送移位寄存器装填完成之后就会进入到信号进入到发送控制器去进行发送;当接收到信号的时候就会从接收到的信号依次从右到左由地位到高位进入到接受移位讲清楚,然后进入到接受数据寄存器,跟发送刚好是反过来的,这两个寄存器是具有缓存作用的,以保证发生和接收到的信号准确性。
结构简化图如下:
3.数据帧
发送器根据
M
位的状态发送
8
位或
9
位的数据字。当发送使能位
(TE)
被设置时,发送移位寄存器
中的数据在
TX
脚上输出,相应的时钟脉冲在
CK
脚上输出。
字符发送
在
USART
发送期间,在
TX
引脚上首先移出数据的最低有效位。在此模式里,
USART_DR
寄存
器包含了一个内部总线和发送移位寄存器之间的缓冲器
(
见图
248)
。
每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置。
USART
支持多种停止位的配置:
0.5
、
1
、
1.5
和
2
个停止位。
注:
1
.在数据传输期间不能复位
TE
位,否则将破坏
TX
脚上的数据,因为波特率计数器停止计数。
正在传输的当前数据将丢失。
2
.
TE
位被激活后将发送一个空闲帧。
可配置的停止位
随每个字符发送的停止位的位数可以通过控制寄存器
2
的位
13
、
12
进行编程。
1. 1
个停止位:停止位位数的默认值。
2. 2
个停止位:可用于常规
USART
模式、单线模式以及调制解调器模式。
3. 0.5
个停止位:在智能卡模式下接收数据时使用。
4. 1.5
个停止位:在智能卡模式下发送和接收数据时使用。
空闲帧包括了停止位。
断开帧是
10
位低电平,后跟停止位
(
当
m=0
时
)
;或者
11
位低电平,后跟停止位
(m=1
时
)
。不可能
传输更长的断开帧
(
长度大于
10
或者
11
位
)
。
噪音错误
使用过采样技术
(
同步模式除外
)
,通过区别有效输入数据和噪音来进行数据恢复。
4.波特率发生器
- 发送器和接收器的波特率由波特率寄存器BRR里的DIV确定
- 计算公式:波特率 = fPCLK2/1 / (16 * DIV)
以上是本期的内容,我们下一期见!
今日壁纸: