摘 要: 設計了一種高速RS-422串行通信接口板,,采用通用的異步串行通信控制器,,以嵌入式PC為控制核心,以雙端口RAM作為數(shù)據(jù)緩存,,并對雙端口RAM的程序設計進行了詳細說明,。應用結(jié)果表明,該接口板通信速率高,,數(shù)據(jù)緩存能力強,,使用簡單。
關(guān)鍵詞: 串行通信,;嵌入式PC,;高速;雙端口RAM
RS-422串行通信方式以其傳輸距離遠,、可靠性高,、使用靈活等特點,目前仍被大量應用[1],。某型裝備測試時,,為了實現(xiàn)狀態(tài)監(jiān)測與故障診斷,需要對設備間12路通信速率為614.4 kb/s的RS-422串行通信接口進行實時的數(shù)據(jù)轉(zhuǎn)存,,而通用串行通信接口板的通信速率最高為128 kb/s,,數(shù)據(jù)緩存能力差,不能滿足要求,。本文設計了一種由異步串行通信控制器,、嵌入式PC和雙端口RAM為主的高速RS-422串行通信接口板,通信速率高,,數(shù)據(jù)緩存強,,使用簡單。
1 總體方案
高速RS-422串行通信接口板總體方案如圖1所示,。
該接口板采用通用的異步串行通信控制器ST16C554D,,其傳輸速度可以由輸入時鐘的頻率來控制,最高可以達到1.5 Mb/s,通過計算,,本接口板采用9.830 4 MHz的晶振,,可以達到614.4 kb/s通信速率,該控制器具有通用并行端口,,可以把PC總線擴展為4個異步串行通信端口,。選用高速全雙工422通信收發(fā)器MAX1490,其傳輸速度可以達到2.5 Mb/s,,收發(fā)互不影響,。為了實現(xiàn)高速實時數(shù)據(jù)轉(zhuǎn)存,采用嵌入式PC對異步串行通信控制器ST16C554D進行讀寫操作,,并把讀取的數(shù)據(jù)存入雙端口RAM[2],。數(shù)據(jù)接收完畢后,主控PC通過PC104總線對雙端口RAM進行讀寫操作,,讀出數(shù)據(jù)并存儲在數(shù)據(jù)文件中,,既充分發(fā)揮了主控PC的多任務處理能力,又不會對高速數(shù)據(jù)通信產(chǎn)生影響,。
2 硬件設計
2.1 嵌入式PC對異步串行通信控制器的讀寫控制
采用嵌入式PC完成串行通信任務,,其任務單一,可以保證數(shù)據(jù)的實時收發(fā)[3],。如圖2所示,,本接口板嵌入式PC采用德國控創(chuàng)公司的DIMM-PC/520-I,由133 MHz的高性能CPU,、32 MB內(nèi)存,、32 MB板載電子盤、標準ISA總線接口等組成[4],。由于異步串行通信控制器ST16C554D具有并行PC總線接口,,可以直接和DIMM-PC的ISA總線相連接。DIMM-PC與ST16C554D的連接方式為IO映射,,即ST16C554D作為外部器件,,其讀寫控制由IO讀寫信號決定。
ST16C554D的傳輸速度由外接晶振的頻率進行調(diào)節(jié),,傳輸速率為外接晶振的1/16,、1/32、…,、1/256,,可由軟件對寄存器進行設置。ST16C554D擴展了4個標準串行接口,,由DIMM-PC的地址線A3~A9經(jīng)GAL譯碼后進行選擇,;每個串行接口有多個寄存器,,由DIMM-PC的地址線A0~A2進行選擇。
2.2 嵌入式PC對雙端口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)存映射時,,雙端口RAM的讀寫信號由DIMM-PC的內(nèi)存讀寫控制信號-SMEMR和-SMEMW控制,這樣當DIMM-PC訪問IO端口時,,不會因地址相同而產(chǎn)生沖突,,同時提高了尋址能力。由于DIMM-PC的基本640 KB內(nèi)存空間是公用的,,很多程序都訪問這個區(qū)間,,不能把地址映射到這個區(qū)域,而1 MB以上的區(qū)間為擴展內(nèi)存時(加內(nèi)存條)使用的,,也不能任意使用,,在640 KB~1 MB之間有很多空閑區(qū)間,,可以供擴展板卡進行內(nèi)存映射時使用,。本接口板使用0E0000H~0EFFFFH區(qū)間(32 KB)。
2.3 PC104總線對雙端口RAM的讀寫控制
雙端口RAM IDT7006以內(nèi)存映射方式與PC104總線相連,,原理如圖4所示,。其數(shù)據(jù)線D0~D7和地址線A0~A13與PC104總線的數(shù)據(jù)線D0~D7和地址線A0~A13直接連接。同樣原因,,內(nèi)存映射時,,雙端口RAM的讀寫信號由PC104總線的內(nèi)存讀寫控制信號-SMEMR和-SMEMW控制。主控PC對本接口板訪問時,,本接口板雖然在硬件上獨立于主控PC,,但主控PC可以把本接口板作為其內(nèi)存的一段來進行讀寫操作,這樣就方便了程序的設計,。本接口板映射的地址也在主控PC內(nèi)存640 KB~1 MB之間,,具體地址因主控PC型號的不同而有所區(qū)別,可以編程控制,。
主控PC和嵌入式PC通過雙端口RAM進行數(shù)據(jù)交換,,同時對雙端口RAM進行讀寫操作,在控制邏輯上要避免發(fā)生沖突,,又要保證信號時序的正確,。應該充分利用雙端口RAM器件本身的接口資源和狀態(tài)信號,保證譯碼的正確有效,,在軟件設計時保證不同時對一個內(nèi)存單元進行寫操作,;另外,,采用專用的可編程邏輯芯片替代傳統(tǒng)的邏輯門電路組合,提高了譯碼的速度,、準確度和可靠性,,減小了電路規(guī)模。
2.4 RS-422端口驅(qū)動與收發(fā)
異步串行通信控制器ST16C554D擴展了4個標準串行接口,。在進行RS-422方式通信時可以只使用每個接口的TX和RX端,,采用隔離RS-422收發(fā)器MAX1490進行端口驅(qū)動與收發(fā),如圖5所示,。
MAX1490把TTL電平的串行通信轉(zhuǎn)換為RS-422電平方式且相互隔離,,可避免系統(tǒng)間干擾和瞬間高壓損傷。MAX1490的輸入端DI是其內(nèi)部光耦的輸入端,,需要一定的驅(qū)動電流,,但ST16C554D的輸出驅(qū)動能低,因此增加了74HC86門電路進行驅(qū)動,;MAX1490的輸出端DO是集電極開路(OC)輸出,,應在此端接一個上拉電阻,并用門電路74HC86把電平調(diào)理成標準的TTL電平后再由ST16C554D接收,。MAX1490的422方式輸入輸出端(TX+,,TX-,RX+,,RX-)可以直接與其他系統(tǒng)按RS-422通信協(xié)議進行通信,。
3 嵌入式 PC主程序結(jié)構(gòu)
嵌入式PC的主程序結(jié)構(gòu)如圖6所示,其中有兩個重要組成部分,,分別是異步串行通信控制器的采集程序和雙端口RAM間的控制程序,。嵌入式PC與異步串行通信控制器間以IO映射的方式進行連接,控制方式比較簡單,,只需要按照寄存器結(jié)構(gòu)進行設置和讀寫操作即可實現(xiàn)數(shù)據(jù)傳輸,,在此不進行過多闡述,僅對雙端口RAM的控制程序進行詳細說明,。
雙端口RAM首字節(jié)的數(shù)據(jù)用于傳遞命令和狀態(tài)字,,數(shù)據(jù)含義如表1所示。
雙端口RAM在嵌入式PC的內(nèi)存映射地址為E0000,。初始化設置模塊對接口板各串口進行初始化,,執(zhí)行自檢程序,測試內(nèi)存和串口狀態(tài),。把測試結(jié)果寫在雙端口RAM的E0000位置,,55H(或66H或77H或88H)表示串口1(或串口2或串口3或串口4)自檢錯誤;EEH表示內(nèi)存自檢錯誤,;FFH表示自檢正常,;00H表示主機軟件的重啟動命令,,主要用于主機非正常重啟時,強制嵌入式 PC主程序放棄已采集數(shù)據(jù),,重新初始化設置,,等待采集命令;99H表示主機軟件的采集命令,。
用戶軟件通過查看狀態(tài)標識位,,與接口板上嵌入式PC的DRAM交換數(shù)據(jù)。用戶軟件發(fā)送轉(zhuǎn)移數(shù)據(jù)命令,,即修改E0000為AAH(或BBH或CCH或DDH),,接口板程序?qū)⒋?(或串口2或串口3或串口4)接收的數(shù)據(jù)轉(zhuǎn)移至E00005以后的地址中,并回復命令,,即將E0000修改為11H(或22H或33H或44H),,表明串口1(或串口2或串口3或串口4)的數(shù)據(jù)準備好,用戶軟件可以讀取,。轉(zhuǎn)移數(shù)據(jù)長度寫在E0002和E0003地址中,。所選擇串口是否還有未轉(zhuǎn)移數(shù)據(jù)標志寫在E0004地址中(11H有,00H無),。
4 應用結(jié)果
為形成對12路高速串行通信數(shù)據(jù)的轉(zhuǎn)存能力,,數(shù)據(jù)采集系統(tǒng)中使用了3塊按照上述軟硬件設計方法所設計的接口板,應用結(jié)果表明,,各串行通信接口板運行正常,,數(shù)據(jù)接收與存儲能力達到了預期目標,,對系統(tǒng)資源的占用少,。
本文所提出的高速串行通信接口板設計方法應用了嵌入式PC,形成了專門處理數(shù)據(jù)的核心,,提高了數(shù)據(jù)傳輸速率,,對外部CPU和總線的要求寬松;同時,,可以在硬件電路不變的情況下,,通過修改軟件協(xié)議,即修改雙端口RAM的讀寫控制程序,,實現(xiàn)全雙工高速串行通信,。
參考文獻
[1] 孫淵,王仕成,,閔海波,,等.RS422高速串行通信在AT91-RM9200上的實現(xiàn)[J].彈箭與制導學報,2008,,28(1):329-332.
[2] 李正軍.計算機測控系統(tǒng)設計與應用[M].北京:機械工業(yè)出版社,,2004:127-132.
[3] 胡宏偉,,宋斌,趙秀娟.基于CPLD和DIMM-PC微處理器模塊的圖像采集處理系統(tǒng)設計[J].光電技術(shù)應用,,2006,,21(5):61-66.
[4] Kontron embedded computers AG.DIMM-PC/520-I user’s guide[S].2003