基于80C196KC的ARINC429總線(xiàn)接口板設計
1 引言
本文引用地址:http://dyxdggzs.com/article/201610/311719.htmARINC429總線(xiàn)是美國航空無(wú)線(xiàn)電公司(ARINC)制定的民用航空數字總線(xiàn)傳輸標準,又稱(chēng)為Mark33數字信息傳輸系統,目前廣泛應用于商用及運輸飛機上,我國信息產(chǎn)業(yè)部也于1986年參考ARINC429標準頒布實(shí)施了我國自己的航空通信標準HB-6096-86,其標準和ARINC429基本一致。
傳統的ARINC429總線(xiàn)收發(fā)板多是直接插到計算機的主板接口上,實(shí)現起來(lái)過(guò)于麻煩,并且要編寫(xiě)相應得驅動(dòng)程序來(lái)實(shí)現數據的實(shí)時(shí)顯示和存儲。本文介紹了一種基于Intel的16位單片機80C196KC的ARINC429總線(xiàn)收發(fā)板,它既可以通過(guò)串口連接到計算機上,同時(shí)又可以實(shí)現數據在收發(fā)板的存儲和顯示,設計簡(jiǎn)單,便于攜帶,給ARINC429總線(xiàn)的檢測帶來(lái)了很大的方便。
2 ARINC429總線(xiàn)的傳輸標準及系統整體設計
ARINC429協(xié)議規定以串行方式實(shí)現數字數據信息的傳輸,并且只能是單向傳輸,所以
在總線(xiàn)上只允許有一個(gè)發(fā)送設備,可以同時(shí)有多(不超過(guò)20個(gè))個(gè)接收設備,信息編碼的基本格式有兩種,32位或25位數字組成的基本數據單元,無(wú)論那種格式都包括8位標志位、
1位奇偶校驗位和兩位狀態(tài)位,兩種傳輸格式的不同只是攜帶數據的長(cháng)度不同,數據的傳輸速率有100Kbps和12.5Kbps兩種,既可以實(shí)現高速傳輸又可以低速傳輸[1]。
接口板設計的目的是能夠實(shí)現對ARINC429總線(xiàn)進(jìn)行數據的接收和發(fā)送,,它既能接收雙極歸零制的429信號并將其轉換為數字信號送入計算機或其它設備,又可將計算機或其它設備發(fā)出的數字信號轉換為429信號輸出。本文介紹的總線(xiàn)接口板以Intel的十六位單片機MCS-80C196KC為核心,實(shí)現數據的接收和發(fā)送、外圍芯片的邏輯控制、數據的存儲和顯示以及和計算機的接口[3][4]。ARINC429總線(xiàn)協(xié)議芯片HS-3282完成發(fā)送時(shí)數據的緩存和并行、串行的相互轉換,HS-3182為ARINC429總線(xiàn)的驅動(dòng)芯片,可以實(shí)現系統內部邏輯信號與ARINC429所要求的差分信號的轉換,同時(shí)可以作為發(fā)送數據的緩存和調節發(fā)送速率,系統的整體框圖如圖1所示:

圖1 系統的整體框圖
3 接口板的硬件設計
ARINC429總線(xiàn)協(xié)議芯片和驅動(dòng)芯片
ARINC429的接收電路已經(jīng)有了工業(yè)標準的芯片組,其中以Harris公司生產(chǎn)的HS-3282和HS-3182最為流行,HS-3282是總線(xiàn)協(xié)議芯片,HS-3182是總線(xiàn)驅動(dòng)芯片,都滿(mǎn)足ARINC429的通信標準。
HS-3282是十六位寬的計算機數據總線(xiàn)和ARINC429總線(xiàn)的接口,它有2接收通道和一個(gè)發(fā)送通道,HS-3182是實(shí)現電平的轉換,有關(guān)于這兩個(gè)芯片的介紹很多,這里就不再說(shuō)明。由于A(yíng)RINC429總線(xiàn)的數據寬度為32位,而HS-3282的數據位寬為16位,因此用了兩個(gè)字WORD1、WORD2與計算機交換收發(fā)的32位ARINC429總線(xiàn)上的數據,其數據的對應關(guān)系如表1和表2所示[2]:
表1. WORD1與ARINC429總線(xiàn)數據位的關(guān)系
WORD11514131211109876543210
429協(xié)議13121110931303212345678
429定義數據低位S/DSSMP標志位
表2. WORD2與ARINC429總線(xiàn)數據位的關(guān)系
WORD21514131211109876543210
429協(xié)議29282726252423222120191817161514
429定義±數據位
從表1和表2可以看出,ARINC429的數據位和計算機的數據位并不是一一對應的,在WORD1中有標志位、奇偶校驗位P、狀態(tài)位SSM、源目標標志S/D以及數據低位,WORD2是十六位數據,并且8位標志位是反序的,有時(shí)會(huì )帶來(lái)不便,但計算機采集來(lái)的數據可以直接應用到WORD2上,在發(fā)送數據時(shí)會(huì )非常方便。
HS-3182是作為ARINC429總線(xiàn)的發(fā)送設備完成兩路信號的差分驅動(dòng),與HS-3182相連的電容控制用來(lái)控制ARINC429的傳輸速率,其中c1,c2為75pF時(shí)對應ARINC429總線(xiàn)的高速狀態(tài)(100Kbps)、為300pF時(shí)對應ARINC總線(xiàn)的低速狀態(tài)(12.5Kbps),因此盡量用高精度、軍品級的電容,HS-3282和HS-3182相連的電路圖如圖2所示:

圖2 HS-3282和HS-3182的連接圖
3.2 ARINC429總線(xiàn)收發(fā)硬件電路
硬件的計算機系統采用Intel的16位單片機80C196KC,該CPU可以動(dòng)態(tài)的配置成8位或者16位的總線(xiàn)寬度,結構采用寄存器結構,有232字節的RAM寄存器陣列供用戶(hù)配置,外接晶振為12MHz或者20MHz,可以滿(mǎn)足ARINC429總線(xiàn)的高速發(fā)送和接收。CPU和HS-3282的接口比較簡(jiǎn)單,發(fā)送時(shí)常和HS-3182相配合使用,因為HS-3282的數據寬度為16位的,因此單片機也配置成16位總線(xiàn)寬度,CPU和HS-3282的接口部分關(guān)鍵就是對收發(fā)的邏輯控制,諸如接收器1數據可以讀取標志D/R1,接收器2數據可以讀取標志D/R2,總線(xiàn)選擇信號SEL等端口都需要CPU的控制和監視,在這里就直接和CPU的I/O口相連,當然也可以通過(guò)CPU的I/O,/RD,/WR及地址的低位和GAL或者CPLD相連,通過(guò)編成組成專(zhuān)門(mén)的邏輯控制電路,這在單片機的I/O口不夠用時(shí)可以采用這種辦法,HS-3282需要CPU控制和監視的管腳如表3所示:
表3. S-3282控制及狀態(tài)的引腳及功能
符號管腳號輸入/輸出描述
SEL8輸入總線(xiàn)數據選擇,選擇兩個(gè)十六位中的一個(gè),用于接收器1或2
/DR16輸出接收器1數據可以讀取標志
/DR27輸出接收器2數據可以讀取標志
/EN19輸入接收器1中的數據輸出到總線(xiàn)上
/EN210輸入接收器2中的數據輸出到總線(xiàn)上
/MR39輸入復位信號
ENTX33輸入發(fā)送使能信號,使數據從HS-3182的FIFO發(fā)送到429總線(xiàn)上
/PL128輸入第1個(gè)16位字發(fā)送到FIFO中
/PL229輸入第2個(gè)16位字發(fā)送到FIFO中
TX/R30輸出發(fā)送存儲器FIFO為空標志
/CWSTR34輸入控制字鎖存到控制寄存器
由于HS-3282是外圍器件,收發(fā)速率都沒(méi)有CPU快,因此要為CPU提供READY信號,在這里為CPU提供READY信號的是/EN1和/EN2管腳,只要這兩個(gè)管腳有一個(gè)是低電平就可以產(chǎn)生READY,因此對這兩個(gè)信號加一個(gè)與非門(mén)既可以產(chǎn)生READY信號。
4 軟件設計
HS3282的收發(fā)既可以采用查詢(xún)方式又可以采用中斷方式,由于發(fā)送器狀態(tài)標志位TX/R接到CPU的I/O口,這就限制了軟件設計時(shí)發(fā)送采用查詢(xún)方式。接收兩種方式都可以,在這里采用中斷方式接收。
初始化程序設計
在上電復位后單片機應首先進(jìn)行自身初始化和HS3282的設置,主要是設置單片機的波特率和向HS3282寫(xiě)控制字。在這里設置單片機的串口為工作模式1,即10位構成一串行幀: 1位起始位(0),8位數據(低位在先),1位停止位(1)。單片機首先將控制字寫(xiě)到P3和P4端口,通過(guò)置高再置低P2.7端口,將控制字在/CWSTR的下降沿寫(xiě)入,進(jìn)行工作方式、碼速率等的設置。
接收程序設計
數據的接收以中斷響應的處理為核心。HS3282有兩路接收通道,這兩個(gè)接收通道標志位/DR1、/DR2共享一個(gè)中斷,就容易出現中斷沖突現象,為了避免這種現象在硬件設計中已經(jīng)考慮到了這種問(wèn)題,將接收器標志/DR1、/DR2分別與單片機I/O口的P0.0和P0.1相連接,當產(chǎn)生接收中斷時(shí),通過(guò)軟件檢測方式判斷是哪一路引起的中斷,其軟件設計如下:
ReceiverData(char *data)
{
if(P0.0==0) //P0.0=/DR1
{ P1.3=0; //P1.3=SEL
P1.4=0; //P1.4=/EN1
*data=P3;
*(data+1)=P4; //接收低16位
P1.3=0;
P1.4=1;
P1.4=0;
*(data+2)=P3;
*(data+3)=P4; //接收高16位
?。?/p>
else
if(P0.1==0) //P0.1=/DR2
{ P1.3=0;
P1.5=0;
*data=P3;
*(data+1)=P4; //接收低16位
P1.3=0;
P1.5=1;
P1.5=0;
*(data+2)=P3;
*(data+3)=P4; //接收高16位
?。?/p>
?。?/p>
發(fā)送程序設計
在數據的發(fā)送過(guò)程中,PC機通過(guò)串口把數據發(fā)送到單片機的串口緩存區,單片機查詢(xún)到串口緩存區有數據后,接收到一個(gè)完整的數據字。同時(shí)單片機向HS3282寫(xiě)入一個(gè)32位的數據字也要分兩次才能完成。準備好低16位數據,控制HS3282的引腳PL1,使PL1從低電平跳變到高電平,將低16位數據寫(xiě)入;同樣的方法將高16位數據在PL2從低電平跳變到高電平寫(xiě)入。通過(guò)啟動(dòng)HS3282的引腳ENTX發(fā)送控制信號,HS3282將自動(dòng)發(fā)送數據,其標準滿(mǎn)足ARINC429協(xié)議,單片機檢測到TX/R為高,即數據發(fā)送完成時(shí)將ENTX置低。發(fā)送函數如下所示:
SendData(char *data)
{ P1.6=0; //P1.6=PL1
P3=*data;
P4=*(data+1); //低16位
P1.6=1; //上升沿寫(xiě)入
P1.7=0; //P1.7=PL2
P3=*(data+2);
P4=*(data+3); //高16位
P1.7=1; //上升沿寫(xiě)入
P2.6=0; //P2.6=ENTX,發(fā)送使能
while(P0.2); //P0.2=TX/R,檢查是否發(fā)送完成
P2.6=1; //發(fā)送禁止
?。?/p>
5 結論
基于16位單片機的ARINC429總線(xiàn)接口板利用高性能的專(zhuān)用芯片組HS3282和HS3182來(lái)設計總線(xiàn)接口,由于該芯片能很好的滿(mǎn)足ARINC429協(xié)議,給接口板的設計帶來(lái)了很大的方便,經(jīng)實(shí)際利用簡(jiǎn)單有效,并且具有很高的可靠性。
評論