《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 高速RS-422串行通信接口板設(shè)計(jì)
高速RS-422串行通信接口板設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2012年第6期
李曉建,余維榮,,張 霞,,王向東,,吳金才
(第二炮兵裝備研究院,,北京100085)
摘要: 設(shè)計(jì)了一種高速RS-422串行通信接口板,,采用通用的異步串行通信控制器,,以嵌入式PC為控制核心,,以雙端口RAM作為數(shù)據(jù)緩存,,并對(duì)雙端口RAM的程序設(shè)計(jì)進(jìn)行了詳細(xì)說明。應(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ì)說明。應(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í)鐘的頻率來控制,最高可以達(dá)到1.5 Mb/s,,通過計(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)行讀寫操作,并把讀取的數(shù)據(jù)存入雙端口RAM[2],。數(shù)據(jù)接收完畢后,,主控PC通過PC104總線對(duì)雙端口RAM進(jìn)行讀寫操作,讀出數(shù)據(jù)并存儲(chǔ)在數(shù)據(jù)文件中,,既充分發(fā)揮了主控PC的多任務(wù)處理能力,,又不會(huì)對(duì)高速數(shù)據(jù)通信產(chǎn)生影響。
2 硬件設(shè)計(jì)
2.1 嵌入式PC對(duì)異步串行通信控制器的讀寫控制

    采用嵌入式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板載電子盤,、標(biāo)準(zhǔn)ISA總線接口等組成[4],。由于異步串行通信控制器ST16C554D具有并行PC總線接口,可以直接和DIMM-PC的ISA總線相連接,。DIMM-PC與ST16C554D的連接方式為IO映射,,即ST16C554D作為外部器件,其讀寫控制由IO讀寫信號(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的讀寫控制
    采用大容量雙端口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的讀寫信號(hào)由DIMM-PC的內(nèi)存讀寫控制信號(hào)-SMEMR和-SMEMW控制,,這樣當(dāng)DIMM-PC訪問IO端口時(shí),不會(huì)因地址相同而產(chǎn)生沖突,,同時(shí)提高了尋址能力,。由于DIMM-PC的基本640 KB內(nèi)存空間是公用的,很多程序都訪問這個(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的讀寫控制
    雙端口RAM IDT7006以內(nèi)存映射方式與PC104總線相連,,原理如圖4所示,。其數(shù)據(jù)線D0~D7和地址線A0~A13與PC104總線的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。同樣原因,,內(nèi)存映射時(shí),,雙端口RAM的讀寫信號(hào)由PC104總線的內(nèi)存讀寫控制信號(hào)-SMEMR和-SMEMW控制。主控PC對(duì)本接口板訪問時(shí),,本接口板雖然在硬件上獨(dú)立于主控PC,,但主控PC可以把本接口板作為其內(nèi)存的一段來進(jìn)行讀寫操作,這樣就方便了程序的設(shè)計(jì),。本接口板映射的地址也在主控PC內(nèi)存640 KB~1 MB之間,,具體地址因主控PC型號(hào)的不同而有所區(qū)別,可以編程控制,。

    主控PC和嵌入式PC通過雙端口RAM進(jìn)行數(shù)據(jù)交換,,同時(shí)對(duì)雙端口RAM進(jìn)行讀寫操作,在控制邏輯上要避免發(fā)生沖突,,又要保證信號(hào)時(shí)序的正確,。應(yīng)該充分利用雙端口RAM器件本身的接口資源和狀態(tài)信號(hào),保證譯碼的正確有效,,在軟件設(shè)計(jì)時(shí)保證不同時(shí)對(duì)一個(gè)內(nèi)存單元進(jìn)行寫操作,;另外,采用專用的可編程邏輯芯片替代傳統(tǒng)的邏輯門電路組合,,提高了譯碼的速度,、準(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門電路進(jìn)行驅(qū)動(dòng);MAX1490的輸出端DO是集電極開路(OC)輸出,,應(yīng)在此端接一個(gè)上拉電阻,,并用門電路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è)置和讀寫操作即可實(shí)現(xiàn)數(shù)據(jù)傳輸,在此不進(jìn)行過多闡述,,僅對(duì)雙端口RAM的控制程序進(jìn)行詳細(xì)說明,。

    雙端口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é)果寫在雙端口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ī)軟件的采集命令。
    用戶軟件通過查看狀態(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)度寫在E0002和E0003地址中,。所選擇串口是否還有未轉(zhuǎn)移數(shù)據(jù)標(biāo)志寫在E0004地址中(11H有,,00H無)。
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,形成了專門處理數(shù)據(jù)的核心,,提高了數(shù)據(jù)傳輸速率,,對(duì)外部CPU和總線的要求寬松;同時(shí),,可以在硬件電路不變的情況下,,通過修改軟件協(xié)議,即修改雙端口RAM的讀寫控制程序,,實(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)載,。