如何在两个半双工串口之间创建隧道?

时间:2013-08-26 21:13:15

标签: embedded microcontroller avr uart atmega

我正在开发一个嵌入式项目,其中包括两个半双工UARTS和一个全双工UART。

UART1连接到Device A.UART2连接到Device B,UART3连接到PC。 UART1和UART2是半双工的,因此必须正确配置RX / TX模式。

当UART1上的信号被触发时,UART2从器件B中取出一些数据。该数据被放入缓冲器,然后传回UART1和UART3。设备A使用数据,并在UART1上发送更多项目,然后必须将其传递给UART2以便设备B响应。

我正在考虑一种能够处理TX / RX模式之间切换模式的高效状态机,到目前为止,我的UART代码是中断驱动的。有什么方法可以解决这个项目的流程?

1 个答案:

答案 0 :(得分:0)

对于这种情况,我认为你不需要状态机。为什么不相应地挂断所有中断,只是将从一个devivce收到的任何内容转发给其他中断?

您可能希望包含TX(环形)缓冲区以适应每个UART的不同速度,然后让RX-ISR将接收到的数据写入适当的TX缓冲区,然后从那里开始由其他UART的UDRE-ISR消耗。