通過報文濾波技術,CAN匯流排無需專門的調度,可實現點對點、單對多及全局廣播等多種方式的數據傳輸,減少了系統軟體運行時的負擔。
基本介紹
- 中文名:報文濾波
- 外文名:Message Filtering
- 定義:實現點對點、單對多等數據傳輸
- 暫存器:32位
- CAN控制器:CAN2.0A和CAN2.0B
- 套用學科:計算機原理
驗收濾波原理,驗收濾波設定,
驗收濾波原理
傳統方案
傳統CAN匯流排解決方案中通常採用PHILIPS公司的獨立CAN控制器SJA 1000。SJA1000同時兼容CAN 2.0A和CAN 2.0B兩種技術規範,它有兩種濾波模式:單濾波模式和雙濾波模式。無論哪一種模式,都只有當接收信息中的識別位和驗收濾波器預定義的值相同時,CAN控制器才允許將該信息存入接收緩衝區。
SJA1000中,驗收濾波器由驗收代碼暫存器(ACR)和驗收禁止暫存器(AMR)來定義,這兩個8位的暫存器相配合工作,AMR為0的位,ACR與之對應的位必須和CAN報文標識符的對應位完全相同才予以接收,而AMR為1的位,則禁止掉ACR與之對應的位,即CAN報文中對應的位可為0也可為1。實際上,這種驗收濾波方案只能滿足一些規律性較高的或個數較少的標識符的過濾,無法對更為複雜的任意標識符進行過濾,這無疑會增加系統軟體設計及運行時的負擔。
LPC2000的濾波原理及過程分析
PHILIPS公司的LPC2000系列ARM微控制器內嵌2或4個CAN控制器,都有先進的驗收濾波器。概括性地描述LPC2000對CA N報文的驗收濾波流程:CAN控制器監聽所有來自CAN匯流排上的報文,當一個報文到達時,CAN控制器執行快速的硬體搜尋算法,將收到的CAN報文標識符與驗收過濾RAM中存儲的標識符進行匹配。如果沒有匹配,則丟棄該報文,這個過程不會對CAN控制器產生中斷,套用代碼仍然正常執行;如果有匹配的標識符,CAN控制器將通過置位集中接收狀態暫存器中的相應位產生中斷,中斷服務程式將該報文從CAN控制器的暫存器複製到RAM中,並通過置位CAN命令暫存器的相應位來釋放CAN控制器的接收暫存器。
驗收濾波設定
驗收濾波暫存器是一組用於控制驗收濾波器工作模式及LUT格式的32位暫存器,起始地址為OxE003C000,在它們的相應位寫入不同的數值就可以實現對驗收濾波器的設定。
暫存器AFMR決定驗收濾波器的工作模式,它只有前3位有效,通過4種組合,可以使驗收濾波器工作於不同模式。在設定驗收濾波相關的暫存器和LUT表格的內容時,首先須將AFMR暫存器中的AccBP位置1,實際上,只要向AFMR暫存器中寫入0x03,將其設定為旁路模式就可以了。如果AccBP位沒有置1,僅有LUT中標識符的禁能位可以修改,如果只需禁能或使能某個Cell所指定的標識符過濾,就可通過向LUT中相應的Cell寫入一1或0來實現。