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.

RTOS/AWR1843: CANFD demo code.

Part Number: AWR1843
Other Parts Discussed in Thread: MMWAVE-SDK

Tool/software: TI-RTOS

Hi,

I am using AWR1843, on mmwave_sdk_03_02_00_04 in MCAN CANFD default demo test code is not seems to working, I am using PEAK CAN software to interpret CANFD messages and found data phase error while having the baud rate configured correctly(i.e Nominal and Data bit rate are 1Mbps and 8Mbps respectively).

In MCAN the classic CAN is working fine with Nominal bit rate of 1Mbps, able to receive and send messages.

Please clarify how to configure or make CANFD in working state.

PFA.

Thanks,

Vikas Patil

  • Hi,

    We are checking with the SDK team the data rate the unit test was validated at

    thank you

  • Hi Vikas,

    The CANFD code in the MMWAVE-SDK version 03.02.00.04 supports nominal birate of 1MBps and data bitrate of 5Mbps. I see that you have set the PCAN dataphase bitrate to 8Mbps. Hence the dataphase error.

    Change the data bitrate on PCAN to  5Mbps to solve the error.

    Thanks,

    Raghu

  • Hi Raghunandan,

    Since PCAN was not supporting 5Mbps data bitrate, I have changed it to 8Mbps respectively. Which was already given by  MMWAVE-SDK version 03.02.00.04 in pre-processor conditionals, as 1Mbps - 5Mbps and 1Mbps - 8Mbps nominal and data bitrate respectively.

    PFA for more details.

    Thanks,

    Vikas Patil

  • Vikas,

    If you have changed the bitrate to 8Mbps, then could you check the values of the "tranceiver delay compensation offset". 

    What is the value of the "mcanCfgParams->tdcConfig.tdco  " in your application? This values needs to be typically 1 larger than the dataProgSeg+dataPseg1.

    My configuration has this value set to "tdco=6" .

    Let me know if this helps.

    BR,

    Raghu

  • This are the default configs:

    mcanCfgParams->fdMode = 0x1U;
    mcanCfgParams->brsEnable = 0x1U;
    mcanCfgParams->txpEnable = 0x0U;
    mcanCfgParams->efbi = 0x0U;
    mcanCfgParams->pxhddisable = 0x0U;
    mcanCfgParams->darEnable = 0x1U;
    mcanCfgParams->wkupReqEnable = 0x1U;
    mcanCfgParams->autoWkupEnable = 0x1U;
    mcanCfgParams->emulationEnable = 0x0U;
    mcanCfgParams->emulationFAck = 0x0U;
    mcanCfgParams->clkStopFAck = 0x0U;
    mcanCfgParams->wdcPreload = 0x0U;
    mcanCfgParams->tdcEnable = 0x1U;
    mcanCfgParams->tdcConfig.tdcf = 0U;
    mcanCfgParams->tdcConfig.tdco = 8U;
    mcanCfgParams->monEnable = 0x0U;
    mcanCfgParams->asmEnable = 0x0U;
    mcanCfgParams->tsPrescalar = 0x0U;
    mcanCfgParams->tsSelect = 0x0U;
    mcanCfgParams->timeoutSelect = CANFD_MCANTimeOutSelect_CONT;
    mcanCfgParams->timeoutPreload = 0x0U;
    mcanCfgParams->timeoutCntEnable= 0x0U;
    mcanCfgParams->filterConfig.rrfe = 0x1U;
    mcanCfgParams->filterConfig.rrfs = 0x1U;
    mcanCfgParams->filterConfig.anfe = 0x1U;
    mcanCfgParams->filterConfig.anfs = 0x1U;
    mcanCfgParams->msgRAMConfig.lss = 127U;
    mcanCfgParams->msgRAMConfig.lse = 64U;
    mcanCfgParams->msgRAMConfig.txBufNum = 32U;
    mcanCfgParams->msgRAMConfig.txFIFOSize = 0U;
    mcanCfgParams->msgRAMConfig.txBufMode = 0U;
    mcanCfgParams->msgRAMConfig.txEventFIFOSize = 0U;
    mcanCfgParams->msgRAMConfig.txEventFIFOWaterMark = 0U;
    mcanCfgParams->msgRAMConfig.rxFIFO0size = 64U;
    mcanCfgParams->msgRAMConfig.rxFIFO0OpMode = 0U;
    mcanCfgParams->msgRAMConfig.rxFIFO0waterMark = 0U;
    mcanCfgParams->msgRAMConfig.rxFIFO1size = 64U;
    mcanCfgParams->msgRAMConfig.rxFIFO1waterMark = 0U;
    mcanCfgParams->msgRAMConfig.rxFIFO1OpMode = 0U;

    mcanCfgParams->eccConfig.enable = 1U;
    mcanCfgParams->eccConfig.enableChk = 1U;
    mcanCfgParams->eccConfig.enableRdModWr = 1U;

    mcanCfgParams->errInterruptEnable = 1U;
    mcanCfgParams->dataInterruptEnable = 1U;
    mcanCfgParams->appErrCallBack = MCANAppErrStatusCallback;
    mcanCfgParams->appDataCallBack = MCANAppCallback;
    I changed "tdco" to 6, 4 and 3, getting same error.
    Thanks,
    Viaks Patil
  • Vikas,

    I overlooked your configuration, 

    /*1MHz*/

    mcanBitTimingParams.nomBrp = 0x2U;
    mcanBitTimingParams.nomPropSeg = 0x8U;
    mcanBitTimingParams.nomPseg1 = 0x6U;
    mcanBitTimingParams.nomPseg2 = 0x5U;
    mcanBitTimingParams.nomSjw = 0x1U;

    /*8MHz*/

    mcanBitTimingParams.dataBrp = 0x5U;
    mcanBitTimingParams.dataPropSeg = 0x2U;
    mcanBitTimingParams.dataPseg1 = 0x1U;
    mcanBitTimingParams.dataPseg2 = 0x1U;
    mcanBitTimingParams.dataSjw = 0x1U;

    Your data  phase prescaler value in the code is wrong. Please change as mentioned above.

    Thanks,

    Raghu