找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1939|回复: 1
收起左侧

关于CAN通信的过滤器配置

[复制链接]
ID:284051 发表于 2021-4-22 15:38 | 显示全部楼层 |阅读模式
        CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;        //32 ID
        CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
        CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32 MASK
        CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
这四条我看了很多资料,理论上明白了过滤器原理,但是写不出来,请问有人能详细说一下吗?
FxR2用于指定需要关心哪些位,FxR1用于指定这些位的标准值    一位32位寄存器这种

回复

使用道具 举报

ID:256945 发表于 2021-5-8 17:42 | 显示全部楼层
2种情况
1.1个32位过滤器--标示符屏蔽的情况----CAN_FxR1作ID,CAN_FxR2作屏蔽
2.2个32位过滤器--标示符列表模式:CAN_FxR1和CAN_FxR2都作ID
对于1:
假如我们只想收到别人发过来的 ID 为 0x317 的标准数据帧:
0X317 二进制位:011 0001 0111
那么可以这样设置:
CAN_FxR1:0110 0010 111X XXXX XXXX XXXX XXXX X00X (ID)
CAN_FxR2:1111 1111 1110 0000 0000 0000 0000 0110 (屏蔽)
这里是我们设置的想要收到的数据帧的 ID。
这里为 1 的位,意味着收到的数据帧中相应的 ID 位必须和设置的 ID 位一样(必须匹
配)
对于情况2:
如果我们把 CAN_FxR1 和 CAN_FxR2 设置为下面的样子。
CAN_FxR1:0110 0010 1110 0000 0000 0000 0000 0000 (ID)
CAN_FxR2:0000 0001 1110 0000 0000 0000 0000 0000 (ID)

这样的话,就只能过滤出 ID 为 0x317(与 CAN_FxR1 必须一样)和 0x00F(与 CAN_FxR2 必须一样)两种标准数据帧了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表