基于CAN總線(xiàn)的A320模擬器硬件仿真方案研究
4.2 通信實(shí)現(xiàn)
CAN總線(xiàn)節(jié)點(diǎn)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)主要分為三部分,分別是初始化設(shè)置、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。初始化CAN控制器的一般步驟如下:
(1)將SFRPAGE寄存器設(shè)置為CAN0_PAGE;
(2)將CAN0CN寄存器中的INIT和CCE位設(shè)置為1;
(3)設(shè)置位定時(shí)寄存器和BRP擴(kuò)展寄存器中的時(shí)序參數(shù);
(4)初始化每個(gè)消息對(duì)象或?qū)⑵銶sgVal位設(shè)置為無(wú)效;
(5)將INIT位清零。接收數(shù)據(jù)有查詢(xún)和中斷兩種方式,本文在設(shè)計(jì)時(shí)采用中斷方式。接收數(shù)據(jù)程序流程圖如圖4所示。本文引用地址:http://butianyuan.cn/article/187558.htm
當(dāng)總線(xiàn)上有數(shù)據(jù)傳入時(shí)程序進(jìn)入中斷,讀取中斷寄存器的值,該值對(duì)應(yīng)32個(gè)消息對(duì)象中的其中一個(gè)消息號(hào),將該消息號(hào)寫(xiě)入IFx命令請(qǐng)求寄存器,讀取IFx報(bào)文控制寄存器,查看標(biāo)志位NewData,值為1表示有新數(shù)據(jù),值為0表示沒(méi)有新數(shù)據(jù),讀取完當(dāng)前數(shù)據(jù)后查看數(shù)據(jù)塊結(jié)束標(biāo)識(shí)位Eob,值為1表示數(shù)據(jù)塊結(jié)束,當(dāng)前數(shù)據(jù)接收完成;值為0,表示數(shù)據(jù)塊沒(méi)有結(jié)束,將消息號(hào)增一,繼續(xù)接收下一個(gè)消息對(duì)象中的數(shù)據(jù),直至接收完成。發(fā)送數(shù)據(jù)時(shí)需配置寄存器,設(shè)定報(bào)文ID,此外還需在將數(shù)據(jù)寫(xiě)入數(shù)據(jù)寄存器的時(shí)候,先寫(xiě)高位后寫(xiě)低位,即先對(duì)CANODATH賦值,再對(duì)CANODATL賦值,最后將消息號(hào)寫(xiě)入IFx命令請(qǐng)求寄存器即啟動(dòng)數(shù)據(jù)傳送。
5 結(jié)語(yǔ)
實(shí)際測(cè)試表明,模塊間通信穩(wěn)定,抗干擾性強(qiáng),且布線(xiàn)簡(jiǎn)潔。該方案已經(jīng)應(yīng)用于機(jī)載電子系統(tǒng)故障診斷模擬機(jī),雖然該模擬機(jī)是針對(duì)A320機(jī)型,但是該方案也可擴(kuò)展應(yīng)用到其他機(jī)型的模擬機(jī),具有廣闊的應(yīng)用前景。
評(píng)論