基于單片機的多機并行通訊系統
在一些復雜的系統中,系統與分系統、分系統與設備等之間存在數據的傳遞問題,往往采用通信的方式來解決。由于分系統、沒備等通信波特率的不同,特別是一些特殊波特率設備的存在,使得系統中設備間的相互通信不易實現。例如,在一個系統中,上位機接收某一設備的數據,如圖1所示,設備l和設備2采用的是172.8 kbps的波特率,而上位機用VB編程,其通信波特率為115.2 kbps、128 kbps或256 kbps,等,這樣設備之間就不能相互通信,給設計帶來困難。為了解決上述問題,采用雙單片機電路,設計了波特率變換器,將接收波特率為172.8 kbps的數據,轉換成波特率為115.2 kbps的輸出,從而使不同波特率設備之間的通信成為可能。
1 波特率變換電路
波特率變換電路如圖2所示。電路采用2片單片機89C5l作為電路的核心,利用單片機的UART串行口與相關設備通信。單片機u1_L.(接波特率低的設備)與波特率為115.2 kbps的設備通信,單片機U2_H(接波特率高的設備)與波特率為172.8 kbps的設備通信。Ul_I,與U2_H的通信采用并行口方式,以加快Ul_I。與U2_H之間數據傳遞的速率。U1_L與U2_H的通信可以采用中斷查詢的方式,也可以采用握手查詢的方式進行數據傳遞。
電路采用2片75176接口驅動芯片組成一個RS-422通信接口。U3和U4組成的通信接口與115.2 kbps的設備相連,U5和U6組成的通信接口與172.8 kbps的設備相連,通信接口采用中斷技術。波特率變換器工作原理如下:U1_I。從串行口收到設備的數據后,從Pl口輸出數據,并通知U2_H取數,U2_H取到數據后向設備發(fā)出數據,同時通知Ul_I.已取走數據,為U1一L下一次輸出數據做準備。當U2_H從串行口收到設備的數據后,查詢U1_I,是否允許接收數據,如允許接收數據,U2_H從P1口輸出數據,并通知Ul_L取數,Ul_L取到數據后向設備發(fā)出數據,同時通知U2_H已取走數據,為U2_H下一次輸出數據做準備;如Ul_L不允許接收數據,則U2_H暫緩送數。
2 波特率變換器的應用
波特率變換器在應用中,根據使用情況可以分為單向傳送和雙向傳送。兩單片機之間的數據傳遞可以采用中斷方式.也可以采用查詢方式。如采用查詢方式,編程時利用P2口的幾位作為查詢信號,實現單向或雙向傳送。
評論