4个职位/ 0个新职位
最后发表
莫蒂默
离线
最后看到:一年九个月前
加入:2017-07-19 02:59
定时唤醒实现方法

您好,我们现在有这样一个需求:
需求描述:在扩展休眠模式下,想定时唤醒单片机并做一些外设检测处理工作,若外设条件满足要求,则继续工作,不满足条件则继续休眠,过程中不广播;
遇到的问题:
1,用扩展休眠模式下的默认10年代唤醒一次做定时唤醒,自己需要运行的代码应该加到哪里?是不是这样的定时唤醒只唤醒了BLE核心去广播,无法运行自己的代码,若是可以,这个定时唤醒能不能把广播关掉吗?
2、用app_esay_timer(时间,wakeup_callback);做定时唤醒(在休眠时调用),休眠时定时器未关闭,功耗太大;

期待您的帮助,谢谢!!!

设备:
Qinjiny_Dialog
离线
最后看到:3个月2个星期前
工作人员
加入:2016-11-01 05:47
1.理论上是可以利用这个唤醒来做其他事情的

1.理论上是可以利用这个唤醒来做其他事情的,代码可以尝试放在app_on_ble_powered或者app_on_system_powered里面。问题在于这两个函数不只在10秒睡眠醒来的时候调用,而是任何情况上电和睡眠都会调用,所以你需要小心在这两个函数里添加代码不会产生其他影响,比如说设置一个国旗之类的

2.app_easy_timer使用的是蓝牙低功耗时钟ke_timer,理论上不会对功耗产生很大的影响,可以检查一下是不是有其他什么外设之类的没有关掉

莫蒂默
离线
最后看到:一年九个月前
加入:2017-07-19 02:59
嗨:Qinjiny_Dialog,关于上边的问题二

嗨:Qinjiny_Dialog,关于上边的问题二,我没有加app_easy_timer(500年,wake_task_cb)时,功耗是正常的,我加上后功耗就增加的500 ua,添加位置如下图:
其它未作任何改动,所以觉得功耗增加应该是使用了app_easy_timer引起的。
空白set_sleep(空白)

app_disconnect_op (0, CO_ERROR_REMOTE_DEV_POWER_OFF);
shift_screen_power_mode (SCREEN_OFF);
power_ctl (POWER_OFF);
i2c_release ();
quad_decoder_release ();
app_easy_timer_cancel (led_display_timer_handle);
app_easy_gap_advertise_stop ();
arch_ble_ext_wakeup_on ();
wake_task_cb app_easy_timer (500);
arch_set_sleep_mode (ARCH_EXT_SLEEP_ON);

以上做法是否有误?望指教!谢谢!

dxxdxpdxy
离线
最后看到:2年6个月前
加入:2017-02-21 08:20
不要用app_easy_timer()这个接口,

不要用app_easy_timer()这个接口,用原始的ke_timer_set (), ke_timer_clear()接口试下,定时唤醒完全能满足你的需求,因为我的设备每秒唤醒一次计时,不广播的话加各种外设功耗在20微安左右。