有時候由於需要,需要用到UART的單線半雙工模式,比如一個從設備只有一根信號線進行收發,主設備希望使用UART來進行通信,或者就是單純的為了減少走線數量,雖然只減少了一根,我也不知道這有多大的意義?
UART單線半雙工模式速度最高只有14400(根據Microchip的AN2658文檔),以下是文檔中的電路(為了好分析,照着樣子重新畫了下,使其有位號)。
工作分析:
1. RXD為單總線的數據線,即兩個設備之間的通信線。
2. 當發送數據時,TXD為高,Q1導通,Q2截止,從而RXD為高,發送1;反之TXD為低時,發送0.
3. 當接受數據時,TXD需要設置為開漏輸出高,即Q1導通,Q2截止,這時RXD的狀態受對方控制,即對方發送0,則RXD被拉低,這時接收0;對方發送1,RXD被拉高,這時接收1.
另外還有使用一個三極管的電路,從單個原理上可以通信(未考慮設備IO口的內部電路),但是不知道會不會燒芯片,因為AN2658文檔提到了H橋,所以這里需要去嘗試才行,本人后續有時間再搭建環境進行驗證,這里只是給自己一個記錄。
以上VCC需要根據IO口的Vih來權衡使用多大的電壓?是否能把管子打開?