☰
【stm32】串口——在MCU内部的工作过程
2026/10/5 6:52:49 网站建设 项目流程

目录

USART的简图和简单理解

不考虑帧格式的收发过程

考虑帧格式

详细过程

接收过程


USART的简图和简单理解

CPU是怎么控制USART的?——控制USART内部的寄存器

在参考手册内部有USART内部的图,但是过于复杂,先看简化的图,搞懂基本原理。

不考虑帧格式的收发过程

考虑帧格式

先看看寄存器

这个数据寄存器有两个,一个是TDR一个是RDR那他们为什么指向同一块物理地址?

官方并没有披露,推测是在控制地址总线的时候他的读写方向不一致,就把读写两个不同的方向看成两个不同的寄存器了。

详细过程

主要过程:

CPU把数据通过数据总线发送到USART内部,通过发送数据寄存器(TDR)暂存。

TDR并行数据移动到发送移位寄存器(USART自己做的),在RCC的驱使下逐位串行移动到接收方。

万一发送移位寄存器在发送的时候,又在TDR写入数据了怎么办?

因此就有了状态寄存器

TXE(Transmit Data Register Empty):TDR空了,可以写下一个数据了。

TC(Transmission Complete):整帧发完了,包括移位寄存器也空了。

要等TXE决定了能不能把数据是否为空,TC决定了数据是否发完。

阶段TXETC用户能做什么
刚写入TDR00等待
搬到移位寄存器10可以写下一个
正在发送10可以写下一个
整帧发完11可以关USART/切模式

接收过程

他也有一个寄存器进行辅助。

RXNE(Read data register Not Empty):接收数据寄存器非空。

RXNE=1 表示 RDR 里有数据了,用户可以读了。

阶段RXNE说明
正在接收0RDR空,还没数据
收满一帧1RDR有数据了,可以读
用户读RDR0数据被取走,RXNE清零

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询