《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 多單片機共用RS232通信的防競爭電路與程序設計
多單片機共用RS232通信的防競爭電路與程序設計
摘要:  在單片機開發(fā)應用中,我們常常采用主從式控制結構,一臺PC機作為上位機控制多個單片機系統(tǒng)進行工作,功能強大、資源豐富的PC機可以用來方便地進行人機界面的設計和數據庫管理與輸出,而單片機進行靈活的控制和測量。在某些應用場合,這些單片機系統(tǒng)緊靠在一起安裝,因為單片機相互間的距離較近,通信接線很短,這時,PC機與單片機1對多的多機通信,就可以不采用需要特別轉接設備的RS 485通信,或者復雜的CAN通信,而設計防止競爭控制電路和采用應答式通信程序,讓多單片機直接共用一個RS 232接口與PC機實現可靠的異步串行通信。
Abstract:
Key words :

  在單片機開發(fā)應用中,我們常常采用主從式控制結構,一臺PC機作為上位機控制多個單片機系統(tǒng)進行工作,功能強大、資源豐富的PC機可以用來方便地進行人機界面的設計和數據庫管理與輸出,而單片機進行靈活的控制和測量。在某些應用場合,這些單片機系統(tǒng)緊靠在一起安裝,因為單片機相互間的距離較近,通信接線很短,這時,PC機與單片機1對多的多機通信,就可以不采用需要特別轉接設備的RS 485通信,或者復雜的CAN通信,而設計防止競爭控制電路和采用應答式通信程序,讓多單片機直接共用一個RS 232接口與PC機實現可靠的異步串行通信。

  1 多單片機通信結構

  多單片機共用RS 232接口與PC機通信的結構如圖1所示,由串行通信接口、防競爭電路以及下位機三部分組成。

  

 

  多個單片機系統(tǒng)共享RS 232總線的關鍵是如何避免競爭。對于接收端,經RS 232電平轉換芯片進行電平轉換后,可以直接并接到全部單片機串口的Rxd端,PC機向單片機發(fā)送信息相當于向所有單片機進行廣播,不存在競爭。但是不能直接將單片機的發(fā)送端并聯(lián)到串口轉換芯片MAX232的TnIN端,否則系統(tǒng)將極不可靠,無論何種原因,倘若有2個及以上的單片機系統(tǒng)同時向PC機發(fā)送信息,則將發(fā)生總線競爭,RS 232總線信號將發(fā)生混亂。因此圖中的防競爭控制電路,是專為防止總線競爭而設計,以保證在任何時刻只有一個單片機系統(tǒng)占用RS 232的發(fā)送端口。

  2 防止競爭的控制電路

  防止競爭控制電路如圖2所示,TxdA,TxdB,TxdC分別是單片機A、單片機B、單片機C的Txd端,接到帶3態(tài)驅動器74HC125的3個輸入端上,74HC125的3個輸出端并接到RS 232電平轉換芯片MAX232的T2IN端。A,B,C分別是3個單片機的串口輸出控制端(低電平有效,假設均接P10端口),由74HC00四二與非門和74HC32四二或門電路構成。

  

 

  控制電路輸出到74HC125的3個控制端信號分別定義為OEA,OEB,OEC,對應于3個單片機串口控制信號A,B,C,邏輯關系為:

  

 

  控制電路的真值表如表1所示。

  

 

  由真值表可見:防止競爭控制電路保證在A有效時,僅允許TxdA通過74HC125而其他2路信號被禁止通過。同樣,當B有效時,僅允許TxdB信號通過,C有效時,僅允許TxdC信號通過,其他2路信號被禁止。確保任意時刻只有一個單片機的串口占用RS 232發(fā)送通道,而其他單片機不能占用RS 232發(fā)送通道,有效地防止了競爭的發(fā)生。[next]

3 防止競爭的通信程序

 

  3.1 多機通信協(xié)議.

  多機通信協(xié)議是為了使單片機分時占用RS 232發(fā)送通道,在防競爭控制電路的配合下,使得任一時刻PC機僅與1個單片機進行通信,保證通信的順利進行。通信采用握手通信方式,通信協(xié)議如下:

  

 

  每一幀信息為8個字節(jié)。其中,第一字節(jié)為特征字(這里為字符“L”),第二字節(jié)為地址碼,第三字節(jié)為命令碼,第四~七字節(jié)為數據字節(jié),第八字節(jié)為校驗和(從地址碼開始計算字節(jié)的異或和)。

  如PC機向單片機系統(tǒng)發(fā)出呼叫:“L”、“A”、01H、00H、00H、00H、00H、40H,其中的“A”(41H)表示呼叫單片機A,01H是命令,4個00H是命令的參數,40H為校驗和。

  單片機接收到特征碼“L”后,開始接收后續(xù)的7字節(jié)信息,并對這7個字節(jié)計算校驗和,完整的一幀呼叫碼校驗無誤后,核對地址碼。單片機A核對地址碼為“A”,確認是對本機呼叫,立即響應,拉低P10(信號A),本機即可獨占RS 232總線發(fā)送通道,按照通信協(xié)議與PC機進行串行通信,通信完畢恢復P10(信號A)使RS 232總線發(fā)送通道恢復空閑狀態(tài)。而單片機B、單片機C校對地址碼不是本機地址后則退出,保持接收狀態(tài)。

  3.2 上位機通信程序

  上位機與下位機采用應答式通信方式,上位機向某一下位機發(fā)送呼叫碼后啟動定時查詢串口定時器,等待下位機執(zhí)行命令并按命令要求返回信息,若定時時間到后能查詢到該單片機返回的信息,則取出信息進行處理,否則認為該單片機出錯。上位機通信流程如圖3所示。

  

 

  圖4為上位機與3個單片機通信的時序圖。

  

 

  3.3 下位機通信程序

  下位機接收到命令后,執(zhí)行命令與返回信息的時間必須小于上位機的等待查詢時間,否則將被當作出錯處理。下位機通信流程如圖5所示。

  

 

  4 結語

  采用防止競爭控制電路和應答式編程,使得多單片機共用RS 232接口時,每個單片機分時占用RS 232總線發(fā)送通道,有效地避免了串行總線的競爭??刂齐娐凡捎闷胀ǖ?4HC系列芯片構成,電路簡單、實現容易、通信可靠。筆者在研制“信號微機監(jiān)測系統(tǒng)板卡故障定位儀”項目中采用了這一電路,3個下位機(51系列單片機)控制板安裝在同一個機箱中,嵌入式平板電腦作為上位機與3個下位機進行串行通信,實踐證明該電路可以穩(wěn)定可靠的工作。

 

此內容為AET網站原創(chuàng),未經授權禁止轉載。