基于代碼生成的車(chē)身網(wǎng)絡(luò )電控系統設計
(2)ISR的定位問(wèn)題。中斷服務(wù)程序的聲明和定義都必須定位于non-banked區域,通過(guò)使用“#pragma CODE_SEG NON_BANKED”實(shí)現。同時(shí),中斷服務(wù)程序末尾需要添加“#pragma CODE_SEG DEFAULT”,否則后面的函數也會(huì )被定位在non-banked區域而導致錯誤。因此,中斷服務(wù)程序必須被“#pragma CODE_SEG NON_BANKED”和“#pragma CODE_SEG DEFAULT”包圍起來(lái)。這也可通過(guò)修改代碼生成模板實(shí)現。結合ISR返回值的宏定義,只需在當函數返回值的前3個(gè)字符是“ISR”時(shí),在函數前后輸出上述兩條pragma預編譯指令即可。生成ISR聲明的代碼生成模板的核心部分如下:

仍以上述CAN0模塊的接收中斷為例,最終生成的函數聲明如下;

3 調試與驗證
本設計除了使用USBCAN卡作為數據采集節點(diǎn)以外,為了驗證兩種總線(xiàn)協(xié)議的實(shí)現是否符合標準,更直觀(guān)地查看總線(xiàn)幀中各個(gè)字段的值以及隨時(shí)檢測總線(xiàn)上是否發(fā)生幀錯誤等,使用PC示波器PicoScope 5203搭配總線(xiàn)協(xié)議分析軟件WaveBPS捕獲兩種總線(xiàn)信號并進(jìn)行協(xié)議分析。Pi-coScope的兩個(gè)通道可同時(shí)捕獲CAN總線(xiàn)及LIN總線(xiàn)上的信號,進(jìn)一步方便了網(wǎng)關(guān)節點(diǎn)的調試。
圖5為在控制面板節點(diǎn)(源地址為0x26)打開(kāi)左轉向燈時(shí)發(fā)送給車(chē)燈節點(diǎn)(目標地址為0x20)的CAN數據幀。其中,標記為S的位是根據位填充規則自動(dòng)插入的填充位。圖6為車(chē)燈節點(diǎn)收到上述CAN數據幀后,根據網(wǎng)關(guān)路由策略及幀轉換規則,發(fā)送到LIN總線(xiàn)上的數據幀。本文引用地址:http://dyxdggzs.com/article/197566.htm
4 結論
本設計借助EA的代碼生成功能,通過(guò)修改代碼生成模板以滿(mǎn)足車(chē)身網(wǎng)絡(luò )電控系統開(kāi)發(fā)中C語(yǔ)言及編譯器的要求,進(jìn)行了車(chē)身網(wǎng)絡(luò )系統的開(kāi)發(fā)和初步實(shí)驗驗證。此方法極大地方便了設計開(kāi)發(fā),并可提高系統的可靠性。
評論