主题中讨论的其他器件:CC2340R5
工具与软件:
大家好、团队成员:
我的 客户正在使用 CC2340-Q1、他们的一个场景需要长时间睡眠。
由于设计中没有复位按钮、因此它们启用看门狗以防止系统挂起。
但它们符合 SDK 8.10中的看门狗问题。 具体步骤如下:
1.启用看门狗
2. 清除 WDT 并 关闭 WDT
(3)广播设置:
(4)但日志显示它每5秒进行一次看门狗复位。
请帮助提供注释、说明 为什么看门狗每5秒复位一次。
谢谢。
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.
工具与软件:
大家好、团队成员:
我的 客户正在使用 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、您好!
我查看提供的代码、并在整个代码中添加了一些 GPIO 日志记录。 我将附上该计划的一份截图。
您能否指导客户使用 GPIO_TOGGLE 进行类似的逻辑跟踪? 有关 GPIO_TOGGLE 的更多信息、请参阅 GPIO.h命令。
请参阅 RF 调试部分 以了解有关观察射频输出的更多信息。
在日志内、请注意看门狗计时器触发从不切换。 计时器完成后、将进入此回调。 由于看不到切换、这使我认为看门狗不会启动复位。 看门狗在 appMain 中重新加载并打开。 在标准的 Basic_BLE 项目中、appMain 只会在复位后再次执行、这似乎表明看门狗正在复位。
请告诉客户如何进行类似的逻辑跟踪、并告诉我客户是否在其他地方调用 appMain。 我尚未在所提供的项目中找到这方面的示例。
谢谢!
Isaac
Mike、您好!
NIMA 之前提供了我们的看门狗示例代码。 请参阅 此处的看门狗示例代码。
请尽可能提供支票的答案!
谢谢!
Isaac
您好 March、
该功能是可能实现的。 当器件退出 IDLE/STANDBY 模式时、需要初始化并启动看门狗。 请参阅函数 Power_getTransitionState ()。 该函数将提供当前状态、当器件进入活动状态时、您可以启动看门狗计时器。 请记住、看门狗计时器将通过待机/空闲模式运行、因此使用 Watchdog_Close () 函数停止计时器、然后在器件返回活动模式时复位非常重要。
谢谢!
Isaac
您好 Isaac:
早上好!
如下图所示(红色帧)
在"Advertising End"事件中,我们执行了"Watchdog_Close ();"
理论上,它应该已经进入睡眠或空闲直到被唤醒 .
但是、为什么系统在5.5秒后仍"看门狗复位"? 它不断重复。
(附注:看门狗周期:5.5秒)
当我把"看门狗周期"改为"N"秒时、也会把系统复位周期改为"N"秒。
谢谢!
BR、
3月。
您好 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(¶ms); // 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, ¶ms); // 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
您好 March、
如前所述、这是另一种选择。 对于此选项、您需要在中断回调中复位器件。 使用 Watchdog_reset_off 会将看门狗从计时器到期时复位更改为计时器到期时生成中断。 需要将复位逻辑添加到软件中。
我的第一个建议是在计时器接近结束时使用 Watchdog_setReload ()函数重新加载看门狗 由于看门狗定时器一旦启用就无法被禁用、因此确保看门狗不会使器件复位的唯一方法是重新加载定时器。 看门狗清除不会停止看门狗复位、仅重新加载计时器才允许该操作。
请测试这两个选项。
谢谢!
Isaac