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(); }
经验分享 程序员 微信小程序 职场和发展