打印
[信息]

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

[复制链接]
910|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-2-28 21:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM32 串口收发是操作同一个数据寄存器,为什么能实现全双工?
[color=rgba(0, 0, 0, 0.9)]串口是支持全双工工作的,也就是在收数据的时候同时也能发数据:


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

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


使用特权

评论回复
沙发
药无尘| | 2024-2-29 11:13 | 只看该作者
很明显啊,接收个发送是两个寄存器,哪里来一个寄存器只说

使用特权

评论回复
板凳
probedog| | 2024-2-29 11:29 | 只看该作者
全双工通信意味着发送和接收操作可以同时进行,互不干扰。

使用特权

评论回复
地板
digit0| | 2024-2-29 11:34 | 只看该作者
最终应该是两个寄存器吧。

使用特权

评论回复
5
LinkMe| | 2024-2-29 11:35 | 只看该作者
数据寄存器拥有双重功能(读和写),其中读写就是两个寄存器

使用特权

评论回复
6
laocuo1142| | 2024-2-29 13:00 | 只看该作者
虽然STM32的串口通过同一个物理端口进行数据的发送和接收,但其内部设计确保了发送和接收过程是相互独立的,从而实现了全双工通信。

使用特权

评论回复
7
狄克爱老虎油| | 2024-2-29 17:42 | 只看该作者
虽然一个地址,但是有两套存储器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

1449

帖子

4

粉丝