码迷,mamicode.com
首页 > 其他好文 > 详细

CAN过滤

时间:2019-09-21 12:49:59      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:can   过滤器   接收   关联   分享   格式   匹配   应该   相关   

在 STM32互联型产品中, CAN1和 CAN2分享 28 个过滤器组, 其它 STM32F103xx系
列产品中有 14 个过滤器组, 用以对接收到的帧进行过滤。
每组过滤器包括了 2 个可配置的 32 位寄存器:CAN_FxR0 和 CAN_FxR1 。这些过滤
器相当于关卡,每当收到一条报文时, CAN 要先将收到的报文从这些过滤器上"
过"一下,能通过的报文是有效报文,收进相关联 FIFO(FIFO1 或 FIFO2),不
能通过的是无效报文(不是发给"我"的报文),直接丢弃。
(标准 CAN的标志长度是 11 位。扩展格式 CAN的标志长度是 29。CAN2.0A
协议规定 CAN控制器必须有一个 11 位的标识符。CAN2.0B协议中规定 CAN控制
器的标示符长度可以是 11 位或 29 位。STM32同时支持 CAN2.0A/CAN2.0B协
议。)

标识符屏蔽位模式:可过滤出一组标识符。此时,这样 CAN_FxR0中保存的就是
标识符匹配值,CAN_FxR1中保存的是屏蔽码,即 CAN_FxR1 中如果某一位为 1,
则 CAN_FxR0中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤
器;CAN_FxR1 中为 0 的位表示 CAN_FxR0 中的相应位可不必与收到的帧进行匹配。

标识符列表模式: 可过滤出一个标识。 此时 CAN_FxR0 和 CAN_FxR1 中的都是要匹
配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。

注意: CAN_FilterIdHigh 是指高 16 位 CAN_FilterIdLow 是低 16位应该将
需要得到的帧的和过滤器的设置值左对齐起。

按工作模式和宽度,一个过滤器组可以变成以下几中形式之一:
(1) 1 个 32位的屏蔽位模式的过滤器。
(2) 2 个 32位的列表模式的过滤器。
(3) 2 个 16位的屏蔽位模式的过滤器。
(4) 4 个 16位的列表模式的过滤器。

 

CAN过滤

标签:can   过滤器   接收   关联   分享   格式   匹配   应该   相关   

原文地址:https://www.cnblogs.com/linux-bfbdxj520/p/11562045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!