在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;
|