在H系列中传统的CAN升级为FDCAN,但是还是提供了classic模式,但是参数多了很多,某原子的教程也有问题,在某原子的基础上改动一下:
主要三点:
1、 hfdcan1.Init.StdFiltersNbr = 1;
hfdcan1.Init.ExtFiltersNbr = 1;这里是数量而不是编号,不能为0,为0就不滤波了,实际用几个设几个。
2、要打开全局滤波开关
if(HAL_FDCAN_ConfigGlobalFilter(fdCan,FDCAN_REJECT, FDCAN_REJECT, ENABLE, ENABLE)!=HAL_OK )
{
_Error_Handler(__FILE__, __LINE__);
}
3、如果两个FDCAN都初始化的话,第二个FDCAN的消息RAM偏移地址一定要设置,不然也会无法滤波,导致收不到消息
hfdcan2.Init.MessageRAMOffset = hfdcan1.msgRam.EndAddress-SRAMCAN_BASE;
|