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 "无法打开 COM 端口"

Guru**** 2601915 points
Other Parts Discussed in Thread: EM1402EVM, TMS570LS0432

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/743203/tidm-tms570bms-bq76pl455-gui-unable-to-open-com-port

器件型号:TIDM-TMS570BMS

您好!

我对 TMS570板进行了适当的修改、以便它连接到 EM1402EVM 板(移除 R8和 R9并将它们连接到 J4-1/J4-2)。 我将示例代码加载到 CSS 中没有任何问题、但当启动 bq76PL455程序时、我会不断收到相同的消息。 请帮助我修复此错误。

对 TMS570板进行编程后、JTAG LED 闪烁、我认为这意味着我正在使用 TIDM 代码对板进行正确编程、但我可能无法正确对代码进行编程。 我还尝试过其他示例代码、例如 EVM1402代码、并收到相同的错误。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试仅使用 EM1402EVM 连接到 GUI 也会产生相同的错误。 EM1402电路板是否可能存在问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Serpa、

    在 TMS570LS0432 LaunchPad 上、TMS570LS0432 UART 连接到 XDS100V2 FT232HL IC、供用户通过主机 PC 上的 USB UART 端口与 TMS570LS0432器件进行通信。 这个连接必须被 N2HET 模块仿真的 UART 所取代。

    要将 NHET 仿真 UART 用于主机 PC、请移除 R8、R9 (您已经移除了)、并将 J4-1连接到 U2引脚39、并将 J4-2连接到 U2引脚38 (请检查您是否已将导线焊接到 R8和 R9的正确焊盘上)。

    请使用 HetUART1 PutChar (..) 要将字符打印到终端以确保 NHET UART 工作:

    hetInit();

    _enable_IRQ ();

    hetREG1->GCR = 0x01030001;

    G_ui32HostRxReady = 0;

    G_ui32HostTxReady = 1;

    G_ui32SCIRxReady = 0;

    G_ui32SCITxReady = 1;

    G_ui32ACBEnabled = 0;

    G_ui32PollingChannelRestore =0;

    HetUART1 Config();

    HetUART1 PutText (...);

    //Wakeup Pl455

    SetCS3forWake();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。 我对 Code Composer Studio 不是很熟悉、因此我如何使用您提供的代码? 此外、在使用代码时、我需要哪种类型的结果?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    将以下内容添加到 sys_main.c 中 main()函数的起始位置:

    /*用户代码开始(3)*/
    hetInit();

    hetREG1->GCR = 0x01030001;

    //使用轮询发送 UART 数据
    hetREG1->INTENAC = 0xFFFFFFFF;
    hetREG1->FLG = 0xFFFFFFFF;
    HetUART1PutText ("使用轮询模式发送数据\n"\});
    HetUART1Printf ("波特率:%d bps。\n\n"、115200);

    while (1){}

    然后编译项目、将代码加载到闪存中。 在 PC 上打开一个终端、连接到 COM 端口(XDS100类 USB 串行端口...)、然后执行您的代码。

    终端中应显示"使用轮询模式发送数据"的文本。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    我将您发送的代码粘贴到 tms570bms 代码上、这就是终端上显示的内容:

    我不能帮助,但我认为自己做了些错误的事情? 我是否使用了正确的示例代码? 我尝试将您的代码与 EVM1402和 bq76PL455a 示例代码一起使用、但它们不起作用、因此我认为 tms570bms 代码是正确的代码。 此外、还需要注意的是、示例代码中已经实现了一些用户代码、这是否与终端上打印的内容有关? 这是用户代码:

    /*用户代码开始(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 标志);
    extern void ActiveBalancingInit();


    /*用户代码结束*/

    void main (void)

    /*用户代码开始(3)*/
    寄存器 unsigned int temp;
    systemInit();
    gioInit();
    用于测试的#ifdef 0 //代码
    initEMB1428Interface(0);
    gioSetBit (gioPORTA、4、0);//CS_Store LOW
    gioSetBit (gioPORTA、4、1);//CS_Store HIGH 用于测试
    gioSetBit (gioPORTA、4、0);//CS_Store low for testing
    gioSetBit (gioPORTA、7、1);//CS_OE 高电平
    gioSetBit (gioPORTA、7、0);//CS_OE 低电平用于测试
    gioSetBit (gioPORTA、7、1);//CS_OE 高电平用于测试

    gioSetBit (gioPORTA、6、1);//RS_EMB128高电平、在复位时保持1428。
    gioSetBit (gioPORTA、6、0);//rs_EMB128低电平用于测试
    gioSetBit (gioPORTA、6、1);//rs_EMB128高位用于测试
    spiInit();
    EMB_Vset (0、2);//设置 DAC 输出以控制充电/不充电电流,在此处用于测试
    #endif
    sciInit();
    sciSetBudrate (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;
    HetUART1 Config();

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

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

    while (1)

    if (g_ui32PollingChannelRestore)//需要在禁用 ACB 后恢复 PL455通道寄存器

    PollingChannelRestore();
    G_ui32PollingChannelRestore =0;

    如果(g_ui32HostRxReady)//主机在 ACB 处于禁用状态时与 PLL 进行通信

    G_ui32HostStatus = HostMessageProcess ();
    G_ui32HostRxReady = 0;

    Temp = ActiveBalancing (g_ui32ACBEnabled);//运行 ACB 函数。 操作由 ACB 时间节拍控制
    IF (温度)

    while (1);


    /*用户代码结束*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    运行您提供的代码时,我删除了上述/*用户代码 begin (3)*/代码,但保留了/*用户代码 begin (2)*/,因为它不会在没有/*用户代码 begin (2)的情况下进行编译
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可通过更改16节电池连接来解决问题。 它们松动、未在 EVM1402上正确注册
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常好、感谢我不断更新。