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