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.

[参考译文] CC2340R5-Q1:看门狗复位异常

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1414273/cc2340r5-q1-watchdog-reset-abnormally

器件型号:CC2340R5-Q1
主题中讨论的其他器件:CC2340R5

工具与软件:

大家好、团队成员:  

我的 客户正在使用 CC2340-Q1、他们的一个场景需要长时间睡眠。

由于设计中没有复位按钮、因此它们启用看门狗以防止系统挂起。

但它们符合 SDK 8.10中的看门狗问题。 具体步骤如下:

1.启用看门狗

2. 清除 WDT 并 关闭 WDT  

(3)广播设置:

(4)但日志显示它每5秒进行一次看门狗复位。

请帮助提供注释、说明 为什么看门狗每5秒复位一次。

谢谢。

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

    大家好、团队成员:  

    请帮助我的客户提供意见或建议、以 反馈 更多信息或运行更多测试。

    谢谢。

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

    您好!

    很抱歉响应延迟。  

    CC2340R5上的看门狗存在一个已知问题、您可以在此处阅读更多相关信息: 看门狗计时器示例代码—SimpleLink CC23xx SDK BLE5-Stack 用户指南3.03.01.00文档

    请告诉我这是否有帮助、但为了确保我了解问题是在广告禁用后把手关闭后触发看门狗?

    此致!

    Nima Behmanesh

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

    尊敬的 Nima:

    感谢您的答复。

    如上所述、我的客户使用了官方的 Basic BLE 项目并启用了看门狗功能。
    实际上、广播结束后、它会在5秒后再次复位。  

    此外、我已经和我的客户讨论过、 他认为 将看门狗重新加载值设置为0xFFFFFFFF (~34小时)可能并不能 解决所有测试场景。

    在一个测试场景中、CC2340进入待机状态超过34小时、甚至更长。  

    REF: 看门狗计时器示例代码—SimpleLink CC23xx SDK BLE5-Stack 用户指南3.03.01.00文档

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

    尊敬的 Mike:

    让我问我的一些同事、解决这一问题的最佳办法是什么。

    我也会尝试在我这边重现这个问题。 如果把手已关闭、则看门狗应关闭  不会  触发器。

    此致!

    Nima Behmanesh

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

    嗨、Mike、

    我收到了代码、请给我几天时间进行试用、然后回复给您

    此致!

    Nima Behmanesh

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

    尊敬的 Mike:

    今天要运行代码、并且应该有一些更新 EOD。

    此致!

    Nima Behmanesh

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

    尊敬的 Mike:

    我为代码私下给您发了消息。

    此致!
    Nima Behmanesh

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

    Mike、您好!  

    我查看提供的代码、并在整个代码中添加了一些 GPIO 日志记录。 我将附上该计划的一份截图。  

    您能否指导客户使用 GPIO_TOGGLE 进行类似的逻辑跟踪? 有关 GPIO_TOGGLE 的更多信息、请参阅 GPIO.h命令。

    请参阅  RF 调试部分 以了解有关观察射频输出的更多信息。   

    在日志内、请注意看门狗计时器触发从不切换。 计时器完成后、将进入此回调。 由于看不到切换、这使我认为看门狗不会启动复位。 看门狗在 appMain 中重新加载并打开。 在标准的 Basic_BLE 项目中、appMain 只会在复位后再次执行、这似乎表明看门狗正在复位。  

    请告诉客户如何进行类似的逻辑跟踪、并告诉我客户是否在其他地方调用 appMain。 我尚未在所提供的项目中找到这方面的示例。  

    谢谢!  

    Isaac

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

    尊敬的 Issac:  

    感谢您的评论。 我已联系我的客户进行检查。

    我的客户想知道 TI 是否有示例代码已集成 basic_ble 和看门狗功能。

    如果是、则可以为我的客户节省一些时间来集成  basic_ble  和看门狗功能。

    谢谢。

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

    Mike、您好!  

    NIMA 之前提供了我们的看门狗示例代码。 请参阅 此处的看门狗示例代码。  

    请尽可能提供支票的答案!  

    谢谢!  

    Isaac

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

    1.产品在使用前将处于空闲状态一年以上。
    2.为了降低功耗、在空闲期间不会定期唤醒"清除看门狗"。
    3、"NIMA"建议的方法已经试过,但不适合应用于实际产品。
    4.空闲时芯片实际上会关闭"看门狗"定时。 是我们的预期。

    感谢你的帮助

    BR.

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

    您好 March、  

    我仍在研究提供的软件。 是否采取了与我之前发送的逻辑布线类似的逻辑布线?  

    我想我现在理解的是、当器件处于空闲模式时、看门狗将被禁用、但当器件处于活动状态时、您需要看门狗。  

    请在2018年10月10日之前收到回复。  

    谢谢!  
    Isaac

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

    您好   Isaac:

       "当器件处于 IDLE 模式中时、看门狗将被禁用、但是当器件激活时、您需要看门狗。"

    这正是我们需要的功能。  

    是否有实现这一目标的机会?

    谢谢!

    3月

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

    您好 March、  

    该功能是可能实现的。 当器件退出 IDLE/STANDBY 模式时、需要初始化并启动看门狗。 请参阅函数 Power_getTransitionState ()。 该函数将提供当前状态、当器件进入活动状态时、您可以启动看门狗计时器。 请记住、看门狗计时器将通过待机/空闲模式运行、因此使用 Watchdog_Close () 函数停止计时器、然后在器件返回活动模式时复位非常重要。

    有关更多信息、请参阅 电源 API看门狗 API。 

    谢谢!  
    Isaac

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

    您好 Isaac

      早上好!
    如下图所示(红色帧)  
    在"Advertising End"事件中,我们执行了"Watchdog_Close ();"
    理论上,它应该已经进入睡眠或空闲直到被唤醒 .
    但是、为什么系统在5.5秒后仍"看门狗复位"? 它不断重复。
    (附注:看门狗周期:5.5秒)

    当我把"看门狗周期"改为"N"秒时、也会把系统复位周期改为"N"秒。

     

    谢谢!

    BR、

    3月。

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

    您好 March、  

    我会在星期一(10/21)作出更详细的回应。  

    谢谢!  
    Isaac

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

    您好 March、  

    很抱歉我的答复出现延误。 我在线程的前面部分提供了一条逻辑布线、其中包含了我在您的应用中看到的输出。 我对看门狗复位持续5.5秒的情况感到困惑、更具体地说、看门狗计时器复位的情况到底在哪里?

    首先、使用提供的代码、我完全看不到看门狗复位。 我看到广播每~3.5-3.6秒开始一次、其中广播持续~2秒、这是配置的持续时间。 每次广播结束时、看门狗计时器都会关闭。 此外、每次看门狗计时器启动复位时、都应输入看门狗回调函数、我也没有看到该复位。  

    其次、即使我确实看到了看门狗计时器复位的证据、我也不明白复位持续了5.5秒的确定位置。  

    第三、要将器件配置为在何处进入待机模式?  

    请提供逻辑线迹、其中包括我在上面附加的线迹。 此外、如果您观察到5.5秒长的重置、请提供一些与此相关的痕迹或信息。  

    谢谢!  

    Isaac

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

    您好 Isaac:

    相同的代码示例。  (Mike Wu、之前提供过代码)
    通用的符号链接。

    /*********************************************************************
     * @fn      appMain
     *
     * @brief   Application main function
     *
     * @return  none
     */
    void appMain(void)
    {
        // Call the BLEAppUtil module init function
        BLEAppUtil_init(&criticalErrorHandler, &App_StackInitDoneHandler,
                        &appMainParams, &appMainPeriCentParams);
    
    //    //==============================
    //    Watchdog_init();
    //    /* Open a Watchdog driver instance */
    //    Watchdog_Params_init(&params);
    //    params.callbackFxn    = (Watchdog_Callback)watchdogCallback;
    //    params.debugStallMode = Watchdog_DEBUG_STALL_ON;
    //    params.resetMode      = Watchdog_RESET_ON;
    //
    //    uint32_t        reloadValue;
    //    watchdogHandle = Watchdog_open(CONFIG_WATCHDOG_0, &params);
    //    if (watchdogHandle == NULL)
    //    {
    //        /* Error opening Watchdog */
    //        while (1) {}
    //    }
    //    reloadValue = Watchdog_convertMsToTicks(watchdogHandle, TIMEOUT_MS);
    //
    //    if (reloadValue != 0)
    //    {
    //        Watchdog_setReload(watchdogHandle, reloadValue);
    //    }
    }
    

    上电后、它将只广播一次、并且 UART 消息将只显示一次。
    即使它超过5.5秒甚至更长。

    取消标记这段代码。
    它将根据看门狗周期进行广播

    请指导我如何修改此"basic_ble + Watchdog"示例代码。

    这样它就不再自行唤醒广播。

    谢谢!

    BR、

    3月。

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

    3月、  

    我明白了。 广播设置为持续2秒、由于看门狗复位、广播将再次开始再持续2秒。 广播持续2秒、在此之后、会发出 BLEAPPUTIL_ADV_END_AFTER_DISABLE 事件。 当该事件发生时、看门狗计时器会被清除。 当看门狗定时器被清零后、它将再次开始计数到5.5秒。 当计时器达到5.5秒时、器件将重置、广播再次开始。  

    数据表中的第8.6节规定:"计数器过期时、看门狗计时器会复位..."和"启用后...cannot 将停止"。 基本上、一旦看门狗被启用、您就不能将其禁用。 要复位看门狗计时器、每次接近超时时间时都需要重新加载计时器。 Clear 将清除计时器值、但发生这种情况时会重新加载并重新启动计时器。 为避免这种情况、请尝试在超时发生之前定期重新加载计时器。  

    另一种选项是使用 Watchdog_reset_off resetMode 参数。 除了启动复位、看门狗计时器将生成中断而不是复位。 在中断中、您可以决定器件是应复位还是继续运行。 此外、如果您要持续进行广播、则需要添加额外的逻辑。 将广播持续时间设置为200、将广播2秒、然后停止广播、直到重新启用广播。  

    请告诉我这是否有帮助、并对延迟深表歉意。  

    谢谢!  

    Isaac

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

    您好, Isaac

       我测试了您的建议。 (WATCHDOG_RESET_OFF resetMode)

    但是、结果仍然是相同的复位。

    谢谢!

    3月。

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

    您好 March、  

    如前所述、这是另一种选择。 对于此选项、您需要在中断回调中复位器件。 使用 Watchdog_reset_off 会将看门狗从计时器到期时复位更改为计时器到期时生成中断。 需要将复位逻辑添加到软件中。  

    我的第一个建议是在计时器接近结束时使用 Watchdog_setReload ()函数重新加载看门狗 由于看门狗定时器一旦启用就无法被禁用、因此确保看门狗不会使器件复位的唯一方法是重新加载定时器。 看门狗清除不会停止看门狗复位、仅重新加载计时器才允许该操作。  

    请测试这两个选项。  

    谢谢!  
    Isaac