我想用一根线连接两个串口实现双向通信,网上搜了一下看到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.还有什么其他方式实现单向双向通信吗
|