UM3758-108編/解碼器在串行通信中的應(yīng)用
摘要:介紹一種基于編/解碼器的PC機(jī)與多單片機(jī)之間的串行通信方法,并對智能卡的設(shè)計(jì)進(jìn)行了說明。該編/解碼器通信方案,軟好地解決了多機(jī)系統(tǒng)中作為上位機(jī)的工控機(jī)對各下位機(jī)的尋址問題。
關(guān)鍵詞:編/解碼器 雙口RAM PC 串行通信 UM3758-108
在遙測、遙控領(lǐng)域中,常常使用工業(yè)PC機(jī)與單片機(jī)組成的多機(jī)系統(tǒng)完成測控任務(wù)。PC機(jī)因其豐富的軟硬件資源和友好的人機(jī)界面而被用作上位機(jī),而單片機(jī)則因其優(yōu)越的性價(jià)比和靈活的功能配置而被用作下位機(jī)。上位 機(jī)和下位機(jī)之間通過串行數(shù)據(jù)總線(如CAN總線、RS485總線等)連接,具體結(jié)構(gòu)如圖1所示。在進(jìn)行數(shù)據(jù)傳輸時(shí),一般先由上位機(jī)發(fā)出地址幀對指定的下位機(jī)尋址,在得到確認(rèn)以后向選中的下位機(jī)發(fā)送命令和參數(shù),或者接收該下位機(jī)采集的數(shù)據(jù)。但在多機(jī)系統(tǒng)中,進(jìn)行數(shù)據(jù)通信遇到的一個(gè)首要問題是如何區(qū)分總線的地址信息和其它的數(shù)據(jù)信息,這也是各類通信協(xié)議和通信規(guī)約中的一項(xiàng)重要內(nèi)容。由于目前所使用的通信協(xié)議和通信規(guī)約比較復(fù)雜,因此在一個(gè)簡單的主從式多機(jī)系統(tǒng)中,往往由開發(fā)人員自行定義一些簡單的通信協(xié)議來解決上述問題。本文介紹一種基于編/解碼器的通信方案,較好地解決了多機(jī)系統(tǒng)中作為上位機(jī)的工控機(jī)對各下位機(jī)的尋址問題。
1 編/解碼芯片UM3758-108A
專用編/解碼芯片UM3758-108A屬大規(guī)模CMOS器件,其引腳排列如圖2所示:A0~A9為三態(tài)編碼地址輸入;D0~D7為二態(tài)鎖存式編碼數(shù)據(jù)輸入或輸出;OSC引腳外接振蕩電阻和電容,其值決定發(fā)送頻率;VSS為電源地;T/R為編碼發(fā)送與編碼收選擇引腳,接高電平時(shí)為編碼發(fā)送,接低電平時(shí)為接收編碼;IN為編碼脈沖輸入引腳(接收解碼時(shí));TX/RX外接驅(qū)動(dòng)電路,為編碼發(fā)送輸出端,該引腳也可作為爭碼接收正確標(biāo)志顯示(RX輸出低電平);VDD為電源正端(3~12V)。
單片UM3758-108A芯片是一個(gè)完整的接口電路,集編碼發(fā)送和解碼輸出于一身。當(dāng)T/R端接高電平時(shí),地址碼A0~A9和數(shù)據(jù)碼D0~D7構(gòu)成一個(gè)18位的數(shù)據(jù)幀,從TX/RX端循環(huán)不斷地串行發(fā)送出去;當(dāng)T/R端接低電平時(shí),編碼脈沖由IN端輸入,如果接收的地址碼連續(xù)兩次與本地地址碼一致,接收數(shù)據(jù)將按位傳送到輸出鎖存器中,由D0~D7引腳輸出。同時(shí)TX/RX引腳輸出低電平,表示接收正確。
2 UM3758-108A在多機(jī)通信中的具體應(yīng)用
使用編/解碼器實(shí)現(xiàn)PC機(jī)與單片機(jī)的通信時(shí),需要在PC機(jī)和單片機(jī)上分別配置編/解碼器,以便完成數(shù)據(jù)信息的發(fā)送和接收。由于上位機(jī)不僅承擔(dān)與下位機(jī)的通信任務(wù),還要進(jìn)行數(shù)據(jù)處理,并以表格或各種圖形方式顯示出來。如果讓上位機(jī)直接控制編/解碼芯片,通過并行口進(jìn)行數(shù)據(jù)收發(fā),在通信量較大的情況下,勢必會(huì)占用上位機(jī)的大部分工作時(shí)間,導(dǎo)致整機(jī)性能下降。因此在通信量較大的情況下,應(yīng)在上位機(jī)端設(shè)計(jì)一個(gè)智能I/O擴(kuò)展卡,該卡可插到上位機(jī)底板的擴(kuò)展槽上。為了上位機(jī)和擴(kuò)屏卡之間達(dá)到更快的信息交換速度,可以采用共享存儲(chǔ)器方式進(jìn)行數(shù)據(jù)交換。傳統(tǒng)的共用存儲(chǔ)器硬件設(shè)計(jì)比較復(fù)雜,應(yīng)用范圍較小。本文采用Maxim公司生產(chǎn)的雙端口存儲(chǔ)器DS1609,大大簡化了共用存儲(chǔ)器硬件電路設(shè)計(jì)。如圖3所示,DS1609為256字節(jié)雙端口RAM,屬大規(guī)模CMOS器件;具有兩個(gè)獨(dú)立的端口,各自擁有一套相應(yīng)的數(shù)據(jù)/地址復(fù)用總線和控制總線;控制信號只有讀、寫和片選,尤其適合于和Intel公司的CPU相連;硬件電路設(shè)計(jì)非常簡單。該器件允許兩個(gè)端口獨(dú)立地對存儲(chǔ)器單元進(jìn)行存取操作,且由于存儲(chǔ)器內(nèi)部特殊的單元電路設(shè)計(jì),端口雙方同時(shí)對同一個(gè)單元進(jìn)行讀操作時(shí)無需促裁邏輯;但當(dāng)端以方同時(shí)對同一單元進(jìn)行讀/寫或?qū)?寫操作時(shí),仍會(huì)發(fā)生競爭。解決讀/寫沖突的一個(gè)簡單辦法是執(zhí)行冗余的讀周期,也可使用“郵箱”傳送狀態(tài)信息方式進(jìn)行軟件仲裁,這種方法需給每個(gè)端口分配一個(gè)字節(jié),用以寫入狀態(tài)信息,以告知對本端正在進(jìn)行的操作。對于寫/寫沖突,可給雙方分配固定的單元空間,另外,再給每一組數(shù)據(jù)分配校驗(yàn)和字節(jié),以確保正確的數(shù)據(jù)交換。圖3中DS1609一側(cè)與89C51 CPU相連,另一側(cè)通過三態(tài)緩沖器與擴(kuò)展總線相連。
圖4為PC機(jī)與80C51單片機(jī)使用編/解碼器實(shí)現(xiàn)通信的示意圖。UM3758-108A的A0~A9是地址輸入端,每位可有三種狀態(tài):高電平、低電平、開路。利用其不同的組合可產(chǎn)生3 10種不同的編碼。二態(tài)時(shí)也有2 10種不同的編碼。智能擴(kuò)展卡需不斷尋址各個(gè)下位機(jī),所以利用鎖存器將數(shù)據(jù)輸出給編/解碼器的地址端,以此可靈活地尋址各個(gè)下位機(jī)。為了簡化起見,圖4中省去了一個(gè)鎖存器,將A8、A9直接懸空。UM3758-108A片內(nèi)具有數(shù)據(jù)鎖存能力,無需加鎖存器,但需加雙向緩沖器以收發(fā)數(shù)據(jù)。下位機(jī)端的編碼地址用微型開關(guān)SW設(shè)置,也可用鎖存器輸出編碼地址;但這樣做需在下位機(jī)工作前,將編碼地址由面板輸入,和其它需要設(shè)定的參數(shù)一起保存在存儲(chǔ)器(如EEPROM)中,然后再由鎖存器輸出。后者增加了下位機(jī)地址編碼的靈活性,但也加重了編程負(fù)擔(dān)。圖4中,智能I/O擴(kuò)展卡用74LS273作為擴(kuò)展接口,以鎖存要尋址的下位機(jī)地址,用74LS245收發(fā)數(shù)據(jù)。P1.0為發(fā)送數(shù)據(jù)選擇端:P1.0為低電平時(shí),接口處于接收狀態(tài);為高電平時(shí),處于發(fā)送狀態(tài)。因此,初始化時(shí),上、下位機(jī)的兩個(gè)接口均應(yīng)置成接收狀態(tài)。每個(gè)接口的TX/RX端除了作為發(fā)送端外,還作為該接口接收正確與否的狀態(tài)指示端。如果接收正確,該接口輸出低電平;否則,為高電平。此端口可作為向CPU發(fā)出中斷請求的信號。為此,發(fā)送數(shù)據(jù)時(shí),應(yīng)先關(guān)閉接收中斷,發(fā)送完畢,再打開接收中斷。
該通信為半雙工方式,且只能由上位機(jī)發(fā)起,下位機(jī)不主動(dòng)申請通信。當(dāng)處于輪詢狀態(tài)時(shí),上位機(jī)根據(jù)下位機(jī)的編碼地址,向下位機(jī)發(fā)送呼叫幀。每臺(tái)下位機(jī)都由編/解碼器接收并判斷,但只有地址相符的下位機(jī)才發(fā)生中斷接收數(shù)據(jù),并建立和上位機(jī)的聯(lián)系,以此接收上位機(jī)的命令和參數(shù),或?qū)⒉杉臄?shù)據(jù)上傳。由于這種通信方式無差錯(cuò)控制,因此應(yīng)根據(jù)傳輸速率,精確定時(shí),保證每個(gè)發(fā)送周期相同的編碼信號連續(xù)發(fā)送3次,以提高通信的可靠性。
使用編/解碼器實(shí)現(xiàn)PC機(jī)與單片機(jī)的通信,波特率設(shè)置為2400baud,通信距離可達(dá)5km以上;不僅可用于數(shù)據(jù)采集系統(tǒng)、LED屏幕顯示系統(tǒng)等有線通信方式,也可采用紅外(IR)、超聲波(US)等用于無線通信方式,以此可突破地理因素的局限。這種通信方式不僅傳輸距離遠(yuǎn)、抗干擾性通強(qiáng)、可靠性高、成本低,而且連接簡單、使用方便;通信過程僅僅是讀寫I/O口的簡單操作,編程簡單,易于實(shí)現(xiàn)。
圖4
結(jié)語
本文提出了一種適用于PC機(jī)與多單片機(jī)之間的串行通信實(shí)現(xiàn)方法。該方法采用UM3758-108A編/解碼芯片實(shí)現(xiàn)雙工傳輸,采用DS1609芯片實(shí)現(xiàn)智能卡和上位機(jī)的批量數(shù)據(jù)交換,實(shí)現(xiàn)了數(shù)據(jù)傳輸與數(shù)據(jù)處理功能的分離,使它們各司其職,保證了系統(tǒng)的實(shí)時(shí)性,也有效解決了上位機(jī)對下位機(jī)的尋址問題。另外,該方式有很寬的適用范圍,具有一定的應(yīng)用價(jià)值。