打印
[MCU]

uart单线双向通信软硬件实现方式

[复制链接]
9238|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tang221986|  楼主 | 2014-2-12 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用一根线连接两个串口实现双向通信,网上搜了一下看到stm的uart有个单线半双工通信方式,如下

STM8 单线半双工通信

UART可以配置成遵循单线半双工协议。单线半双工模式通过设置UART_CR5寄存器的HDSEL位实现。在该模式下,下面的位必须保持清零状态:

  • UART_CR3寄存器的LINEN和CLKEN位
  • UART_CR5寄存器的SCEN和IREN位

注意:该功能只适用于STM8的UART1。

当HDSEL写'1'时

  • UART_RX不再被使用 。
  • 当没有数据传输时,UART_TX处于释放状态。因此,它在空闲状态的或接收状态时表现为一个标准I/O口。这就意味该I/O在不被UART驱动时,必须配置成悬空输入(或开漏的输出高)。

除此以外,通信与正常UART模式类似。要注意的是必须由软件来管理线上的冲突(例如通过使用一个中央仲裁器)。特别的是,发送从不会被硬件所阻碍。当TE位被设置时,只要数据一写到数据寄存器上,发送就继续。



1.其中不太理解怎样用软件来管理冲突(即使用中央仲裁器),比如会出现两边同时发送或同时接受的状态,希望大家能解释一下实现原理。谢谢!
2.这种通信方式的设置在硬件上需要加电路吗
3.还有什么其他方式实现单向双向通信吗

相关帖子

沙发
airwill| | 2014-2-14 20:38 | 只看该作者
同时接受不是问题, 同时发送就存在冲突. 可以通过协议来保证不冲突, 或者就需要仲裁手段了.

使用特权

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

本版积分规则

16

主题

122

帖子

0

粉丝