1引言
在許多復(fù)雜的測控、測試及數(shù)據(jù)處理系統(tǒng)中,一般需要與大量的被控對象、被測試設(shè)備及自動(dòng)化儀表進(jìn)行通信,而這些對象、設(shè)備及儀表等所提供的接口大多是標(biāo)準(zhǔn)的異步串行接口形式,因此,在以CPU為核心,與多路外圍設(shè)備進(jìn)行串行通信的測控、測試系統(tǒng)中,需要對串行接口進(jìn)行擴(kuò)充,通過選擇功能合適的接口器件完成系統(tǒng)的設(shè)計(jì)要求。
目前,市場上出現(xiàn)了多種型號的接口芯片, Philips半導(dǎo)體公司生產(chǎn)的四通道通用異步接收/發(fā)送器芯片SC26C94是其中之一。它以高集成度、低功耗、高性能、使用靈活等特點(diǎn)被廣泛應(yīng)用于航空、航海、工業(yè)控制等領(lǐng)域中。
2 SC26C94器件
SC26C94是采用COMS技術(shù)生產(chǎn)的四通道通用異步接收/發(fā)送器芯片,共有4個(gè)相互獨(dú)立的通道,且每個(gè)通道各有4個(gè)數(shù)字I/O口和2個(gè)16位定時(shí)/計(jì)數(shù)器,它們均可以通過編程設(shè)置其工作方式。結(jié)構(gòu)框圖如圖1所示。
2.1 SC26C94特點(diǎn)
SC26C94為用戶提供了+5V的供電方式,信號電平與TTL電平兼容,有DIP和PLCC兩種封裝形式,并具有以下特點(diǎn):
·8字節(jié)發(fā)送FIFO;
·8字節(jié)接收FIFO;
·數(shù)據(jù)格式:5~8位數(shù)據(jù)位,包括奇校驗(yàn)、偶校驗(yàn)和無校驗(yàn)、1、1.5、2位停止位;
·發(fā)送和接收可設(shè)置不同波特率(23種固定波特率:50~230.4k或外部時(shí)鐘的1倍或16倍);
·校驗(yàn)錯(cuò)誤、幀錯(cuò)誤和超限錯(cuò)誤檢測;
·起始位錯(cuò)誤檢測;
·通道工作模式可編程設(shè)置:即普通全雙工、自動(dòng)回繞、局部循環(huán)和遠(yuǎn)程循環(huán)四種模式;
·中斷優(yōu)先級可編程設(shè)置并自動(dòng)識別;
·具有掉電保護(hù)模式;
2.2 SC26C94寄存器
SC26C94的工作方式是可編程的,工作方式通過對其一系列寄存器設(shè)置來定義,因此使用過程中,需要了解以下寄存器功能:
(1)MR0:工作方式寄存器0
定義發(fā)送和接收寄存器的FIFO工作狀態(tài)及接收器“看門狗”是否啟動(dòng)。
(2)MR1:工作方式寄存器1
該寄存器和MR0組合定義接收FIFO工作狀態(tài)及數(shù)據(jù)格式,包括:5~8位數(shù)據(jù)位、奇校驗(yàn)、偶校驗(yàn)和無校驗(yàn)、1、1.5、2位停止位。
(3)MR2:工作方式寄存器2
定義通道工作模式(包括普通全雙工、自動(dòng)回繞、局部循環(huán)和遠(yuǎn)程循環(huán)),停止位(1、1.5、2位)。
(4)CSR:時(shí)鐘選擇寄存器
該寄存器與BRG(波特率產(chǎn)生器)、ACR(輔助控制寄存器,選擇波特率設(shè)置方式)一起設(shè)置接收和發(fā)送波特率。
(5)CR:命令寄存器
定義各發(fā)送接收端口工作狀態(tài)及是否允許發(fā)送接收。
(6)SR:狀態(tài)寄存器
反映發(fā)送接收緩沖器狀態(tài)及幀錯(cuò)、奇偶校驗(yàn)錯(cuò)、超限錯(cuò)等狀態(tài)。
(7)IMR:中斷屏蔽寄存器
定義各端口是否允許中斷。
(8)ISR:中斷狀態(tài)寄存器
反映當(dāng)前中斷類型。
(9)CIR:當(dāng)前中斷寄存器
反映當(dāng)前中斷的通道號和發(fā)送或接收中斷類型。
3 SC26C94在測控系統(tǒng)中的應(yīng)用
某航空測控系統(tǒng)是以80X86為核心,由A/D、 D/A及開關(guān)量控制、10種測試設(shè)備組成的,其中
測試設(shè)備中有8路為標(biāo)準(zhǔn)串行通信,分別為發(fā)動(dòng)機(jī)轉(zhuǎn)速、氣壓、高度、速度、遙測調(diào)制器、遙控解調(diào)器、地磁方向、GPS等量。系統(tǒng)選用兩片 SC26C94,擴(kuò)充8個(gè)串行口,實(shí)現(xiàn)80X86與8路測試設(shè)備的通信。
3.1 硬件設(shè)計(jì)
(1)振蕩電路
SC26C94內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反向放大器,引腳X1與X2分別是此放大器的輸入端和輸出端。此放大器與外部晶體構(gòu)成一個(gè)振蕩器,此例中采用了內(nèi)部振蕩電路。如圖2所示,G1(G2)為3.6864MHz晶體;外部電容C2(C5)、 C3(C6)的典型值為24pF;另外,使用外部晶振時(shí),可經(jīng)過一非門,在非門輸出端并聯(lián)一個(gè)1k W的上拉電阻,從公共點(diǎn)引出與引腳X1連接。
(2)復(fù)位電路
SC26C94復(fù)位時(shí)間必須保證RESET引腳上出現(xiàn) 1ms以上穩(wěn)定的高電平,才可實(shí)現(xiàn)可靠的復(fù)位。因此無論是簡單還是復(fù)雜的復(fù)位電路,均要保證此條件。圖2中使用了簡單的復(fù)位電路,其中R1 (R2)=1.5kW、C1 (C4)=10mF。
(3)接口電路
如圖2所示,通過ISA總線將80X86CPU與SC26C94及其它系統(tǒng)連接起來。其中D1完成總線驅(qū)動(dòng)、隔離和地址譯碼,RXD1~RXD8與TXD1~ TXD8是SC26C94的接收/發(fā)送端,分別與外部的8路測試設(shè)備連接,實(shí)現(xiàn)CPU與外圍設(shè)備的通信。
3.2 SC26C94軟件設(shè)計(jì)
SC26C94的軟件設(shè)計(jì)首先是對其進(jìn)行初始化,然后再分別對各個(gè)中斷源進(jìn)行中斷服務(wù)程序的設(shè)計(jì);可選擇C或匯編語言進(jìn)行編程。
3.2.1 初始化編程
初始化編程主要選擇芯片工作方式,包括數(shù)據(jù)格式、波特率、中斷允許、接收或發(fā)送緩沖器所允許的字節(jié)數(shù)等。編程方法及順序如下:
(1)復(fù)位接收FIFO(CR)復(fù)位發(fā)送FIFO (CR);
(2)禁止DACKN;
(3)選擇波特率組別(BRGrate);
(4)定義中斷向量類型(ICR);
(5)選擇波特率組別(ACR);
(6)設(shè)置中斷屏蔽寄存器(IMR);
(7)指針指向MR0(CR);
(8)設(shè)置數(shù)據(jù)格式及波特率(MR0、MR1、 MR2、CSR);
(9)接收發(fā)送允許(CR)。
以C語言為例對通道A初始化程序設(shè)計(jì)如下:
outportb(uaraddr,uarCRa);
outportb(uarcen1,0x20);
outportb(uarcen1,0x30);
outportb(uaraddr,uarDACKN);
outportb(uarcen1,0);
outportb(uaraddr,uarBRGrate)
outportb(uarcen1,0x00);
outportb(uaraddr,uarICR);
outportb(uarcen1,0x02);
outportb(uaraddr,uarACRab);
outportb(uarcen1,0x80);
outportb(uaraddr,uarIMRab);
outportb(uarcen1,uar1IMRabd);
//UAR1 a yx1(laser)
outportb(uaraddr,uarCRa)
outportb(uarcen1,0xb0);
outportb(uaraddr,uarMRa);
outportb(uarcen1,0x80);
outportb(uarcen1,0x53);
outportb(uarcen1,0x07);
outportb(uaraddr,uarCSRa);
outportb(uarcen1,0x88);
outportb(uaraddr,uarCRa);
outportb(uarcen1,0x05);
3.2.2 中斷服務(wù)程序設(shè)計(jì)
由于SC26C94四通道中的任何一個(gè)都可引起中斷,因此在中斷服務(wù)程序中首先要識別中斷源,即識別中斷是由哪一個(gè)通道引起,是發(fā)送中斷還是接收中斷,是有錯(cuò)誤還是無錯(cuò)誤等。流程如圖3所示。
根據(jù)流程圖可編程如下:
void interrupt (*oldvect2)();
void interrupt UAR1_interrupt(void)
{
//保護(hù)現(xiàn)場//
for(ii2=1;ii2《=5;ii2++)
{
outportb(uaraddr,uarupdateCIR);
outportb(uarcen1,0x00);
outportb(uaraddr,uarCIR);
uar1cir=inportb(uarcen1);
outportb(uaraddr,uarISRab);
uar1israb=inportb(uarcen1);
outportb(uaraddr,uarISRcd);
uar1isrcd=inportb(uarcen1);
outportb(uaraddr,uarGIBCR);
count1=inportb(uarcen1);
if (count1 》 8) count1 = 8;
stt1=uar1cir&0x1f;
if(stt1《=3)break;
switch(stt1)
{
case 0x1c:
//中斷服務(wù)程序//
break;
default:;
}
}
//恢復(fù)現(xiàn)場//
}
4 結(jié)論
上述測控系統(tǒng)設(shè)計(jì)及運(yùn)行過程表明,SC26C94 具有使用靈活、功能豐富、系統(tǒng)連接方便、編程簡單、可靠性高等特點(diǎn),另外,其合理的性能價(jià)格比及暢通的貨源渠道,表現(xiàn)出較好的工程實(shí)用特性,是一種實(shí)用的接口芯片,可廣泛應(yīng)用于自動(dòng)化儀表、測試、測控及數(shù)據(jù)處理等系統(tǒng)中。
-
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210829 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2253瀏覽量
94283 -
處理系統(tǒng)
+關(guān)注
關(guān)注
0文章
93瀏覽量
16651
發(fā)布評論請先 登錄
相關(guān)推薦
評論