LPC2000系列32位ARM微控制器內(nèi)嵌的CAN總線驗(yàn)收濾波器應(yīng)用
CAN(Controller Area NetWork)總線,即控制器局域網(wǎng)總線,是由德國Bosch公司于1982年開發(fā)和推出的最早用于汽車內(nèi)部測量與執(zhí)行部件之間的數(shù)據(jù)通信協(xié)議。在20多年的歷史中,CAN總線在許多領(lǐng)域得到了應(yīng)用,是到目前為止唯一有國際標(biāo)準(zhǔn)的現(xiàn)場總線。
本文引用地址:http://2s4d.com/article/201706/348267.htmCAN現(xiàn)場總線按照國際標(biāo)準(zhǔn)化組織ISO提出的開放系統(tǒng)互聯(lián)(OSI)參考模式,實(shí)現(xiàn)其中的物理層、數(shù)據(jù)鏈路層和應(yīng)用層。CAN控制器用來實(shí)現(xiàn)CAN總線協(xié)議。CAN控制器芯片分為兩類:一類是獨(dú)立的控制器芯片,如SJA1000;另一類是和微控制器做在一起,如Philips公司的LPC2000系列32位ARM微控制器。兩類控制器都提供了報(bào)文標(biāo)識過濾的驗(yàn)收濾波器。但獨(dú)立CAN控制器的驗(yàn)收濾 波器只能對規(guī)律性較強(qiáng)的報(bào)文標(biāo)識符(Identifier,簡稱ID)進(jìn)行篩選過濾,或是對個數(shù)較少的ID進(jìn)行任意篩選,難以實(shí)現(xiàn)更加復(fù)雜的任意ID篩 選。Philips公司的LPC2000系列32位ARM微控制器內(nèi)嵌的驗(yàn)收濾波器為CAN控制器提供了全局的標(biāo)識符查詢功能,能實(shí)現(xiàn)復(fù)雜的報(bào)文ID過 濾,而且可以大大減輕微控制器的負(fù)擔(dān)。
1驗(yàn)收濾波器的特點(diǎn)和功能
1.1驗(yàn)收濾波器的特點(diǎn)
LPC2000 系列ARM微控制器是采用ARM7TDMI-S內(nèi)核的32位嵌入式微處理器,內(nèi)嵌2路或4路CAN控制器和驗(yàn)收濾波器。驗(yàn)收濾波器為CAN控制器提供全局 的報(bào)文標(biāo)識過濾功能。它包含一個512×32(2 KB)的RAM,在這2 KB的RAM中可以設(shè)置1~5個報(bào)文標(biāo)識符表,形成一個查找表LUT(LookUp Table)。整個查找表可以容納1 024個標(biāo)準(zhǔn)標(biāo)識符或512個擴(kuò)展標(biāo)識符,或兩種混合類型的標(biāo)識符。5個可能的標(biāo)識符表格包括FullCAN的標(biāo)準(zhǔn)標(biāo)識符表和獨(dú)立標(biāo)準(zhǔn)標(biāo)識符表、標(biāo)準(zhǔn)標(biāo)識 符范圍表、獨(dú)立擴(kuò)展標(biāo)識符表以及擴(kuò)展標(biāo)識符范圍表。這5個表格不是必須同時(shí)存在,可以根據(jù)需要裁減。如果一個表格的起始地址等于下一個表格的起始地址或表 格終止寄存器的數(shù)值,則該表格為空,在處理中將被忽略。
1.2驗(yàn)收濾波器的功能
LPC2000系列ARM微控制器的CAN 驗(yàn)收濾波器有2種工作模式:一種是一般模式;另一種被稱為FullCAN模式。在一般模式下,當(dāng)CAN控制器的接收端收到一個完整的標(biāo)識符時(shí),它將通 知接收驗(yàn)收濾波器。驗(yàn)收濾波器響應(yīng)這個信號,讀出CAN控制器編號和標(biāo)識符大小(標(biāo)準(zhǔn)標(biāo)識符11位或擴(kuò)展標(biāo)識符29位);然后搜索LUT,查找匹配的標(biāo)識 符。如果找到匹配的標(biāo)識符,則通知CAN控制器將接收的報(bào)文放入CAN控制器接收緩沖中;否則,放棄接收到的這一幀信息。其工作流程如圖1所示。
2.1 驗(yàn)收濾波器寄存器描述
以LPC2292為例說明其驗(yàn)收濾波 器驅(qū)動程序的開發(fā)。在LPC2292中內(nèi)嵌2路CAN控制器,它的驗(yàn)收濾波器寄存器如表1所列。注意:這里的起始地址是以驗(yàn)收濾波器RAM的起始地址為基 本地址的偏移。如在一般模式下,SFF_sa=O表示獨(dú)立標(biāo)準(zhǔn)幀標(biāo)識符的起始地址位于0xE0038000處。
一個表格的大小由其前后2個 表格起始地址寄存器的差值決定。例如,SFF_GRP_sa-SFF_sa為獨(dú)立標(biāo)準(zhǔn)幀標(biāo)識符查找表格大小。若其值為0,即 SFF_GRP_sa=SFF_sa,則獨(dú)立標(biāo)準(zhǔn)幀標(biāo)識符查找表格大小為0,在查找時(shí)此表格將被忽略。查找表結(jié)束寄存器ENDofTable代表查找表結(jié) 束地址,ENDofTable-EFF_GRP_sa為擴(kuò)展幀組標(biāo)識符查找表大小。驗(yàn)收濾波器寄存器AFMR控制其工作模式,具體定義如表2所列。
①FullCAN的標(biāo)準(zhǔn)標(biāo)識符表和獨(dú)立標(biāo)準(zhǔn)標(biāo)識符表。
要注意的是,每個FullCAN的標(biāo)準(zhǔn)標(biāo)識符表和獨(dú)立標(biāo)準(zhǔn)標(biāo)識符表都必須按升序排列,即標(biāo)識符1大于標(biāo)識符O;否則,在AF中將引起表格錯誤而使接收過濾失敗。表格格式如下:
③獨(dú)立擴(kuò)展標(biāo)識符表。1個獨(dú)立擴(kuò)展標(biāo)識符占1個字,而且需要按升序排列。表格格式如下:
2.3驗(yàn)收濾波器驅(qū)動程序的設(shè)計(jì)
根據(jù)以上說明,就可以設(shè)計(jì)驗(yàn)收濾波器的驅(qū)動程序了。以LPC2292為例來說明如何設(shè)計(jì)驅(qū)動程序。
假 定獨(dú)立標(biāo)準(zhǔn)標(biāo)識符有ID0和ID1兩個,依次按升序排列,組標(biāo)準(zhǔn)幀標(biāo)識符范圍為ID2~I(xiàn)D3(ID2ID3);獨(dú)立擴(kuò)展幀標(biāo)識符有ID4和 ID5兩個,升序排列,組擴(kuò)展幀標(biāo)識符范圍為ID6~I(xiàn)D7(ID6ID7)。限于篇幅,這里只以少量ID為例。標(biāo)準(zhǔn)和擴(kuò)展的獨(dú)立ID的個數(shù)可以 增減;標(biāo)準(zhǔn)和擴(kuò)展的幀ID范圍組個數(shù)也可根據(jù)需要增減,比如可以有2個或2個以上的標(biāo)準(zhǔn)幀ID范圍組。
3 結(jié)論
LPC2000系列ARM微控制器的CAN驗(yàn)收濾波器能夠有效地屏蔽總線上不允許通過的報(bào)文,大大減輕了CPU的負(fù)擔(dān),在以CAN總線為通信網(wǎng)絡(luò)的應(yīng)用中發(fā)揮了很大的作用。
評論