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