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.

TIDM-TMS570BMS: bq76PL455 GUI "Unable to open COM Port"

Part Number: TIDM-TMS570BMS

Hello,

I made the appropriate modifications to the TMS570 board so that it connect to the EM1402EVM board (removing R8 and R9 and connecting them to J4-1/J4-2). I loaded the example code into CSS with no issues but when it came time to launch the bq76PL455 program I keep getting the same message. Please help me fix this error.

After programming the TMS570 board, the JTAG LED blinks which I think means I'm programming the board correctly using the TIDM code but perhaps I'm not programming the code correctly. I have also tried other example codes such as the EVM1402 code and receive the same error. 

  • Trying to connect to the GUI using only the EM1402EVM also yields the same error. Is it possible the problem lies with the EM1402 board?
  • Hello Serpa,

    On the TMS570LS0432 LaunchPad, the TMS570LS0432 UART is connected to the XDS100V2 FT232HL IC for user to communicate with the TMS570LS0432 device through a USB UART port on the host PC. This connection must be replaced by the UART emulated by the N2HET module.

    To use the NHET emulated UART for Host PC, please remove R8, R9 (you did already), and connect J4-1 to U2 pin 39, and J4-2 to U2 pin 38 (please check if you soldered the wire to the correct pad of R8 and R9).

    Please use HetUART1PutChar(..) to print chars to the terminal to make sure the NHET UART works:

    hetInit();

    _enable_IRQ();

    hetREG1->GCR = 0x01030001;

    g_ui32HostRxReady = 0;

    g_ui32HostTxReady = 1;

    g_ui32SCIRxReady = 0;

    g_ui32SCITxReady = 1;

    g_ui32ACBEnabled = 0;

    g_ui32PollingChannelRestore =0;

    HetUART1Config();

    HetUART1PutText(...);

    //Wakeup Pl455

    SetCS3forWake();

  • Thank you for the response. I am not that familiar with Code Composer Studio so how do I use the code that you provided? Also, when using the code, what type of result am I looking for?

  • Hello,

    Add the following to the very beginning of your main() function in sys_main.c:

    /* USER CODE BEGIN (3) */
    hetInit();

    hetREG1->GCR = 0x01030001;

    //Send UART data using Polling
    hetREG1->INTENAC = 0xFFFFFFFF;
    hetREG1->FLG = 0xFFFFFFFF;
    HetUART1PutText("Send Data using Polling Mode\n\r");
    HetUART1Printf("BaudRate: %d bps.\n\r", 115200);

    while(1){}

    Then compile your project, load the code to flash. Open one terminal on your PC, connect to COM port (XDS100 class USB Serial Port...), then execute your code.

    The text of "Send Data using Polling Mode" should be displayed in the terminal.

  • Hi QJ,

    I pasted the code you sent onto the tms570bms code and this is what was displayed on the terminal:

    I cant help but think im doing something wrong? Am I using the correct example code? I tried using your code with the EVM1402 and bq76PL455a example codes but they didn't work so I think the tms570bms code is the correct one. Also to note there was some user code already implemented into the example code, could this have to do with what was printed on the terminal? This is the user code:

    /* USER CODE BEGIN (2) */

    unsigned int g_ui32PollingChannelRestore =0;
    unsigned int g_ui32HostStatus =0;
    extern unsigned int g_ui32HostTxReady, g_ui32HostRxReady;
    extern unsigned int g_ui32SCIRxReady, g_ui32SCITxReady;
    extern unsigned int g_ui32ACBEnabled;
    extern void PollingChannelRestore();
    extern unsigned int ActiveBalancing(unsigned int flag);
    extern void ActiveBalancingInit();


    /* USER CODE END */

    void main(void)
    {
    /* USER CODE BEGIN (3) */
    register unsigned int temp;
    systemInit();
    gioInit();
    #ifdef 0 //code for testing
    initEMB1428Interface(0);
    gioSetBit(gioPORTA, 4, 0); //CS_Store low
    gioSetBit(gioPORTA, 4, 1); //CS_Store high for testing
    gioSetBit(gioPORTA, 4, 0); //CS_Store low for testing
    gioSetBit(gioPORTA, 7, 1); //CS_OE high
    gioSetBit(gioPORTA, 7, 0); //CS_OE low for testing
    gioSetBit(gioPORTA, 7, 1); //CS_OE high for testing

    gioSetBit(gioPORTA, 6, 1); //RS_EMB128 high, Keep 1428 in reset.
    gioSetBit(gioPORTA, 6, 0); //RS_EMB128low for testing
    gioSetBit(gioPORTA, 6, 1); //RS_EMB128 high for testing
    spiInit();
    EMB_Vset(0, 2); // Set the DAC output to control charge/discharege current, use here for testing
    #endif
    sciInit();
    sciSetBaudrate(scilinREG, 250000);
    rtiInit();
    vimInit();
    hetInit();
    _enable_IRQ();
    hetREG1->GCR = 0x01030001;
    g_ui32HostRxReady = 0;
    g_ui32HostTxReady = 1;
    g_ui32SCIRxReady = 0;
    g_ui32SCITxReady = 1;

    g_ui32ACBEnabled = 0;
    g_ui32PollingChannelRestore =0;
    HetUART1Config();

    //Wakeup Pl455
    SetCS3forWake();
    SetWakeLow();
    delayms(100);
    SetWakeHigh();
    delayms(100);

    ActiveBalancingInit();
    rtiEnableNotification(rtiNOTIFICATION_COMPARE1);
    rtiStartCounter(rtiCOUNTER_BLOCK0);

    while(1)
    {
    if (g_ui32PollingChannelRestore) // need to restore PL455 channel registers after disabling ACB
    {
    PollingChannelRestore();
    g_ui32PollingChannelRestore =0;
    }

    if (g_ui32HostRxReady) // host communicated with PLL when ACB is in disable state
    {
    g_ui32HostStatus = HostMessageProcess();
    g_ui32HostRxReady =0;
    }

    temp = ActiveBalancing(g_ui32ACBEnabled); // running ACB function. The operation is controlled by the ACB time tick
    if(temp)
    {
    while(1);
    }
    }
    /* USER CODE END */

  • When running the code you provided, I removed the above /* USER CODE BEGIN (3) */ code but left the /* USER CODE BEGIN (2) */ because it would not compile without the /* USER CODE BEGIN (2) */
  • Solved by changing the 16 cells connections. They were loose and were not registering properly on the EVM1402
  • Wonderful, thanks for keeping me updated.