can硬件滤波 stm32cubemx_can - STM32cube中文网
首先说明下开发条件:
1、开发板:秉火霸道,STM32F103ZET
2、软件:Cubemx V4.23(F1 V1.60库)
问题描述: 官方生成的代码没有滤波器设置,需要自己加入
解决办法:
1、不能直接在cubemx上面设置CAN的引脚,需要自己选择PB9和PB10,然后设为CANTX和RX
2、添加滤波器设置
在static void MX_CAN_Init(void)函数里面加入滤波器设置函数:
CAN_FilterConfTypeDef sFilterConfig;
sFilterConfig.FilterNumber = 0;
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
sFilterConfig.FilterIdHigh = 0x0000;
sFilterConfig.FilterIdLow = 0x0000;
sFilterConfig.FilterMaskIdHigh = 0x0000;
sFilterConfig.FilterMaskIdLow = 0x0000;
sFilterConfig.FilterFIFOAssignment = 0; //收到的报文放在FIFO 0里面
sFilterConfig.FilterActivation = ENABLE;
sFilterConfig.BankNumber = 14;
if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK)
{
/* Filter configuration Error */
Error_Handler();
}
首先说明下开发条件: 1、开发板:秉火霸道,STM32F103ZET 2、软件:Cubemx V4.23(F1 V1.60库) 问题描述: 官方生成的代码没有滤波器设置,需要自己加入 解决办法: 1、不能直接在cubemx上面设置CAN的引脚,需要自己选择PB9和PB10,然后设为CANTX和RX 2、添加滤波器设置 在static void MX_CAN_Init(void)函数里面加入滤波器设置函数: CAN_FilterConfTypeDef sFilterConfig; sFilterConfig.FilterNumber = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x0000; sFilterConfig.FilterIdLow = 0x0000; sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x0000; sFilterConfig.FilterFIFOAssignment = 0; //收到的报文放在FIFO 0里面 sFilterConfig.FilterActivation = ENABLE; sFilterConfig.BankNumber = 14; if (HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK) { /* Filter configuration Error */ Error_Handler(); }