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

FPGA實現(xiàn)CAN總線通信節(jié)點設計

CAN總線通訊軟件的設計及在航空領域的應用研究
MVB-CAN通信網(wǎng)關的硬件設計框圖、軟件設計和系統(tǒng)性能測試詳細介紹

基于CAN總線接口卡的軟件設計
CAN總線的原理、通信接口設計及在航天衛(wèi)星中的應用研究

基于FPGA的CAN總線通信節(jié)點設計
基于VB6.0的串行通信工控軟件設計及實例

評論