This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM62A3: AM62a DM core CAN bus timings

Part Number: AM62A3

Tool/software:

Hello!

I am working on the AM62A SoC, and trying to have the DM R5 core access and operate the MCU CAN0/CAN1 busses. Typically, these 2 CAN busses are operated by the MCU core, but in my use case, I am looking for them to be used by the DM core.

I've used syscfg to setup the CAN/CAN-FD busses before on a different part (AM263), and part of the syscfg tool file outputs is a struct of type MCAN_BitTimingParams. This struct is meant to be used with the mcan driver function:

For example:

/* Syscfg generated struct */

static MCAN_BitTimingParams gMcanBitTimingDefaultParams =
{
.nomRatePrescalar = 0x7U,
.nomTimeSeg1 = 0x5U,
.nomTimeSeg2 = 0x2U,
.nomSynchJumpWidth = 0x0U,
.dataRatePrescalar = 0x1U,
.dataTimeSeg1 = 0x3U,
.dataTimeSeg2 = 0x2U,
.dataSynchJumpWidth = 0x0U,
};

/* Call below MCAN driver API function */

int32_t MCAN_setBitTime(uint32_t baseAddr, const MCAN_BitTimingParams *configParams);

So the flow I am used to is:

1. use syscfg to setup the CAN busses
2. have syscfg generate an instance of MCAN_BitTimingParams as part of the autogenerated code
3. load this autogenerated struct by calling MCAN_setBitTime() with the generated struct as the input


However, for the DM core, the syscfg does not support CAN busses, so I am not able to set up the CAN busses this way. I am looking for some help on how syscfg tool generates this timing struct, and how I would go about hard coding and instancing this struct  for myself for the AM62A DM core.

Thank you!