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