打印
[应用相关]

STM32Cube的CAN滤波如何设置

[复制链接]
820|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Levenburg|  楼主 | 2017-3-8 20:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32Cube的CAN滤波如何设置,需要只让两个需要的ID进去中断,其他的全部过滤。请问如何设置?
/*##-2- Configure the CAN1 Filter ###########################################*/
        sFilterConfig.FilterNumber = 0;
        sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
        sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
        sFilterConfig.FilterIdHigh = AllowID_F507<<5;
        sFilterConfig.FilterIdLow = 0|CAN_ID_STD;;
        sFilterConfig.FilterMaskIdHigh = 0xFFFF;
        sFilterConfig.FilterMaskIdLow = 0xFFFF;
        sFilterConfig.FilterFIFOAssignment = CAN_FIFO0;
        sFilterConfig.FilterActivation = ENABLE;
        sFilterConfig.BankNumber = 0;
        HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);

        /*##-2- Configure the CAN1 Filter ###########################################*/
        sFilterConfig.FilterNumber = 1;
        sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
        sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
        sFilterConfig.FilterIdHigh = AllowID2_F507<<5;
        sFilterConfig.FilterIdLow = 0|CAN_ID_STD;;
        sFilterConfig.FilterMaskIdHigh = 0xFFFF;
        sFilterConfig.FilterMaskIdLow = 0xFFFF;
        sFilterConfig.FilterFIFOAssignment = CAN_FIFO0;
        sFilterConfig.FilterActivation = ENABLE;
        sFilterConfig.BankNumber = 0;
        HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);

        HAL_CAN_Receive_IT(&hcan,CAN_FIFO0);

芯片是用STM32F103VET的。
沙发
Thorald| | 2017-3-8 20:56 | 只看该作者
这个是针对接收来滤波的。发送是不滤波的

使用特权

评论回复
板凳
Bjorn| | 2017-3-8 21:08 | 只看该作者
主要是对.FilterIdHigh/FilterMaskIdLow/FilterIdHigh/FilterIdLow这四个参数来设定的,具体的参数,来“卡”什么id才接收等等。

使用特权

评论回复
地板
Rollo| | 2017-3-8 21:21 | 只看该作者
滤波的作用可以滤掉一批(逻辑上有顺序的)id,你就两个id还用两个过滤器实在是浪费。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

180

帖子

0

粉丝