【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清零
相关推荐
Lxx_Zw10 小时前
机器周期与共地:时钟基准和电压参考基准
stm32·单片机·嵌入式硬件
我叫洋洋11 小时前
用 Qoder(AI 编程助手)把 Cadence 16.6 从零配到能画板
人工智能·单片机·嵌入式硬件·电路·1024程序员节
Zw-awa12 小时前
LED 灯珠与限流电阻
stm32
深圳老胡13 小时前
STM32 开发中 Trae 内置模型怎么选:Seed、MiniMax、GLM、DeepSeek、Kimi、Qwen 全对比
笔记·stm32·单片机·嵌入式硬件·代码规范·1024程序员节
传感器与混合集成电路13 小时前
多计算节点怎么融合?全国产通用融合计算机三子卡架构与任务配置方法
嵌入式硬件·1024程序员节
西安同步电子15 小时前
时统卡驱动踩坑:Windows 和 Linux 下时间同步的底层差异
linux·stm32·单片机
xiangw@GZ15 小时前
Keysight示波器型号命名规范
嵌入式硬件
女神下凡15 小时前
芯参谋(69):LED恒流驱动芯片电路设计指南
arm开发·人工智能·单片机·嵌入式硬件·设计规范
wanglong371316 小时前
Keil编译后自动重命名HEX文件
单片机·1024程序员节
iCxhust16 小时前
stm32f103c8t6 boot0设置
stm32·单片机·嵌入式硬件·1024程序员节