Page 1 of 1

【已解决】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 8日 17:30
by clcl

低功耗设备,调试过程中,发现隔一段时间,程序会自动重启一下,

使用 tal_system_get_reset_reason 获取重启原因是 软件复位

但我的程序里没有调用过软复位的操作,请问 sdk 在某些情况下会自动重启设备吗?

Code: Select all

[I] : poweron reset reason: 4, msg: Software triggered reset (TY_RST_SOFTWARE)

Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 9日 11:15
by zeso

你好,低功耗设备有一个检查机制,超过2min未进低功耗模式认为是异常状态,导致设备重启。
请确认下软复位的周期和是否有操作导致设备长时间未进低功耗。


Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 9日 11:56
by clcl

好的


Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 12日 16:24
by clcl

问一下 EFM32 进入休眠时,sdk 用的是哪个休眠模式 ? EM1, EM2, EM3 中的哪个?

我检查一下有哪些外设会休眠


Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 12日 16:40
by clcl

目前发现一个问题,用 TIMER 输出 PWM 控制电机的时候

如果连接了JLINK调试器,PWM是正常输出的,如果断开调试器,PWM 就是断断续续的

猜测是周期的休眠唤醒,用的 EM2/3 模式,所以休眠的时候定时器是关闭的,没有输出

我查看了 EFM32 手册的 DBG 模块,有如下描述:

Leaving the debugger connected when issuing a WFI or WFE to enter EM2 or EM3 will make the system enter a special EM2 mode.
This mode differs from regular EM2 and EM3 in that the high frequency clocks are still enabled, and certain core functionality is still
powered in order to maintain debug functionality.

说明调试器连接时,TIMER 的时钟不会被关掉


那么有什么 api 可以让sdk暂时不进入休眠吗?

我需要让电机短暂的运行一段时间,然后再进入正常的 休眠-唤醒 状态


Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 12日 20:27
by zeso

你好:
1.休眠模式为EM2;
2.可以使用tkl_cpu_force_wakeup/tkl_cpu_allow_sleep接口使能/关闭强制唤醒,注意唤醒时间不要超过2min。


Re: 【求助】程序每隔一段时间会自动软复位

Posted: 2023年 Oct 13日 14:02
by clcl

好的,明白了