《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 高速RS-422串行通信接口板設(shè)計(jì)
高速RS-422串行通信接口板設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2012年第6期
李曉建,余維榮,張 霞,王向東,吳金才
(第二炮兵裝備研究院,北京100085)
摘要: 設(shè)計(jì)了一種高速RS-422串行通信接口板,采用通用的異步串行通信控制器,以嵌入式PC為控制核心,以雙端口RAM作為數(shù)據(jù)緩存,并對(duì)雙端口RAM的程序設(shè)計(jì)進(jìn)行了詳細(xì)說(shuō)明。應(yīng)用結(jié)果表明,該接口板通信速率高,數(shù)據(jù)緩存能力強(qiáng),使用簡(jiǎn)單。
Abstract:
Key words :

摘  要: 設(shè)計(jì)了一種高速RS-422串行通信接口板,采用通用的異步串行通信控制器,以嵌入式PC為控制核心,以雙端口RAM作為數(shù)據(jù)緩存,并對(duì)雙端口RAM的程序設(shè)計(jì)進(jìn)行了詳細(xì)說(shuō)明。應(yīng)用結(jié)果表明,該接口板通信速率高,數(shù)據(jù)緩存能力強(qiáng),使用簡(jiǎn)單。
關(guān)鍵詞: 串行通信;嵌入式PC;高速;雙端口RAM

    RS-422串行通信方式以其傳輸距離遠(yuǎn)、可靠性高、使用靈活等特點(diǎn),目前仍被大量應(yīng)用[1]。某型裝備測(cè)試時(shí),為了實(shí)現(xiàn)狀態(tài)監(jiān)測(cè)與故障診斷,需要對(duì)設(shè)備間12路通信速率為614.4 kb/s的RS-422串行通信接口進(jìn)行實(shí)時(shí)的數(shù)據(jù)轉(zhuǎn)存,而通用串行通信接口板的通信速率最高為128 kb/s,數(shù)據(jù)緩存能力差,不能滿足要求。本文設(shè)計(jì)了一種由異步串行通信控制器、嵌入式PC和雙端口RAM為主的高速RS-422串行通信接口板,通信速率高,數(shù)據(jù)緩存強(qiáng),使用簡(jiǎn)單。
1 總體方案
    高速RS-422串行通信接口板總體方案如圖1所示。

    該接口板采用通用的異步串行通信控制器ST16C554D,其傳輸速度可以由輸入時(shí)鐘的頻率來(lái)控制,最高可以達(dá)到1.5 Mb/s,通過(guò)計(jì)算,本接口板采用9.830 4 MHz的晶振,可以達(dá)到614.4 kb/s通信速率,該控制器具有通用并行端口,可以把PC總線擴(kuò)展為4個(gè)異步串行通信端口。選用高速全雙工422通信收發(fā)器MAX1490,其傳輸速度可以達(dá)到2.5 Mb/s,收發(fā)互不影響。為了實(shí)現(xiàn)高速實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)存,采用嵌入式PC對(duì)異步串行通信控制器ST16C554D進(jìn)行讀寫(xiě)操作,并把讀取的數(shù)據(jù)存入雙端口RAM[2]。數(shù)據(jù)接收完畢后,主控PC通過(guò)PC104總線對(duì)雙端口RAM進(jìn)行讀寫(xiě)操作,讀出數(shù)據(jù)并存儲(chǔ)在數(shù)據(jù)文件中,既充分發(fā)揮了主控PC的多任務(wù)處理能力,又不會(huì)對(duì)高速數(shù)據(jù)通信產(chǎn)生影響。
2 硬件設(shè)計(jì)
2.1 嵌入式PC對(duì)異步串行通信控制器的讀寫(xiě)控制

    采用嵌入式PC完成串行通信任務(wù),其任務(wù)單一,可以保證數(shù)據(jù)的實(shí)時(shí)收發(fā)[3]。如圖2所示,本接口板嵌入式PC采用德國(guó)控創(chuàng)公司的DIMM-PC/520-I,由133 MHz的高性能CPU、32 MB內(nèi)存、32 MB板載電子盤(pán)、標(biāo)準(zhǔn)ISA總線接口等組成[4]。由于異步串行通信控制器ST16C554D具有并行PC總線接口,可以直接和DIMM-PC的ISA總線相連接。DIMM-PC與ST16C554D的連接方式為IO映射,即ST16C554D作為外部器件,其讀寫(xiě)控制由IO讀寫(xiě)信號(hào)決定。

 

 

    ST16C554D的傳輸速度由外接晶振的頻率進(jìn)行調(diào)節(jié),傳輸速率為外接晶振的1/16、1/32、…、1/256,可由軟件對(duì)寄存器進(jìn)行設(shè)置。ST16C554D擴(kuò)展了4個(gè)標(biāo)準(zhǔn)串行接口,由DIMM-PC的地址線A3~A9經(jīng)GAL譯碼后進(jìn)行選擇;每個(gè)串行接口有多個(gè)寄存器,由DIMM-PC的地址線A0~A2進(jìn)行選擇。
2.2 嵌入式PC對(duì)雙端口RAM的讀寫(xiě)控制
    采用大容量雙端口RAM主要是為了數(shù)據(jù)的緩沖和中繼傳輸。雙端口RAM 器件IDT7006以內(nèi)存映射方式與DIMM-PC相連,如圖3所示。其數(shù)據(jù)線D0~D7和地址線A0~A13與DIMM-PC的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。內(nèi)存映射時(shí),雙端口RAM的讀寫(xiě)信號(hào)由DIMM-PC的內(nèi)存讀寫(xiě)控制信號(hào)-SMEMR和-SMEMW控制,這樣當(dāng)DIMM-PC訪問(wèn)IO端口時(shí),不會(huì)因地址相同而產(chǎn)生沖突,同時(shí)提高了尋址能力。由于DIMM-PC的基本640 KB內(nèi)存空間是公用的,很多程序都訪問(wèn)這個(gè)區(qū)間,不能把地址映射到這個(gè)區(qū)域,而1 MB以上的區(qū)間為擴(kuò)展內(nèi)存時(shí)(加內(nèi)存條)使用的,也不能任意使用,在640 KB~1 MB之間有很多空閑區(qū)間,可以供擴(kuò)展板卡進(jìn)行內(nèi)存映射時(shí)使用。本接口板使用0E0000H~0EFFFFH區(qū)間(32 KB)。

2.3 PC104總線對(duì)雙端口RAM的讀寫(xiě)控制
    雙端口RAM IDT7006以內(nèi)存映射方式與PC104總線相連,原理如圖4所示。其數(shù)據(jù)線D0~D7和地址線A0~A13與PC104總線的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。同樣原因,內(nèi)存映射時(shí),雙端口RAM的讀寫(xiě)信號(hào)由PC104總線的內(nèi)存讀寫(xiě)控制信號(hào)-SMEMR和-SMEMW控制。主控PC對(duì)本接口板訪問(wèn)時(shí),本接口板雖然在硬件上獨(dú)立于主控PC,但主控PC可以把本接口板作為其內(nèi)存的一段來(lái)進(jìn)行讀寫(xiě)操作,這樣就方便了程序的設(shè)計(jì)。本接口板映射的地址也在主控PC內(nèi)存640 KB~1 MB之間,具體地址因主控PC型號(hào)的不同而有所區(qū)別,可以編程控制。

    主控PC和嵌入式PC通過(guò)雙端口RAM進(jìn)行數(shù)據(jù)交換,同時(shí)對(duì)雙端口RAM進(jìn)行讀寫(xiě)操作,在控制邏輯上要避免發(fā)生沖突,又要保證信號(hào)時(shí)序的正確。應(yīng)該充分利用雙端口RAM器件本身的接口資源和狀態(tài)信號(hào),保證譯碼的正確有效,在軟件設(shè)計(jì)時(shí)保證不同時(shí)對(duì)一個(gè)內(nèi)存單元進(jìn)行寫(xiě)操作;另外,采用專用的可編程邏輯芯片替代傳統(tǒng)的邏輯門(mén)電路組合,提高了譯碼的速度、準(zhǔn)確度和可靠性,減小了電路規(guī)模。
2.4 RS-422端口驅(qū)動(dòng)與收發(fā)
    異步串行通信控制器ST16C554D擴(kuò)展了4個(gè)標(biāo)準(zhǔn)串行接口。在進(jìn)行RS-422方式通信時(shí)可以只使用每個(gè)接口的TX和RX端,采用隔離RS-422收發(fā)器MAX1490進(jìn)行端口驅(qū)動(dòng)與收發(fā),如圖5所示。

    MAX1490把TTL電平的串行通信轉(zhuǎn)換為RS-422電平方式且相互隔離,可避免系統(tǒng)間干擾和瞬間高壓損傷。MAX1490的輸入端DI是其內(nèi)部光耦的輸入端,需要一定的驅(qū)動(dòng)電流,但ST16C554D的輸出驅(qū)動(dòng)能低,因此增加了74HC86門(mén)電路進(jìn)行驅(qū)動(dòng);MAX1490的輸出端DO是集電極開(kāi)路(OC)輸出,應(yīng)在此端接一個(gè)上拉電阻,并用門(mén)電路74HC86把電平調(diào)理成標(biāo)準(zhǔn)的TTL電平后再由ST16C554D接收。MAX1490的422方式輸入輸出端(TX+,TX-,RX+,RX-)可以直接與其他系統(tǒng)按RS-422通信協(xié)議進(jìn)行通信。
3 嵌入式 PC主程序結(jié)構(gòu)
    嵌入式PC的主程序結(jié)構(gòu)如圖6所示,其中有兩個(gè)重要組成部分,分別是異步串行通信控制器的采集程序和雙端口RAM間的控制程序。嵌入式PC與異步串行通信控制器間以IO映射的方式進(jìn)行連接,控制方式比較簡(jiǎn)單,只需要按照寄存器結(jié)構(gòu)進(jìn)行設(shè)置和讀寫(xiě)操作即可實(shí)現(xiàn)數(shù)據(jù)傳輸,在此不進(jìn)行過(guò)多闡述,僅對(duì)雙端口RAM的控制程序進(jìn)行詳細(xì)說(shuō)明。

    雙端口RAM首字節(jié)的數(shù)據(jù)用于傳遞命令和狀態(tài)字,數(shù)據(jù)含義如表1所示。

    雙端口RAM在嵌入式PC的內(nèi)存映射地址為E0000。初始化設(shè)置模塊對(duì)接口板各串口進(jìn)行初始化,執(zhí)行自檢程序,測(cè)試內(nèi)存和串口狀態(tài)。把測(cè)試結(jié)果寫(xiě)在雙端口RAM的E0000位置,55H(或66H或77H或88H)表示串口1(或串口2或串口3或串口4)自檢錯(cuò)誤;EEH表示內(nèi)存自檢錯(cuò)誤;FFH表示自檢正常;00H表示主機(jī)軟件的重啟動(dòng)命令,主要用于主機(jī)非正常重啟時(shí),強(qiáng)制嵌入式 PC主程序放棄已采集數(shù)據(jù),重新初始化設(shè)置,等待采集命令;99H表示主機(jī)軟件的采集命令。
    用戶軟件通過(guò)查看狀態(tài)標(biāo)識(shí)位,與接口板上嵌入式PC的DRAM交換數(shù)據(jù)。用戶軟件發(fā)送轉(zhuǎn)移數(shù)據(jù)命令,即修改E0000為AAH(或BBH或CCH或DDH),接口板程序?qū)⒋?(或串口2或串口3或串口4)接收的數(shù)據(jù)轉(zhuǎn)移至E00005以后的地址中,并回復(fù)命令,即將E0000修改為11H(或22H或33H或44H),表明串口1(或串口2或串口3或串口4)的數(shù)據(jù)準(zhǔn)備好,用戶軟件可以讀取。轉(zhuǎn)移數(shù)據(jù)長(zhǎng)度寫(xiě)在E0002和E0003地址中。所選擇串口是否還有未轉(zhuǎn)移數(shù)據(jù)標(biāo)志寫(xiě)在E0004地址中(11H有,00H無(wú))。
4 應(yīng)用結(jié)果
    為形成對(duì)12路高速串行通信數(shù)據(jù)的轉(zhuǎn)存能力,數(shù)據(jù)采集系統(tǒng)中使用了3塊按照上述軟硬件設(shè)計(jì)方法所設(shè)計(jì)的接口板,應(yīng)用結(jié)果表明,各串行通信接口板運(yùn)行正常,數(shù)據(jù)接收與存儲(chǔ)能力達(dá)到了預(yù)期目標(biāo),對(duì)系統(tǒng)資源的占用少。
    本文所提出的高速串行通信接口板設(shè)計(jì)方法應(yīng)用了嵌入式PC,形成了專門(mén)處理數(shù)據(jù)的核心,提高了數(shù)據(jù)傳輸速率,對(duì)外部CPU和總線的要求寬松;同時(shí),可以在硬件電路不變的情況下,通過(guò)修改軟件協(xié)議,即修改雙端口RAM的讀寫(xiě)控制程序,實(shí)現(xiàn)全雙工高速串行通信。
參考文獻(xiàn)
[1] 孫淵,王仕成,閔海波,等.RS422高速串行通信在AT91-RM9200上的實(shí)現(xiàn)[J].彈箭與制導(dǎo)學(xué)報(bào),2008,28(1):329-332.
[2] 李正軍.計(jì)算機(jī)測(cè)控系統(tǒng)設(shè)計(jì)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004:127-132.
[3] 胡宏偉,宋斌,趙秀娟.基于CPLD和DIMM-PC微處理器模塊的圖像采集處理系統(tǒng)設(shè)計(jì)[J].光電技術(shù)應(yīng)用,2006,21(5):61-66.
[4] Kontron embedded computers AG.DIMM-PC/520-I user’s  guide[S].2003

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。