基于80C196KC的ARINC429總線(xiàn)接口板設(shè)計(jì)
在數(shù)據(jù)的發(fā)送過(guò)程中,PC機(jī)通過(guò)串口把數(shù)據(jù)發(fā)送到單片機(jī)的串口緩存區(qū),單片機(jī)查詢(xún)到串口緩存區(qū)有數(shù)據(jù)后,接收到一個(gè)完整的數(shù)據(jù)字。同時(shí)單片機(jī)向HS3282寫(xiě)入一個(gè)32位的數(shù)據(jù)字也要分兩次才能完成。準(zhǔn)備好低16位數(shù)據(jù),控制HS3282的引腳PL1,使PL1從低電平跳變到高電平,將低16位數(shù)據(jù)寫(xiě)入;同樣的方法將高16位數(shù)據(jù)在PL2從低電平跳變到高電平寫(xiě)入。通過(guò)啟動(dòng)HS3282的引腳ENTX發(fā)送控制信號(hào),HS3282將自動(dòng)發(fā)送數(shù)據(jù),其標(biāo)準(zhǔn)滿(mǎn)足ARINC429協(xié)議,單片機(jī)檢測(cè)到TX/R為高,即數(shù)據(jù)發(fā)送完成時(shí)將ENTX置低。發(fā)送函數(shù)如下所示:
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ā)送禁止
}
5 結(jié)論
基于16位單片機(jī)的ARINC429總線(xiàn)接口板利用高性能的專(zhuān)用芯片組HS3282和HS3182來(lái)設(shè)計(jì)總線(xiàn)接口,由于該芯片能很好的滿(mǎn)足ARINC429協(xié)議,給接口板的設(shè)計(jì)帶來(lái)了很大的方便,經(jīng)實(shí)際利用簡(jiǎn)單有效,并且具有很高的可靠性。
評(píng)論