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.

[参考译文] 编译器/TMS570LS3137:tps65381-TMS570

Guru**** 2862450 points

Other Parts Discussed in Thread: TMS570LS0432

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/891487/compiler-tms570ls3137-tps65381-tms570

器件型号:TMS570LS3137
主题中讨论的其他器件:TMS570LS0432

工具/软件:TI C/C++编译器

你好

 当我 使用 tps65381时、连接到 tms570ls0432、我找到了  

程序保持在此处“while (ecmpIfGetRegister(ECMP_SAFETY_STATUS5)!= 7);”

无符号短整型 ecmpIfGetRegister (无符号短整型 reg)

unsigned short 命令= ecmpIfCOMMAND[reg].read;
无符号短整型值= 0;

spiREG2->DAT1 = 0x04FE0000 |命令;
while ((spiREG2->FLG & 0x100)!=0x100);
值=(spiREG2->BUF)& 0xFF;

返回值和0xFF;

 返回7

为什么选择?

这是我的配置

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

    黄你好、

    返回值为7、这意味着 SPI 通信没有问题。 TPS65x 处于诊断状态(7)。  

    代码不应卡在该位置、因为返回的值= 7:

    while (ecmpIfGetRegister (ECMP_SAFETY_STATUS5)!= 7);  

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

    抱歉

     返回4。

    我说错了

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

    [引用用户="whong Zhao"]

    抱歉

     返回4。

    我说错了

    [/报价]

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

    谢谢你  

    现在、我的程序可以运行、但看门狗不起作用。

    void rtiNotification (uint32通知)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(9)*/
    uint16_t WdgFailCount;
    switch (通知)

    案例4:
    开关(WDWindow)

    /**在打开窗口期间发送三个答案*/
    案例 ECMP_WINDOW_OPEN:
    WdgFailCount = ecmpGetWdgFailCount();
    if (WdgFailCount = 0)

    开关(CURR_STA)

    情况0:
    if (ecmpEnableWdg()) CURR_Sta++;
    ecmpLockRegisters();
    中断;
    案例1:
    CURR_STA++;
    中断;
    默认值:
    中断;

    //

    WdgFailCount = ecmpGetWdgFailCount();   我 设置断点、 WdgFailCount=7

    但我的程序可以 正常运行。看门狗不起作用。

     

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

    空 InitWatchDog (空)

    uint16_t open_window_config = 40U;
    uint16_t Close_Window_config = 15U;

    //_mpuInit_();
    // spiInit();
    ecmpInit();

    if (ecmpIfGetRegister (((uint16_t) ecmp_safety_STATUS5)!= 7U)

    /*TPS65381不保持在诊断状态。*/
    while (1)
    {/*不做任何事情*/}

    ecmpWdgWindowConfig (open_window_config、close_window_config);
    TrgPulseOpen =((uint32_t) open_window_config*1000u)/2U;
    TrgPulseClose =(((uint32_t) open_window_config*1000u)/2U)+(((uint32_t) close_window_config*1000u)/3U);
    /*选择所需的 WD 模式-以 mu 秒为单位的时间*/

    rtiEnableNotification (rtiNOTIFICATION_COMPARE2);

    WDWindow ow=ECMP_WINDOW_OPEN;/*看门狗窗口打开。*/
    rtiREG1->CMP[2U].Compx = TrgPulseOpen;/*写入 Topen*/中间的打开窗口
    rtiREG1->CMP[2U].UDCPx = TrgPulseClose;/*在 Tclose*/的1/3写入关闭窗口
    rtiStartCounter (rtiCOUNTER_Block1);

    返回;

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

    void ecmpInit (void)

    while (ecmpIfGetRegister (ECMP_SAFETY_STATUS5)!= 7);

    /*保持在诊断状态并配置 SAFETY_CHECK_CONTROL 寄存器*/
    ecmpIfSetRegister (ecmp_safety_check_control、0x17);

    ecmpIfSetRegister (ecmp_safety_function_config、0xE4);

    /*清除状态因诺化*/
    ecmpIfGetRegister (ECMP_VMON_STATUS1);
    ecmpIfGetRegister (ECMP_VMON_STATUS2);
    ecmpIfGetRegister (ECMP_SAFETY_STATUS1);
    ecmpIfGetRegister (ecmp_safety_STATUS2);
    ecmpIfGetRegister (ECMP_SAFETY_STATUS3);
    ecmpIfGetRegister (ECMP_SAFETY_STATUS4);
    ecmpIfSetRegister (ECMP_SAFETY_ERROR_STATUS、0x00);

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

    我发现 tps65381 始终是 ecmpIfGetRegister (ECMP_SAFETY_STATUS5)= 7;

    我已删除  

    ecmpSendWdgAnswer();
     ecmpSendWdgAnswer();
    ecmpSendWdgAnswer();

     但 tps65381 始终 ecmpIfGetRegister (ecmp_safety_STATUS5)= 7;

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

    问题已在另一个主题中得到解决。