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.

TDA4VM: We are tring to use can0 on mcu2-1, could you give us ths simple code (we already success to use can1~3)

Part Number: TDA4VM
Other Parts Discussed in Thread: TDA4VL,

Hi all:

 We are success to use can~1~3, but can0 always initial fail and could not use .

Could you provide any simple code to let us setup can0?

Best Regards,

  • Hi Pierre,

    For clarification, is this using Processor SDK RTOS for J721S2 (TDA4VL) on version 8.4: https://www.ti.com/tool/download/PROCESSOR-SDK-RTOS-J721S2 ?

    I saw some previous posts from you that were using the above SDK, but would like clarification since TDA4VM is the selected part number in this E2E thread.

    Regards,

    Takuma

  • Yes Our sdk version is 08.04.00. 

  • And We test can0~can3 is ok on A72.

  • We are use J721S2 TDA4VE 08.04.00..

    And are used sample code psdk_rtos\mcusw/mcal_drv\mcal_drv\mcal\examples\Can\soc\j721s2\mcu2_1\CanApp_Startup

    It's ok to initial can1~3.

    But can0 always initial failed (could not get interrupt to finish initial).

  • Hello,

    Sorry for the delay.

    Main Domain MCAN0 is not working fine or MCU_MCAN0 ?

    if so , may i know which board you are using TI board or custom board.

    Regards

    Tarun Mukesh

  • We want to use MCU domain's MCAN0 at Main Domain MCU2.1. 

    Could you provide, example code for us.

  •         {
                intNum = APP_MCAN_0_INT0;
                pIsrHandler = Can_2_Int0ISR;
                flag = 1U;
            }
            if (CAN_CONTROLLER_INSTANCE_MCAN1 ==
                CanConfigSet_CanController_List_PC[idx]->CanControllerInst)
            {
                intNum = APP_MCAN_1_INT0;
                pIsrHandler = Can_3_Int0ISR;
                flag = 1U;
            }
            if (CAN_CONTROLLER_INSTANCE_MCAN2 ==
                CanConfigSet_CanController_List_PC[idx]->CanControllerInst)
            {
                intNum = APP_MCAN_2_INT0;
                pIsrHandler = Can_4_Int0ISR;
                flag = 1U;
            }
            if (CAN_CONTROLLER_INSTANCE_MCU_MCAN0 ==
                CanConfigSet_CanController_List_PC[idx]->CanControllerInst)
            {
                intNum = APP_MCU_MCAN_0_INT0;
                pIsrHandler = Can_0_Int0ISR;
                flag = 1U;
            }
    MCU_MCAN0 initial faild, bug other MCAN is ok
    Do you have any demo or example code for MCU_MCAN0 could initail on MCU 2.1
  • CAN_CONFIG_DATA_SECTION_CONST const struct Can_ControllerStruct_PC
        CanConfigSet_PC_CanController_3 =
    {
        CanConf_CanController_CanController_3,      /* Id as provided by GUI */
        (boolean)TRUE,   /* Contoller is used=1 or not_used=0*/
        0x40500000U, /* Can Controller Base Address */  //MCU0: 0x40500000U
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Rx Processing Type */
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Tx Processing Type */
        (boolean)TRUE,/* BusOff  TRUE = Interrupt FALSE = Polling */
        CAN_CONTROLLER_INSTANCE_MCU_MCAN0,  /* Controller Instance */
        (boolean)FALSE,  /* CAN FD Mode Enable */
    };

    We are stop at Can_mcanRamInitDone
     while (MCAN_isMemInitDone(baseAddr) != (uint32) TRUE); 
     
  • Hello,

    We have two domain CAN , MCU CAN and MAIN CAN .

    As MCU2_1 Main domain is being used , Main domain CAN does not require interrupt routing.

    Whereas if MCU Domain CAN, MCU_MCAN is being used then proper interrupt routing and configuration changes are required.

    For example mcusw/mcal_drv/mcal_drv/mcal\examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.c  We have interrupt routing done for main domain CAN to MCU.

     

    Regards

    Tarun Mukesh

  • Can you verify Pin muxing is correctly done or not ?

    which board you are using TI board or custom board.

    Can you confirm you are using TI EVM?

    Regards

    Tarun Mukesh

  • Hi Tarun Mukesh Puvvada :

    It's on our customer board. And I check the circult is ok for mcu_can0.

    Our Mcu_can0  device tree pinmux is ok on A72 and work on linux to use mcu_can0.

    But failed on mcu2_1.



    We  also checked the J721S2_pinmux_data.c

    MCU RX, MCU TX gpio and WKGPIO4,5,6 for mcu_can_phy. is setup.(same as linux device tree)


    And I know that the example code that mcu1_0 is setup for mcu_can  , mcu2_0 is setup for main_can.

    Is that passable that we setup mcu can and main_can on mcu2_1 at the same time?

    When we setup mcu_can0 and main_can0~main_can2 on mcu2_1. , MCU2_1 will always stuck on MCAN_isMemInitDone(baseAddr).

    Remove the mcu_can0. will be ok.

    It's always stuck on MCAN_isMemInitDone(baseAddr).

    If you have any idea, please let me know.

    Best Regards.

  • Hello,

    Is that passable that we setup mcu can and main_can on mcu2_1 at the same time?

    Yes it is possible to use MCU domain CAN and Main Domain CAN on MAIN Domain.

    And are used sample code psdk_rtos\mcusw/mcal_drv\mcal_drv\mcal\examples\Can\soc\j721s2\mcu2_1\CanApp_Startup

    You cannot use the example code as it is because it is for MAIN DOMAIN CAN.Interrupt routing needs to be taken care and as you are using customer board pin muxing in the example code also needs to be taken care.

    Initially configuration changes needs to be done. 

    CAN_CONFIG_DATA_SECTION_CONST const struct Can_ControllerStruct_PC
        CanConfigSet_PC_CanController_3 =
    {
        CanConf_CanController_CanController_3,      /* Id as provided by GUI */
        (boolean)TRUE,   /* Contoller is used=1 or not_used=0*/
        0x40500000U, /* Can Controller Base Address */  //MCU0: 0x40500000U
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Rx Processing Type */
        CAN_TX_RX_PROCESSING_INTERRUPT,  /* Can Tx Processing Type */
        (boolean)TRUE,/* BusOff  TRUE = Interrupt FALSE = Polling */
        CAN_CONTROLLER_INSTANCE_MCU_MCAN0,  /* Controller Instance */
        (boolean)FALSE,  /* CAN FD Mode Enable */
    };

    Did you use Configurator tool to do the changes or you manually changed these ?

    Regards

    Tarun Mukesh