|
楼主 |
发表于 2020-7-29 16:19:19
|
显示全部楼层
请问一下stm32 h7传统8字节的can,如何设置5组id过滤?
比如有0x12f,0x34d,0x481,0x577,0x61A 5组ID需要硬件过滤出来,可以实现吗?
FDCANHalHandler.Init.StdFiltersNbr=3; 设置你想要过滤的过滤器个数
FDCANRxFilterType.IdType=FDCAN_STANDARD_ID; //标准ID
FDCANRxFilterType.FilterIndex=0; //滤波器索引
FDCANRxFilterType.FilterType=FDCAN_FILTER_DUAL; //滤波器类型 过滤两个
FDCANRxFilterType.FilterConfig=FDCAN_FILTER_TO_RXFIFO0; //过滤器0关联到FIFO0
FDCANRxFilterType.FilterID1=0x12f;
FDCANRxFilterType.FilterID2=0x34d;
if(HAL_FDCAN_ConfigFilter(&can_cfg[canname].FDCANHalHandler,&FDCANRxFilterType)!=HAL_OK)
{
return 2;//滤波器初始化
}
FDCANRxFilterType.FilterIndex=1; //滤波器索引
FDCANRxFilterType.FilterID1=0x481;
FDCANRxFilterType.FilterID2=0x577;
HAL_FDCAN_ConfigFilter(&can_cfg[canname].FDCANHalHandler,&FDCANRxFilterType)
FDCANRxFilterType.FilterIndex=2; //滤波器索引
FDCANRxFilterType.FilterID1=0x61A;
FDCANRxFilterType.FilterID2=0x61A;
HAL_FDCAN_ConfigFilter(&can_cfg[canname].FDCANHalHandler,&FDCANRxFilterType)
像上面这么整就行了,初始化的时候可选多组过滤,总共最多支持128个
|
|