[信息] STM32 串口收发是操作同一个数据寄存器,为什么能实现全双工?

[复制链接]
1613|6
 楼主| OKAKAKO 发表于 2024-2-28 21:00 | 显示全部楼层 |阅读模式
STM32 串口收发是操作同一个数据寄存器,为什么能实现全双工?
[color=rgba(0, 0, 0, 0.9)]串口是支持全双工工作的,也就是在收数据的时候同时也能发数据:

4340765ddff0e5d477.png
串口支持全双工一样,上面的问题自然都不存在,写的同时来了一个数据,自然发送的仍然是你写入寄存器的数据,后面读取的仍然是你接收到的数据,两者即使同时发生,也不会冲突。

数据寄存器拥有双重功能(读和写),因其实际上由两个寄存器组成,一个是发送寄存器(TDR),另一个是接收寄存器(RDR)。
TDR 提供了内部总线与输出位移寄存器之间的并行接口。
RDR 提供了内部总线与输入位移寄存器之间的并行接口。
看到这里应该就明白了,虽然表面上是一个寄存器 DR ,但其内部硬件实际上是由两个寄存器组成的,也就是说我们在执行读取和写入命令的时候,表面上软件操作的是一个寄存器,但实际上在硬件上是操作到了两个独立的寄存器 TDR 和 RDR,自然就不可能出现冲突了!


药无尘 发表于 2024-2-29 11:13 | 显示全部楼层
很明显啊,接收个发送是两个寄存器,哪里来一个寄存器只说
probedog 发表于 2024-2-29 11:29 | 显示全部楼层
全双工通信意味着发送和接收操作可以同时进行,互不干扰。
digit0 发表于 2024-2-29 11:34 | 显示全部楼层
最终应该是两个寄存器吧。
LinkMe 发表于 2024-2-29 11:35 | 显示全部楼层
数据寄存器拥有双重功能(读和写),其中读写就是两个寄存器
laocuo1142 发表于 2024-2-29 13:00 | 显示全部楼层
虽然STM32的串口通过同一个物理端口进行数据的发送和接收,但其内部设计确保了发送和接收过程是相互独立的,从而实现了全双工通信。
狄克爱老虎油 发表于 2024-2-29 17:42 | 显示全部楼层
虽然一个地址,但是有两套存储器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

260

主题

2096

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部