STM32F407 CAN filter doesn't work
Hi everyone.
I have next problem. I trying to use CAN filter option, sometimes i need to configure them on fly. First basic filter its standard filter:
/*CAN*/
canfil.FilterBank = 0;
canfil.FilterMode = CAN_FILTERMODE_IDMASK;
canfil.FilterFIFOAssignment = CAN_RX_FIFO0;
canfil.FilterIdHigh = 0x0000;
canfil.FilterIdLow = 0x0000;
canfil.FilterMaskIdHigh = 0x0000;
canfil.FilterMaskIdLow = 0x0000;
canfil.FilterScale = CAN_FILTERSCALE_32BIT;
canfil.FilterActivation = ENABLE;
canfil.SlaveStartFilterBank = 14;
HAL_CAN_ConfigFilter(&hcan1,&canfil);
HAL_CAN_Start(&hcan1);
HAL_CAN_ActivateNotification(&hcan1,CAN_IT_RX_FIFO0_MSG_PENDING);
When i need to change filter only for one address 0x18 FEDA02
canfil.FilterBank = 0;
canfil.FilterMode = CAN_FILTERMODE_IDMASK;
canfil.FilterFIFOAssignment = CAN_RX_FIFO0;
canfil.FilterIdHigh = (uint16_t)(0x18FEDA02>>13);;
canfil.FilterIdLow = (uint16_t)(0x18FEDA02<<3) | 0x04;;
canfil.FilterMaskIdHigh = (uint16_t)(0x1fffffff>>13);
canfil.FilterMaskIdLow = (uint16_t)(0x1fffffff<<3) | 0x04;
canfil.FilterScale = CAN_FILTERSCALE_32BIT;
canfil.FilterActivation = ENABLE;
HAL_CAN_ConfigFilter(&hcan1,&canfil);
HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &rxHeader, canRX );
And i see many different adreses, not only 0x18FEDA02. Maybee i need to add something.
And we have option to add another number of filter, how we can chouse what number of filter should do at this moment?
Thank you, for your reply.
Kind regards,
Oleksii
