2013-08-26 74 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消耗掉。