prox_reporter的Timer1配置会导致功率急剧增加

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
5个职位/ 0个新职位
最后一篇
安德鲁尔
离线
最后看到:4个月4个星期前
加入:2020-11-05 02:45
prox_reporter的Timer1配置会导致功率急剧增加

嗨伙计,

我可以设置prox_reporter项目,以便进行广告超时并转到延长睡眠状态。这很好 - 广告做了几次爆发,然后延长睡眠。我在大约1.6ua的某个地方左右。

但是,如果我设置了“cfg_ext_sleep_wakeup_timer1”并更改*没有别的*,我在广告间隔内得到ma尖峰,它永远不会停止。这不好。似乎Timer1正在重置广告应该超时的事实。

我如何避免这种情况?

谢谢。

设备:
安德鲁尔
离线
最后看到:4个月4个星期前
加入:2020-11-05 02:45

好的,使用cfg_ext_sleep_wakeup_timer1启用timer1真的不做我想要的。Timer1只运行一旦广告停止,然后它立即唤醒BLE系统。

我想要的是timer1运行*始终*是否是广告,运行或其他任何东西。我想大致每15/16ms切换一个GPIO,无论有什么,不合适,无效,延长睡眠等,我都不会*不希望Timer1实际上导致BLE重新启动。

所以,问题成为:

1)我在Timer1_Interrupt_Handler中设置了一个Timer1_Flag,当它触发时,然后调用app_resume_system_from_sleep()。是正确的事情吗?

2)我需要在configure_timer1_wakeup中调整reload_val - 我将它设置为16.这是我命中的第一个奇怪。无论我设置reload_value的值,我的示波器都显示在app_resume_system_from_sleep()中的处理程序触发140.944ms至140.952ms之间的某个位置。为什么Reload_Value没有影响?编辑:Timer1配置了忽略RELOAD_VAL的TIM1_FREE_RUN_ON。切换到TIM1_FREE_RUN_OFF修复了此问题。

3)我必须在某个地方添加一个最终寻找Timer1_Flag的处理程序。我将其添加到app_resume_from_sleep()。那是正确的地方吗?

4)我必须做点什么来防止耙击中。我试图在app_resume_from_sleep()是否被设置。如果是这样,我跳过整个ARCH_BLE_EXT_WAKEUP_GET()代码块。然而,这似乎似乎是足够的,似乎可能是错误的地方。如果我看着我的Keithley Sourcemeter,我会看到系统在1秒钟内拉出大约14ua的电流,安静时期为4秒。这看起来与我的广告参数(1SEC / 5SEC)完全相同,所以我还在做一些掀起BLE系统的事情。我该怎么办?

谢谢。

PM_Dialog
离线
最后看到:2周21小时前
职员
加入:2018-02-08 11:03
嗨安德鲁尔,

嗨安德鲁尔,

在预定义的时间之后停止广告时,Timer1被配置 - 请参阅.Advertise_Period和。user_config文件中的adv_scenario。

当设备停止广告时,触发App_Advertise_Complete()回调,并且Timer1配置发生 - configure_timer1_wakeup()。

如果检查Count_Options配置结构,您将看到Timer1重载值设置为Tim1_Reload_max(11位)。此外,输入时钟是低功耗时钟,具体是内部RCX(参见DA1458x_Config_Advanced.h中的CFG_LP_CLK宏)

因此,timer1_interrupt_hdlr()将被触发:(1/15000)* 2^11 ~= 0.1365秒或136.5 msec。

触发Timer1_Interrupt_hdlr()时,系统从睡眠状态恢复。

>>我想大致每15/16ms切换GPIO,无论发生在BLE,非BLE,活动,延长的睡眠等内容,I *不希望Timer1实际导致BLE重新启动。

您可能会更改timer1重新加载值,并在timer1_interrupt_hdlr()中切换GPIO

在SDK的Prox_reporter示例中,定时器1用于从睡眠模式唤醒DA14531。因此,我的推荐将以empty_peripheral_template开头,并在此项目中端口Timer1配置。

谢谢,PM_Dialog

安德鲁尔
离线
最后看到:4个月4个星期前
加入:2020-11-05 02:45
问题是当

问题是,当系统出于任何原因退出睡眠状态时,它会再次开始广告。因此,能够有效地使得最大值为136.5ms的Timer1使得系统永远不会留下广告模式。

PM_Dialog
离线
最后看到:2周21小时前
职员
加入:2018-02-08 11:03
嗨安德鲁尔,

嗨安德鲁尔,

如我之前的评论中所提到的,Timer1_interrupt_hdlr()将在〜136.5毫秒后启动,当广告已停止时。因此,芯片将睡觉〜136.5毫秒,然后它会再次醒来。

谢谢,PM_Dialog