Hi Expert,
The first CAN message received after MCU power-up is always empty.
Below it the CAN init and it's call back function.
void CAN0_init() {
IntCtrl_Ip_EnableIrq(FlexCAN0_0_IRQn);
IntCtrl_Ip_EnableIrq(FlexCAN0_1_IRQn);
IntCtrl_Ip_EnableIrq(FlexCAN0_2_IRQn);
IntCtrl_Ip_InstallHandler(FlexCAN0_0_IRQn,&CAN0_ORED_IRQHandler,NULL_PTR);
IntCtrl_Ip_InstallHandler(FlexCAN0_1_IRQn,&CAN0_ORED_0_31_MB_IRQHandler,NULL_PTR);
IntCtrl_Ip_InstallHandler(FlexCAN0_2_IRQn,&CAN0_ORED_32_63_MB_IRQHandler,NULL_PTR);
FlexCAN_Ip_Init(CAN_DEV_INSTANCE, &FlexCAN_State0, &FlexCAN_Config0);
FlexCAN_Ip_SetRxMaskType(CAN_DEV_INSTANCE,FLEXCAN_RX_MASK_INDIVIDUAL);
FlexCAN_Ip_SetRxIndividualMask(CAN_DEV_INSTANCE,RX_MB_IDX,0);
FlexCAN_Ip_SetStartMode(CAN_DEV_INSTANCE);
FlexCAN_Ip_ConfigRxMb(CAN_DEV_INSTANCE, RX_MB_IDX, &rx_info, MSG_ID);
FlexCAN_Ip_Receive(CAN_DEV_INSTANCE, RX_MB_IDX, &rxData, FALSE); //clear redundancy data
/* Start Receive CAN Data */
( void ) FlexCAN_Ip_RxFifo(CAN_DEV_INSTANCE, &Can0Rx_isr);
( void ) FlexCAN_Ip_SetErrorInt(CAN_DEV_INSTANCE, FLEXCAN_IP_INT_BUSOFF, TRUE);
}
void flexcan0_Callback(uint8 instance, Flexcan_Ip_EventType eventType, uint32 buffIdx,
const Flexcan_Ip_StateType *flexcanState)
{
switch(eventType)
{
case FLEXCAN_EVENT_RX_COMPLETE:
FlexCAN_Ip_Receive(CAN_DEV_INSTANCE, RX_MB_IDX, &Can0Rx_isr, FALSE);
break;
}
RTD version:
/*==================================================================================================
* Project : RTD AUTOSAR 4.7
* Platform : CORTEXM
* Peripheral : FLEXCAN
* Dependencies :
*
* Autosar Version : 4.7.0
* Autosar Revision : ASR_REL_4_7_REV_0000
* Autosar Conf.Variant :
* SW Version : 5.0.0
* Build Version : S32K3_RTD_5_0_0_D2408_ASR_REL_4_7_REV_0000_20241002
*
* Copyright 2020 - 2024 NXP
================================