[STM32F1] STM32 CAN滤波器设置请教~~~急~~~~

[复制链接]
1554|2
 楼主| yang5223536 发表于 2015-11-25 14:51 | 显示全部楼层 |阅读模式
有木有大神指导下~
我想滤标准CAN ID为 0x079B 的数据(一帧数据,多字节)
这是我的滤波器设置:
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;
    u16 maskValue = 0x7FF;

    CAN_FilterInitStructure.CAN_FilterNumber = 1;
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_16bit;
    CAN_FilterInitStructure.CAN_FilterIdHigh = id1 << 5;
    CAN_FilterInitStructure.CAN_FilterIdLow = id2 << 5;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh = maskValue << 5;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow = maskValue << 5;
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0;
    CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;

请问,为什么我没有滤到?是不是我的设置有问题?还是我需要在设置别的STM32库函数?
    CAN_FilterInit( &CAN_FilterInitStructure );
 楼主| yang5223536 发表于 2015-11-25 18:02 | 显示全部楼层
以解决~ 自己可以给自己分不。。。
airwill 发表于 2015-11-25 22:59 | 显示全部楼层
滤波器的说法是不合适的, 应该称过滤器。
STM32 的过滤器有过滤方式和直接 ID 方式。支持11位和 29 位。
由于要求高位对齐,一定要将 ID 号左移,这个往往容易疏忽。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部