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

[复制链接]
 楼主| 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

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

16

主题

122

帖子

0

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