網關的軟件設計采用嵌入式操作系統μC/OS-Ⅱ,它具有較小的內核結構,開發成本小,執行效率高,移植也容易。初始化文件通過JTAG下載到網關并保存在FLASH中。
該設計的關鍵是編寫CAN驅動程序,主程序通過調用CAN驅動程序實現接口數據的收發,驅動程序包括CAN控制器的初始化、接收數據、發送數據和總線異常處理。
CAN控制器的初始化
初始化操作包括硬件使能CAN、軟件復位、設備報警界限、設置總線波特率、設置中斷工作方式、設置CAN驗收過濾器工作方式、設置控制器的工作模式和啟動CAN等。
LPC2294片內外設與引腳的連接由引腳連接模塊控制。CAN控制器的硬件使能就是通過軟件設備GPIO寄存器來控制多路開關,將特定的引腳與CAN控制器連接起來。
數據的接收與發送
LPC2294的每個CAN控制器中有3個發送緩沖區,發送數據時先查詢CANSR寄存器是否空閑,若空閑才能寫入數據,然后判斷報文的類型,根據報文類型調用相應的發送函數,即對數據進行封裝并寫入發送緩沖區,最后調用發送命令。
為了提高效率,接收數據采用中斷方式,首先在CANopen的初始化程序中要使能接收中斷,當有中斷發生,讀取CANICR寄存器,判斷接收中斷標志是否置位。
異常處理
在總線發生嚴重故障的情況下,CAN節點脫離總線,此時下述寄存器位被置位為CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。
RM將許多CAN控制器功能復位和禁止。軟件下一步必須置零RM位。發送錯誤計數器將遞減計數總線釋放條件(11個連續的隱性位)的第128個錯誤。
-
CAN
+關注
關注
57文章
2754瀏覽量
463704 -
通信軟件
+關注
關注
0文章
12瀏覽量
6998
原文標題:西安站 | EDA365·電子硬件技術研討會精彩回顧
文章出處:【微信號:eda365wx,微信公眾號:EDA365電子論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論