摘要:應用PC/104模塊486DX和EMM-8M-XT實現多串口通信。擴展后,10個串口可以同時進行全雙工通信。結合工程實例,給出系統結構、軟硬件設計方法以及多串口通信在DOS平臺上的典型應用。
2004年12月31日收到修改稿。
引言
串行通信方式具有使用方便、傳輸可靠、信號線數量少等優點,因而倍受青睞。
基于PC/104模塊的嵌入式系統,串行通信是常用的通信方式之一。通過串行數據端口,可以實現PC/104與PC機以及PC/104模塊之間的通信。無人機飛控系統是一個典型的多外設平臺,因此工程設計中必須解決多串行口數據通信問題,完成數據采集或信號傳輸。在其它工程應用中,研究多串口數據通信也尤其重要。應用PC/104模塊在嵌入式系統中擴展8個以上的串行端口,并同時進行雙工數據通信是本文要重點討論。
系統結構及硬件設計
隨著技術的進步,PC/104結構的嵌入式模塊可以根據實際的要求通過簡單的搭積木的方法進行系統擴展,其豐富的功能模塊為設計人員帶來了諸多方便。在無人機飛行控制系統中,部分傳感器、測控終端、任務設備通常采用串行數據接口。本文將結合某型無人機飛控系統開發平臺,介紹應用486DX和EMM-8M-XT嵌入式模塊,實現多串口數據通信擴展設計的方法和工程應用情況。
某型無人機飛控系統結構如圖1所示。實際使用中,CPU板和串口板通過PC104總線棧接,根據使用需要還外擴了AD/DA、DIO等其它功能模塊。本文僅對與串口相關的模塊進行介紹。系統CPU板自帶兩個串行口(P9~P10),外擴的串口板提供8個串行口(P1~P8),分別完成不同的數據通信功能。各口具體功能及通信模式見表1。
表1 串口工作模式及功能
串口號
工作模式
功 能
P1、P2
RS422
與測控設備數據通信用
P3
RS422
接收GPS信息,發送初始信息
P4
RS485
采集航向角數據
P5
RS485
采集高度、空速數據
P6~P8
RS422
與3臺任務設備進行數據通信
P9
RS232
CPU板電子盤程序更新用
P10
RS232
飛控系統監測、航路裝定
圖1 系統結構框圖
486DX模塊
486DX是一種高度集成、具有自棧結構、與IBM-PC/AT兼容的PC/104 CPU模塊。采用增強型的80486嵌入式中央處理器INTEL DX4作為核心元件,工作頻率33~133MHz,4~16M字節的在板DRAM。
486DX模塊在板包含了與PC/AT兼容的DMA控制器、8259類型的中斷控制器及定時器,帶擴展的工業標準ROM-BIOS及鍵盤喇叭接口。在板的外部接口包括一個PC/AT兼容的標準雙向并行口、兩個16550兼容的RS232串行通訊接口、一個用外接后備電池支持實時時鐘,應用EEPROM存儲BIOS參數設置,省去了大多數硬件配置跳線。該板功耗極低,典型值為2.8W,外部電源要求為+5V,可以寬溫工作。
本文設計的系統主要應用該模塊的兩個串行端口,端口1(P9)用于實現模塊電子盤上用戶程序的在線改寫,端口2(P10)主要用于飛控系統參數的實時監測和航路裝定。考慮到實際設計的系統中串口設備多,需要外擴串口模塊實現多串口通信。這里選用DIAMOND公司的EMM-8M-XT串口通信模塊來實現。
EMM-8M-XT模塊擴展設計
EMM-8M-XT串口通信模塊,在板集成了兩個單元高性能的16C554控制芯片(相當于8個16C550),可以達到更高的通訊速率而無需占用過多的CPU資源,模塊的主要特點如下:
·8個通道各有獨立的16字節接收緩沖器和16字節發送緩沖器;
·每個串口可通過硬件跳線設置工作模式(RS232\RS422\RS485任選);
·標準配置波特率可達115.200Kbps(460.8Kbps可選);
·16個不同的I/O地址項;
·10個不同中斷級可選;
·上電時8串口的基地址和中斷選擇從EEPROM中取數據配置,上電后可通過軟件配置;
EMM-8M-XT模塊中,J3、J4為模塊的串行端口。除了包括八個可設置的全信號串行口外,還包括了8路離散的DIO,本例中沒有使用DIO。模塊中包括J5~J9 共5組跳線,通過正確設置這些跳線,可以確定串口工作模式、基地址和中斷號使用。這里需要說明一點,由于串口模塊為外擴方式,其地址不能與CPU模塊串口地址相沖突,因此J9的跳線設置為B(in)、C(in),串口板的基地址為240H。使用的中斷號為3和11,其中P1~P4共享11號中斷,P5~P8共享3號中斷。
要正確使用每個串行口,除了硬件跳線設置正確外,還要對EMM-8M-XT模塊的在板EEPROM進行軟件設置。每個串行口的基地址和中斷號設置均保存在EEPROM中,上電后模塊將從中讀取這些數據,并且中斷號的軟件設置要與硬件跳線設置相一致。
需要說明一點,一旦串口軟件設置成功后,這種設置同硬件跳線設置效果是相同的,這是由EEPROM的非易失性決定的。除非人為通過軟件進行重寫操作,設置的參數才會改變。本例中,筆者用Borland C 編寫了一個軟件設置應用程序(限于篇幅,本文從略),可以在PC/104開發裝置上對EMM-8M-XT模塊進行EEPROM的軟件設置,并且設置后可以回讀、顯示以檢驗設置的正確性。
軟件設計
軟件采用C語言編程,工作于DOS6.22平臺系統下,可讀性好,能夠方便移植到其他平臺。串口通信程序中包含很多模塊,這里以EMM-8M-XT模塊串口服務程序部分代碼為例進行簡單介紹,486DX模塊的編程方法類似。軟件的基本流程參見圖2。
圖2 串口軟件基本流程
Server_COM_Int(CCOM* pCOM)串口服務程序:
void Server_COM_Int(CCOM* pCOM) //串口服務程序
{
int nDataInBuf; //如果還有中斷等待響應
while(!((pCOM->byteIIR=(0x0F&inportb(pCOM->Base+COM_IIR)))
&COM_NO_INT_PENDING)){
switch(pCOM->byteIIR){
case COM_INT_FROM_RDR: //數據準備好
case COM_INT_FROM_RTO: //接收超時
while(inportb(pCOM->Base+COM_LSR)&COM_STATUS_DR){ //FIFO中還有數據
pCOM->pRBuffer[pCOM->pRBEndOff++]
=inportb(pCOM->Base+COM_RB); //數據進環形緩沖區
if(pCOM->pRBEndOff==pCOM->nRBSize)
pCOM->pRBEndOff=0; //調整環形緩沖區指針
}
pCOM->bCOM_Data_OK=TRUE; //串口收據接收完畢
break;
case COM_INT_FROM_TRE: //發送數據準備好
nDataInBuf=pCOM->pTBEndOff-pCOM->pTBHeadOff; //計算緩沖區字符數
if(nDataInBuf==0) //如果字符數為零,禁止"發送空"中斷
outportb(pCOM->Base+COM_IER,
inportb(pCOM->Base+COM_IER)&(~COM_INT_THRE));
else{
outportb(pCOM->Base+COM_MCR, //發送使能,Bit1 置1(拉低RTS)
(inportb(pCOM->Base+COM_MCR)|COM_MCR_RTS)&(~COM_MCR_DTR));
if(nDataInBuf<0) nDataInBuf+=pCOM->nTBSize;//計算緩沖區字符數 if(nDataInBuf>COM_MAX_FIFO_DEP)
nDataInBuf=COM_MAX_FIFO_DEP;
while(nDataInBuf>0){
outportb(pCOM->Base+COM_THB,
pCOM->pTBuffer[pCOM->pTBHeadOff++]);
if(pCOM->pTBHeadOff==pCOM->nTBSize) pCOM->pTBHeadOff=0;
nDataInBuf--;
}
}
outportb(pCOM->Base+COM_MCR, //發送禁止,接收使能
(inportb(pCOM->Base+COM_MCR)&(~COM_MCR_RTS))|COM_MCR_DTR);
break;
}
}
}
應用情況
應用過程中,首先利用自編軟件對各個模塊進行了測試。以EMM-8M-XT為例,試驗流程分為三個步驟:單串口工作→4串口同時工作→8串口同時工作。在測試8串口同時工作時,串口工作在RS232工作模式,將串口模塊直接與4臺工控機共8個串口相連,運行自編軟件進行長時間連續的通信測試,并進行收發計數,工控機和串口模塊各自顯示的收發計數是相等的,表明工作正常。同時在工控機上配接串口轉換器,對RS422、RS485工作模式也進行了測試,得出的結果與RS232類似。
在單個模塊調試成功的基礎上,進行了系統聯試,系統的詳細配置如圖1。仍使用工控機或PC機模擬外圍設備的方法,進行通信試驗。PC/104模塊的開發裝置配接了顯示器,屏顯每個串口的工作情況,本文測試了9個串口同時工作的情況,因為串口P9用于程序更新,用戶程序通過該口寫入,沒有用于實時通信。如果P9不用于此功能,10個串口完全可以同時進行通信。經試驗發現,多串口可以長時間連續穩定進行數據傳輸,而且各個串口可以設置為不同波特率進行工作。
除了大量的常溫測試外,還對整個系統進行了溫度試驗,模塊在高溫+85℃工作和低溫-40℃啟動工作均正常。
多項試驗表明,該系統工作溫度范圍寬、抗干擾能力強,實時性好、可靠性高,適合用于無人機飛控系統及其他工業控制場合。
結語
本文薪檣苡τ肞C/104模塊486DX和EMM-8M-XT實現多串口通訊擴展設計的方法,已成功應用于某型無人機飛控系統的設計開發中。在后續研制工作中,稍作改動,該設計方法還將用于開發飛控系統仿真平臺,替代使用臺式PC機仿真的傳統方案,可與飛控系統配套進行仿真試驗。
這種串口擴展設計方法易于掌握,構建的系統工作穩定,同時在功耗、體積、成本方面有很強的優勢,為多串口通信的工程實現提供了重要參考。
- 工程實現(5399)
相關推薦
評論
查看更多