【stm32】串口——在MCU内部的工作过程

目录

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决定了数据是否发完。

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

接收过程

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

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

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

阶段 RXNE 说明
正在接收 0 RDR空,还没数据
收满一帧 1 RDR有数据了,可以读
用户读RDR 0 数据被取走,RXNE清零
相关推荐
lzqrzpt1 小时前
临沂LED驱动电源工程选型标准与工艺对比解析
python·单片机·嵌入式硬件·物联网
小黄蚁2 小时前
使用LVGL模拟示波器创建正弦函数波形
单片机·学习
hahaha60162 小时前
黑体轨迹和色温--光源白点
人工智能·嵌入式硬件·算法·计算机视觉
Code_Solitude4 小时前
开发板点灯实验源码
stm32·单片机·嵌入式硬件
Zw-awa15 小时前
编码器读到的到底是什么:从脉冲到速度
stm32
炸膛坦客15 小时前
单片机开发工具篇:(十四)配置输出 .map 文件及其本地路径
c语言·单片机·嵌入式硬件
笨笨饿16 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
hahaha601618 小时前
色彩恒常性概述
人工智能·嵌入式硬件·数码相机·计算机视觉
我叫洋洋18 小时前
Cadence CIS 元器件库合并实战:3000+ 焊盘、156 个符号零冲突并入自有库
数据库·单片机·嵌入式硬件·oracle·电路