簡介
CAN作為總線通信協議,在總線上可能會有大量的數據包同時傳輸,適當的過濾機制可以提升數據處理的效率,節省處理器的資源。通過配置CAN過濾器定義自己的數據接收規則,只接收和處理符合規程的CAN數據幀,規則之外的數據直接丟棄,此過程外設自動處理,盡量減少軟件對報文篩選的干預。
本文僅適用于采用CH32F2x、CH32V2x、CH32V3x微控制器系列的CAN設備過濾器說明,其他微處理器也可參考本文學習。
以CH32V307為例,最多支持28組過濾器配置,可選16位或32位過濾模式,支持兩種方式過濾(屏蔽位或標識符列表)。
16位標識符列表
表 16位列表模式
RTR:1遠程幀,0數據幀
IDE:1擴展幀,0標準幀
STID:標準幀ID
EXID:擴展幀ID
在16位標識符列表模式下,寄存器組被拆分成四個寄存器,四個寄存器都用作標識符寄存器。
標準ID對應表(IDE=0)
擴展ID對應表(IDE=1)
將CAN_FxR1[15:0]、CAN_FxR1[31:16]、CAN_FxR2[15:0]、CAN_FxR2[31:16]分別配置為0xFFE0、0x0FF0、0x1009、0x101F。第一個寄存器代表僅接收ID為7FF的標準數據幀;第二個寄存器代表僅接收ID為7F的標準遠程幀,第三個寄存器代表僅接收擴展ID的28位、15位為高并且ID第27位到第16位為低的擴展數據幀,第四個寄存器代表僅接收ID的28位、第17位到第15位為高并且第27位到第18位為低的擴展遠程幀。
按上圖配置CAN硬件過濾,僅可接收下述符合規則的CAN數據幀:
① ID為7FF的標準數據幀
② ID為7F的標準遠程幀
③ ID為10008000到1000FFFF的擴展數據幀
④ ID為10038000到1003FFFF的擴展遠程幀
16位屏蔽位模式
表 16位屏蔽位模式
在16位模式下,寄存器組被拆分成四個寄存器,包含2組16位標識符寄存器和16位屏蔽寄存器。
ID對應關系與16位列表模式一致,只是高16位做MARK(掩碼),低16位做標識符,掩碼位為高時,代表接收CAN的幀對應ID應與標識符寄存器對應位一致(或幀格式一致),否則數據被過濾,反之不進行該位驗證。
以下圖為例:
(1)將CAN_FxR1[15:0]配置位0x0020,CAN_FxR1[31:16]配置為0x0038,標識符寄存器的IDE與RTR為低,Mark的IDE與RTR為高,代表僅接收標準數據幀。再看標識符寄存器的STID的第0位為高,Mark也為高,代表接收奇數ID,綜合一下CAN_FxR1寄存器限制CAN僅接收ID為奇數標準數據幀。
(2)將CAN_FxR2[15:0]配置位0xFFFF,CAN_FxR2[31:16]配置為0XFFFF,標識符寄存器的IDE與RTR為高,Mark的IDE與RTR也為高,代表僅接收擴展遠程幀。CAN_FxR2[15:5]與CAN_FxR2[2:0]都為高,代表ID從15位開始到28位全部為高,同時對應的Mark也為高,代表ID在0x1FFF8000-1FFFFFFF才會被接收。
相關推薦
★ CAN總線 ? 串口服務器
高性能CAN-Bus總線分析儀,兼容USB2.0總線全速規范,構成現場總線、工業控制、汽車電子網絡等控制節點。串口服務器提供串口轉網絡功能,能夠將串口數據轉換成TCP/IP協議數據,實現串口與網絡的雙向透明傳輸。
-
CAN
+關注
關注
57文章
2754瀏覽量
463702 -
設備
+關注
關注
2文章
4509瀏覽量
70638 -
過濾器
+關注
關注
1文章
429瀏覽量
19613
發布評論請先 登錄
相關推薦
評論