在互聯型產品中, can1和can2分享28個過濾器組位寬設定其它stm32f103xx系列產品中有14個過濾器組
四種配置方式:擴充套件識別符號必須選擇32位寬1個32位的遮蔽位模式
2個32位的識別符號列表模式,可以過濾2個識別符號id
2個16位的遮蔽位模式
4個16位的識別符號列表模式,可以過濾4個標準識別符號id
識別符號列表模式
在識別符號列表模式下,遮蔽暫存器也被當作識別符號暫存器用。因此,不是採用乙個識別符號加一
個遮蔽位的方式,而是使用2個識別符號暫存器。接收報文識別符號的每一位都必須跟過濾器識別符號
相同
can_filterinitstructure.can_filternumber = 0; //過濾器組0(fm1r)
can_filterinitstructure.can_filtermode = can_filtermode_idlist;
can_filterinitstructure.can_filterscale = can_filterscale_32bit;
//第乙個識別符號id(fr1)- 標準識別符號舉例
can_filterinitstructure.can_filteridhigh = 0x123
<< 5; //根據位寬設定圖
can_filterinitstructure.can_filteridlow = can_id_std; //選擇標準識別符號
//第二個識別符號id(fr2)- 擴充套件識別符號舉例
can_filterinitstructure.can_filtermaskidhigh = 0;
can_filterinitstructure.can_filtermaskidlow = 0x321
<< 3 | can_id_ext; //根據位寬設定圖 | 選擇擴充套件識別符號
傳送方識別符號id必須是0x123或0x321
遮蔽位模式
遮蔽位模式可以過濾出一組識別符號
//標準識別符號舉例
can_filterinitstructure.can_filternumber = 0; //過濾器組0(fm1r)
can_filterinitstructure.can_filtermode = can_filtermode_idmask;
can_filterinitstructure.can_filterscale = can_filterscale_32bit;
can_filterinitstructure.can_filteridhigh = 0x123
<< 5;
can_filterinitstructure.can_filteridlow = can_id_std; //選擇標準識別符號
can_filterinitstructure.can_filtermaskidhigh = 0x23
<< 5;
can_filterinitstructure.can_filtermaskidlow = 0;
can_filteridx:期望的識別符號idcan_filtermaskidx:遮蔽位。關心的位
期望的識別符號id:
關心的位:
只關心為1的位,必須和期望的識別符號id位一致。其他位是多少不關心
優先順序規則
位寬為32位的過濾器,優先順序高於位寬為16位的過濾器對於位寬相同的過濾器,識別符號列表模式的優先順序高於遮蔽位模式
位寬和模式都相同的過濾器,優先順序由過濾器號決定,過濾器號小的優先順序高
STM32,CAN匯流排過濾器的設定詳細講解
遮蔽位模式 在遮蔽位模式下,識別符號暫存器和遮蔽暫存器一起,指定報文識別符號的任何一位,應該按照 必須匹配 和 不用關心 處理。識別符號列表模式 在識別符號列表模式下,遮蔽暫存器也被當做識別符號暫存器用。因此,不是採用乙個識別符號加乙個遮蔽位的方式,而是採用兩個識別符號暫存器。接收報文的每一位都必須...
關於STM32 CAN的過濾器 濾波器
1.在設定cantxmsg.stdid時注意需要將其右移一位,比如如下濾波器配置 can filterinitstructure.can filternumber 0 can filterinitstructure.can filtermode can filtermode idmask can f...
STM32 CAN匯流排識別符號過濾器難點解析
can匯流排是目前應用非常多的一種匯流排,在汽車電子,航空航天中應用廣泛,博主用的是戰艦的stm32開發板。can的介紹和功能特點就不講了,書本上網上都有,請大家在閱讀本文前了解can匯流排協議的特點和功能。今天博主將和大家共同學習can匯流排識別符號過濾器的使用 非常重要!請認真讀這段話 來自st...