<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

          作者: 時(shí)間:2011-08-10 來(lái)源:網(wǎng)絡(luò) 收藏

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

            1 通信結(jié)構(gòu)

            共用RS 232接口與PC機(jī)通信的結(jié)構(gòu)如圖1所示,由串行通信接口、以及下位機(jī)三部分組成。

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

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

            2 防止競(jìng)爭(zhēng)的控制電路

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

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

            控制電路輸出到74HC125的3個(gè)控制端信號(hào)分別定義為OEA,OEB,OEC,對(duì)應(yīng)于3個(gè)單片機(jī)串口控制信號(hào)A,B,C,邏輯關(guān)系為:

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

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

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

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

          3 防止競(jìng)爭(zhēng)的通信程序

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

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

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

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

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

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

            3.2 上位機(jī)通信程序

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

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

            圖4為上位機(jī)與3個(gè)單片機(jī)通信的時(shí)序圖。

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

            3.3 下位機(jī)通信程序

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

            

          多單片機(jī)共用RS232通信的防競(jìng)爭(zhēng)電路與程序設(shè)計(jì)

            4 結(jié)語(yǔ)

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



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();