Hi @nirmal_masilamani
Routine and configuration seem fine. Just keep in mind that the filters' field can only be written in Freeze mode; the module blocks it in other modes.
Just move FlexCAN_Ip_SetStartMode() to after configuration:
uint16 can_hal_config_init_u16()
{
uint16 ret_val_u16 = 0U;
{
ret_val_u16 = FlexCAN_Ip_Init(CAN_MAIN_INSTANCE, &FlexCAN_State0, &FlexCAN_Config0);
if(E_OK == ret_val_u16)
{
/* Configure TX message buffer with index TX_MSG_ID and TX_MAILBOX*/
{
for(uint8 idx = 0U; idx < NO_OF_FILTER_ID; idx++)
{
can_rx_fifo_filter_table[idx].isRemoteFrame = false;
can_rx_fifo_filter_table[idx].isExtendedFrame = false;
can_rx_fifo_filter_table[idx].id = can_comm_filter_rx_msg_u32[idx];
}
FlexCAN_Ip_ConfigRxFifo(CAN_MAIN_INSTANCE,FLEXCAN_RX_FIFO_ID_FORMAT_A, can_rx_fifo_filter_table);
ret_val_u16 = FlexCAN_Ip_SetStartMode(CAN_MAIN_INSTANCE);
can_hal_tx_msg_uint16(CAN_MAIN_INSTANCE, 0x18EAE4F4, (uint8 *)&dummyData, CAN_MAIN_TX_MailBox);
can_hal_start_rx_u16();
}
}
}
return ret_val_u16;
}
Best regards,
Julián