zs890801 发表于 2024-3-7 10:18:29

CAN接受多ID配置

stm32F407想实现总线上其中一个节点可以接受多个ID数据,can过滤器该怎么配置,目前配置如下


uint8_t CanFilterInit(uint8_t board_id)
{
    CAN_FilterTypeDef sFilterConfig;

    sFilterConfig.FilterBank = 0;
       
    sFilterConfig.FilterMode = CAN_FILTERMODE_IDLIST;
    sFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;
    sFilterConfig.FilterIdHigh = (0x600+board_id)<<5;
    sFilterConfig.FilterIdLow = 0x000<<5;
    sFilterConfig.FilterMaskIdHigh = (0x600+board_id)<<5;
    sFilterConfig.FilterMaskIdLow = 0x000<<5;
       
    sFilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0;
    sFilterConfig.FilterActivation = ENABLE;
    sFilterConfig.SlaveStartFilterBank = 14;

    if( HAL_OK != HAL_CAN_ConfigFilter(&hcan1,&sFilterConfig))
    {
                        return 1;
    }
    else
    {
                        return 0;
    }
}

eric2013 发表于 2024-3-7 11:11:18

可以用专用ID过滤,也可以用屏蔽位过滤。

STM32的CAN总线的标识符过滤器组使用注意事项-------&gt;重要
https://www.armbbs.cn/forum.php?mod=viewthread&tid=14449&fromuid=58
(出处: 硬汉嵌入式论坛)

zs890801 发表于 2024-3-7 15:14:40

硬汉太强了,啥都研究的透透的
页: [1]
查看完整版本: CAN接受多ID配置