2013-08-26 29 views
0

我正在研究一个包含两个半双工UARTS和一个全双工UART的嵌入式项目。如何在两个半双工串行端口之间创建隧道?

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

当UART1上的信号被触发时,UART2从Device B获取一些数据。该数据被放入缓冲区,然后被传送回UART1和UART3。设备A消耗数据,并在UART1上发送更多的项目,然后必须传递给UART2,以便设备B响应。

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

回答

0

我不认为你需要一个状态机来处理这种情况。为什么不相应地连接所有中断,只是将从一个设备接收的任何事情转发给其他设备呢?

您可能希望包含一个TX(环形)缓冲区来适应每个UART的不同速度,然后只需让RX-ISR将接收到的数据写入相应的TX缓冲区,被其他UART的UDRE-ISR消耗掉。