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