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