1. 程式人生 > >飛思卡爾CAN的ID濾波配置,目前測試晶片為9S08DZ60

飛思卡爾CAN的ID濾波配置,目前測試晶片為9S08DZ60

飛思卡爾的CAN的ID濾波設定

主要是根據ID配置兩個暫存器值,CANIDAR和CANIDMR,擔心我講得不明白,把我參考的資料都貼上來。

原理的是參考的 《飛思卡爾MSCAN接收ID濾波器設定指南》,裡面有個PDF下載下來會有更詳細的東西參考。http://huxiongwei.spaces.eepw.com.cn/articles/article/item/108637

第二個參考例程

http://www.pudn.com/Download/item/id/1980189.html

下面說下該怎麼配置

CAN 的ID結構


在我們給的ID裡沒包含SRR與IDE與RTT,比如擴充套件幀ID:0x10F81099,展開為:

0001 0000 1111 1000 0001 0000 1001 1001,這個ID裡的標準幀11位於擴充套件後的18位直接相連的,我們需要把SRR與IDE和RTR加進去就是我們濾波的CANIDAR暫存器的值;

具體方法為,從第19位開始向左移3位,空出SRR和IDE;低18位向左移一位,空出RTR

1 0000 1111 10 xx00 0001 0000 1001 1001x

綠色的'x'為移動後空出的位

整理下為:1000 0111 110x x000 0010 0001 0011 001x

 空出的位,根據幀型別填就行,也可隨便填,我們CANIDMR的值,在該位取1,不關心該為就好了;

  例如我們需要過濾出擴充套件幀0x10F81099;

則根據上面的,得出AR值為: 1000 0111 110x x000 0010 0001 0011 001x,把x取1,則為

1000 0111 1101 1000 0010 0001 0011 0011 即AR暫存器值為 0x87D82133    ,那麼MR值只把SRR,IDE,RTR位取1

0000 0000 0001 1000 0000 0000 0000 0001 即MR暫存器值為 0x00180001    ,這樣就能過濾出擴充套件幀ID0xF81099

測試結果:


模擬後能進入中斷,能看到ID是正確的