当使用 HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) 时STM32G0B1 上的 CAN 总线 ID 过滤器无法正常工作。经典 CAN 配置如下。当移除 if(HAL_FDCAN_ConfigGlobalFilter(...)) 这一行时,CAN 消息可以正常接收。发送的消息 ID 设置为 0x111,并通过 CAN 总线监控工具确认。 配置如下: FDCAN_FilterTypeDef sFilterConfig; sFilterConfig.IdType = FDCAN_STANDARD_ID; sFilterConfig.FilterIndex = 0; sFilterConfig.FilterType = FDCAN_FILTER_MASK; sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0; sFilterConfig.FilterID1 = 0x111; sFilterConfig.FilterID2 = 0x7FF; if(HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig)!= HAL_OK) { Error_Handler(); } // If comment this one, it works. if(HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE) != HAL_OK) { Error_Handler(); } if(HAL_FDCAN_Start(&hfdcan1) != HAL_OK) { Error_Handler(); }
|