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