MCAN_Init(MAUTO_CAN, &mcanConfig, MCAN_CLK_FREQ);
memoryConfig.baseAddr = (uint32_t)msgRam;
rxFifo0.address = RX_FIFO0_OFS;
rxFifo0.elementSize = 1U;
rxFifo0.watermark = 0;
rxFifo0.opmode = kMCAN_FifoBlocking;
rxFifo0.datafieldSize = kMCAN_8ByteDatafield;
#if (defined(USE_CANFD) && USE_CANFD)
rxFifo0.datafieldSize = BYTES_IN_MB;
#endif
memoryConfig.rxFifo0Cfg = &rxFifo0;
/* TX buffer config. */
txBuffer.address = TX_BUFFER_OFS;
txBuffer.dedicatedSize = 1U;
txBuffer.fqSize = 0;
txBuffer.datafieldSize = kMCAN_8ByteDatafield;
#if (defined(USE_CANFD) && USE_CANFD)
txBuffer.datafieldSize = BYTES_IN_MB;
#endif
memoryConfig.txBufferCfg = &txBuffer;
/* Set Message RAM config and clear memory to avoid BEU/BEC error. */
memset((void *)msgRam, 0, MSG_RAM_SIZE * sizeof(uint8_t));
if (kStatus_Success != MCAN_SetMessageRamConfig(MAUTO_CAN, &memoryConfig))
{
PRINTF("MCAN Message RAM configuration failed, please check parameters!\r\n");
return -1;
}
MCAN_EnableInterrupts(MAUTO_CAN, 0, CAN_IE_RF0NE_MASK);
EnableIRQ(CAN0_IRQ0_IRQn);
We're following the above configurations.