吳成加(安徽安凱汽車股份有限公司,合肥230051)
MSCAN通訊驗收濾波器設計
吳成加
(安徽安凱汽車股份有限公司,合肥230051)
介紹MSCAN控制器及CAN濾波器的原理,應用于接收多幀CAN信息時MSCAN的驗收碼及屏蔽碼的設置方法,并給出一個用于接收單幀或多幀信息時的驗收碼、屏蔽碼設計實例,便于用戶在設計時進行快速設置。
汽車電子;MSCAN;驗收濾波器;屏蔽碼
隨著汽車電子化的提高和汽車CAN總線的普及,汽車電子控制單元的使用也越來越多。電子控制單元可以通過CAN總線網(wǎng)絡獲得更多的信息,來實現(xiàn)更加精確的控制,達到信息與資源的共享。網(wǎng)絡接點的增加,同時也導致通訊信息量的增加。對于CAN發(fā)送節(jié)點,其發(fā)送的數(shù)據(jù)可以被網(wǎng)絡中的所有節(jié)點接收;對于接收節(jié)點,它能接收總線上的所有CAN幀信息。各控制節(jié)點需要從眾多的信息中,挑選自已所需的信息,對無用的信息進行剔除和信息過濾。要想只獲得某些特定的信息,需要根據(jù)所接收的ID信息設置自身CAN控制器的驗收和屏蔽碼,實現(xiàn)信息過濾??梢酝ㄟ^對驗收濾波器進行各種方式的設置,對標識符驗收寄存器和標識符屏蔽寄存器進行修改,使CAN控制器通過濾波器來過濾掉不需要接收的CAN報文信息[1-3],有效地屏蔽總線上不允許通過的報文,大大減輕CPU的負擔。本文介紹Freescale MSCAN控制器中CAN濾波及驗收碼的設置,并根據(jù)此原理設計出一個用于多幀信息接收時驗收碼、屏蔽碼的實例,便于用戶在設計過程中進行快速設置。
MSCAN控制器將需要接收或發(fā)送的報文轉換為MSCAN格式的信息幀,通過CAN收發(fā)器實現(xiàn)信息交換。MSCAN控制器主要包含接收/發(fā)送引擎、報文過濾和緩沖器、CAN控制和狀態(tài)寄存器等[4-5],如圖1所示。
其工作原理是通過對控制寄存器、總線時鐘的配置,設置CAN通訊的波特率、濾波器,使其工作在一定的頻率下,當有總線報文傳送到外部端口上時,數(shù)據(jù)會被送入到后臺緩沖區(qū)。當與報文過濾器中的驗收和屏蔽碼相符時,數(shù)據(jù)會被接收,并產(chǎn)生一個接收中斷請求,發(fā)送數(shù)據(jù)被送入緩沖區(qū)時,用戶先對發(fā)送ID、數(shù)據(jù)長度及發(fā)送優(yōu)先級進行配置。當啟動發(fā)送標志位后,數(shù)據(jù)即被發(fā)送到總線上。
擴展幀與標準幀報文緩沖區(qū)的定義如圖2和圖3所示。由于標準幀的標識符只占11位,所以只占用IDR0~IDR4中的IDR0、IDR1字節(jié),標準幀與擴展幀的報文收發(fā)緩沖區(qū)的其它部分含義相同。對于發(fā)送緩沖區(qū)來說,其緩沖區(qū)中的內(nèi)容是可讀可寫的[6]。要實現(xiàn)CAN接收的濾波功能,用戶需要對MSCAN中與濾波、驗收有關的寄存器進行設置。MSCAN其它寄存器及設置因與本文所述重點無關,不再贅述。
CAN總線的幀數(shù)據(jù)在總線上傳送時,由于數(shù)據(jù)是采用廣播方式發(fā)送的,當一幀數(shù)據(jù)發(fā)送到總線上后,其它的CAN總線節(jié)點對這一幀信息都會作出響應、判斷后進行處理。其它的CAN控制器是通過驗收濾波來決定總線上的數(shù)據(jù)幀的ID是否和本節(jié)點相符。如果吻合,那么總線上的數(shù)據(jù)就被存入總線控制器的相應寄存器里,否則就拋棄該數(shù)據(jù),從而也能夠減輕總線控制器的工作量。也就是說,總線上數(shù)據(jù)幀的ID通過待接收節(jié)點的驗收濾波后,與本節(jié)點需要接收的ID要求相吻合,才可以被接收。
2.1標識符驗收控制寄存器
標識符驗收控制寄存器的定義如圖4所示,IDAM1-IDAM 0-Identifier AcceptanceM ode(標識符驗收模式標志)處理器通過設置該位來定義標識符驗收濾波模式,表1列出了不同驗收模式的設置。
標識符驗收控制寄存器的IDHIT2、IDHIT1、IDHIT0是標識符接收有效標志指示器,MSCAN設置這些標志來顯示標識符接收有效標志。它指示出了當前哪個濾波器里有效。
表2給出了不同的標識符接收有效的指示[7]。在關閉濾波器的模式下,將不能接收報文。
表1 標識符接收模式設置
表2 標識符接收有效標志指示器
一次濾波器匹配可由接收緩沖器已滿標志通知給應用軟件,這些標識符匹配標志能夠清晰識別引起接收的濾波寄存器,它簡化了應用軟件處理接收器中斷來源的任務。當有兩個或多個濾波器匹配時,低地址的寄存器具有優(yōu)先權。
2.2標識符驗收寄存器
AC7-AC0-AcceptanceCode Bits驗收代碼位,由用戶定義的位順序組成。通過這種方式,接收報文緩沖區(qū)中的標識符寄存器中的內(nèi)容與驗收代碼相應的位進行比對,比較后的結果再與屏蔽寄存器中相應的位進行掩碼屏蔽。只有當接收的報文中標識符與標識符驗收寄存器中預定義的位值相等時,CAN控制器才會通知CPU去讀取接收的報文,否則,當前報文將會被下一個報文覆蓋。對于擴展幀,需要使用4個驗收寄存器和4個屏蔽寄存器;對于標準幀,則各只占前兩個。
2.3標識符屏蔽寄存器
AM7-AM0-AcceptanceMask Bits驗收屏蔽位,用于指定驗收代碼寄器中有關位是否有效。當一個驗收屏蔽位被清為0時,表明該位與對應的標識符寄存器必須和驗收碼寄存器中的相應位相同時才認為是匹配的。只有當所有位均匹配,報文才會被接收。當某驗收屏蔽位被置為1時,驗收代碼寄存器中的內(nèi)容則不影響報文的接收。對于11位標識符的標準幀,需要將屏蔽寄存器1的低3位定義成無關[8]。如圖6所示。
MSCAN控制器可以設置為兩個32位濾波器、四個16位濾波器或八個8位濾波器,各種信息在接收后被寫入到后臺接收緩沖區(qū)。只有當處理器達到標識符接收和標識符屏蔽寄存器中規(guī)定的標準時,處理器才會被通知讀取信息,MSCAN的接收寄存器以逐位方式應用于濾波器的IDR0-IDR3寄存器。
3.1濾波器設置方法
CAN濾波器的設置方法與標識符的分配有很大關系??偩€CAN節(jié)點的信息分為發(fā)送信息與接收信息,無論是在點對點、點對多,還是廣播方式的接收過程中,在設置濾波器時,先要對將要接收的CAN標識符信息進行分析,將節(jié)點報文的ID進行對比,由高位向低位的順序,找出其相同與不同位,來進行驗收碼與屏蔽碼的設置。
如圖7所示,CANIDAR0寄存器是驗收代碼寄存器,CANIDMR0是驗收屏蔽寄存器。在32位濾波器中,CANIDAR0與IDR0相對應,CANIDAR0一般是需要與對應的IDR0相吻合的。如果CANIDMR0的相應位上設置為1時,ID的那一位數(shù)據(jù)可以不和CANIDMR0的相應位一樣,也就是起到了屏蔽的作用。例如,如果CANIDAR0=0b00111101,CANIDMR0=0b00000000,那么要想通過驗收濾波,必須ID.28-ID.21=CANIDAR0= 0b00111101。如果CANIDMR0=0b00000010,那么ID. 28-ID.21=0b00111111時,也可以通過驗收濾波,因為此時CANIDMR0的第二位為1,也就是屏蔽了CANIDAR0的第二位。所以ID的相應位可以不和CANIDAR0一致。
3.2設計實例
由圖2和圖3可以看出,擴展標識符信息在緩沖區(qū)的位定義信息包含了一個遠程請求信息SSR、擴展幀信息IDE,標準幀信息也包含了一個遠程幀RTR和擴展格式位IDE。在進行信息配置時,需要將這些位按要求進行填充,以保證信息格式的正確[9]。
在擴展幀ID格式和標準幀ID格式中,由于CAN標識符寄存器中的IDRx在擴展幀中插入了SRR、IDE、RTR,在標準幀中插入了RTR、IDE及空位,在計算驗收碼和屏蔽碼時,需要對這些位進行屏蔽處理。例如在進行單幀信息接收時,需要寫入單幀信息驗收碼0x0cFF104A,屏蔽碼0x00000000。通過對這些位進行處理后,則MSCAN驗收碼變成了0x67FE2094,MSCAN屏蔽碼變?yōu)?x00180000。在實際應用中,可以通過一個子函數(shù)來實現(xiàn)信息格式轉換。
當接收多幀信息時,也要按此方法進行處理,假如需要對0x0Cff2A41、0x0Cff2A42、0x0CFF2A4B、0x18FF2B 47、0x18FF2B48、0x18FF2B4A這6幀信息進行接收。由于其高位和低位不同,中間位相同,對其相同位可進行比對接收,對不同位進行忽略,這6幀信息的驗收碼應設為0x1CFF2B4F;屏蔽碼需要對上述ID中不同位進行忽略、相同位進行比對,其屏蔽碼可設為0x1400010F,其中0表示需要比對,1表示對該位不進行比對。將其按擴展標識符信息在緩沖區(qū)的位定義,添加SRR、IDE、RTR位,則驗收碼變?yōu)?xE7FE569E,屏蔽碼為0x A018021E。驗收碼和屏蔽碼確定后,便可以在MSCAN程序中對其進行實始化配置:
/*CAN模塊初始化*/
void MSCAN_Init(void)
{
CANCTL0=0x01;/*初始化模式*/
while(CANCTL1_INITAK!=1);/*等待初始化模式INITRQ bit=1*/
CANCTL1=0xC0;/*使用總線時鐘*/
CANBTR0=0x47;/*設置總線通訊速率250 kbit/s*/
CANBTR1=0x14;
CANIDAC=0x00;/*設置為兩個32位濾波器*/
CANIDAR0=0x67;/*濾波器0,接受單幀信息*/
CANIDAR1=0xFE;
CANIDAR2=0x20;
CANIDAR3=0x94;
CANIDAR4=0xE7;/*濾波器1,接受多幀信息*/
CANIDAR5=0xFE;
CANIDAR6=0x56;
CANIDAR7=0x9E;
CANIDMR0=0x00;/*屏蔽碼寄存器0*/
CANIDMR1=0x18;
CANIDMR2=0x00;
CANIDMR3=0x00;
CANIDMR4=0xA0;/*屏蔽碼寄存器1*/
CANIDMR5=0x18;
CANIDMR6=0x02;
CANIDMR7=0x1E;
CANCTL0=0x00;/*退出初始化模式*/
while((CANCTL1&0x00)!=0);
CANRFLG=0xC3;/*復位接收標志位*/
CANRIER=0x29;/*使能CAN接收中斷*/
}
本文介紹了FreescaleMSCAN控制器的CAN驗收濾波器的原理及設置方法,對MSCAN控制器的工作原理、濾波器的原理及濾波器設置進行了分析,并通過實例設計了CAN控制模塊的初始化和濾波器的配置,為MSCAN濾波器的設置提供了借鑒,提高了處理器系統(tǒng)的CAN信息的運行效率;MSCAN驗收濾波器能夠有效地屏蔽總線上不允許通過的報文,大大減輕了CPU的負擔,在以CAN總線為通信網(wǎng)絡的應用中發(fā)揮了很大的作用。
[1]饒運濤,鄒繼軍,王進宏,等.現(xiàn)場總線CAN原理與應用技術[M].2版.北京:北京航空航天大學出版社,2007.
[2]陽憲惠.現(xiàn)場總線技術及其應用[M].2版.北京:清華大學出版社,2008.
[3]羅峰,孫澤昌.汽車CAN總線系統(tǒng)原理、設計與應用[M].北京:電子工業(yè)出版社,2010.1.
[4]張培仁.CAN總線設計及分布式控制[M].北京:清華大學出版社,2012.1.
[5]MC9S08DZ48,MC9S08DZ32,MC9S08DZ16-Data Sheet(REV 4)[Z].Freescale Com pany,2008 Jun.
[6]南金瑞,劉波瀾,等.汽車單片機及車載總線技術[M].北京:北京理工大學出版社,2005.10.
[7]Using the S12XE Fam ily as a Development Platform for the S12XSFam ily[Z].Freescale Com pany,2007 Jul.
[8]MPC5534M icrocontroller-Reference M anual(REV 2.1)[Z]. Freescale Com pany,2012M ay.
[9]牛躍聽,周立功,方丹,等.CAN總線嵌入式開發(fā)[M].北京:
Design on MSCANCommunication Acceptance Filter
Wu Chengjia
(AnhuiAnkaiAutomobile Co.,Ltd,Hefei230051,China)
The author introduces theprincipleofMSCAN controllerand the settingmethod ofacceptance filtersand shield codes forMSCAN when used in receivingmulti-frame CAN information.He also givesouta design example of the acceptance codesand shield codes for receiving single ormulti-frame information,so that the user can quickly setup in design.
automotiveelectronics;MSCAN;acceptance filter;shield code
U463.61
B
1006-3331(2015)04-0041-04
國家科技支撐計劃課題(2014BAG06B00)
吳成加(1971-),男,工程師;研究方向:新能源汽車電驅(qū)動及控制系統(tǒng)核心零部件關鍵技術研究。