睡眠后使用BLE计时器

了解更多常见问题教程

9新职位/ 0
最后发表
巴拉吉
离线
最后看到:5天前3周
加入:2019-12-06 06:48
睡眠后使用BLE计时器

你好,

我使用USB开发工具包,以减少电力消耗我们正试图把一个从链接的睡眠模式

http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode + /介绍……

我的需要,

1。每100毫秒的周期应该睡觉了50女士(剩余50毫秒就adc ble读取和更新)

2。通过BLE计时器它应该醒来。

你能提供我一些例子与上面的约束。

谢谢提前

巴拉。

MHv_Dialog
离线
最后看到:1周1天前
工作人员
加入:15 2013-12-06
嗨,巴拉

嗨,巴拉

SDK6管理sleepmode在您选择三种模式之一。在你的情况下最优模式将延长睡眠。当这种模式设置(根据Sleepmode教程),设备会自动醒来——你将不会执行任何祝福事务必须在代码中做任何事情以确保适当的BLE唤醒。

常规ADC活动,您可以选择使用app_easy_timer触发数据或者你可以把你的ADC读取每一个祝福的尾事件。你可以找到说明如何使用app_easy_timer:http://lpccs-docs.dialog-semiconductor.com/Tutorial_SDK6/timer.html

将ADC读数的每个祝福事件可以稍微更节能,因为它限制了唤醒。您可以定义一个宏函数user_myproj.h等主要的头文件:

#定义DLG_EVENT_HANDLER_EXIT () (ble_event_ended ())

还在这个文件中添加一个函数原型:

空白ble_event_ended(无效);

最后在user_myproj。c,实现您的ADC读入这个函数。

我希望这可以帮助。

/ MHv

巴拉吉
离线
最后看到:5天前3周
加入:2019-12-06 06:48
嗨MHv,

嗨MHv,

谢谢你的快速回复,我将试着看看它,只是一个跟进查询我需要获得相同的adc操作当bie是每100毫秒没有连接我广告间隔是687.5毫秒和广告超时3分钟。广告周期重启只有在用户按下一个按钮,直到那时收音机应该保持。是有可能与“延长睡眠“如果bie是连接你上面所提到的,“深度睡眠“当bie是没有连接。任何替代的建议。

提前谢谢!

Br,

巴拉。

MHv_Dialog
离线
最后看到:1周1天前
工作人员
加入:15 2013-12-06
嗨,巴拉

嗨,巴拉

这使得你app_easy_timer这是最简单的一个实现。延长睡眠是最低的电力解决方案的设备需要醒来每100毫秒(执行ADC数据在你的情况下)。从深度睡眠醒来需要额外的能量每唤醒从OTP为了复制到RAM foir执行。如果您的应用程序代码是在flash,那么深度睡眠只会是有用的几天或几周内的睡眠时间。

请记住,睡眠是由SDK。该设备将睡觉,除非:

  1. 蓝牙无线电需要活跃
  2. 默认的睡眠模式被设置为ARCH_SLEEP_OFF
  3. 您的应用程序是一种主动做一些(比如阅读ADC)
  4. 下一个预定的事件发生这么快就睡觉,能量就会白白浪费

/ MHv

巴拉吉
离线
最后看到:5天前3周
加入:2019-12-06 06:48
嗨MHv,

嗨MHv,

我把ble_app_sleepmode项目和配置app_easy计时器user_sleepmode.c

空白user_app_adv_undirect_complete (uint8_t状态){app_awake_timer_used = EASY_TIMER_INVALID_TIMER;/ /禁用唤醒祝福和计时器事件。只有外部(GPIO)唤醒事件可以唤醒处理器。如果(状态= = GAP_ERR_CANCELED) {# ifdef GPIO_WAKE arch_ble_ext_wakeup_on ();/ /配置唤醒按钮app_button_enable ();# endif # ifdef BLE_TIMER_WAKE arch_ble_ext_wakeup_off ();ble_timer_wake ();# endif}}

在这个ble_timer_wake ()

静态孔隙ble_timer_wake(空白){app_easy_wakeup_set (app_wakeup_cb);如果(! app_awake_timer_used) {app_awake_timer_used = app_easy_timer (APP_WAKE_UP_TIMER app_ble_wkp_cb);GPIO_SetActive (GPIO_LED_PORT GPIO_LED_PIN); / /检查是否睡眠正在我打开领导}}/ / BLE定时器回调函数静态孔隙app_ble_wkp_cb (void){#如果! (__DA14531__)如果定义(GetBits16 (SYS_STAT_REG PER_IS_DOWN)) # endif {periph_init ();}如果(! arch_ble_ext_wakeup_get ()) {arch_set_sleep_mode (app_default_sleep_mode);arch_ble_force_wakeup ();arch_ble_ext_wakeup_off ();app_easy_wakeup ();GPIO_SetInactive (GPIO_LED_PORT GPIO_LED_PIN);/ /关闭后领导唤醒}}

我祝福之至5秒超时,唤醒后睡眠时间是10秒,。它像预期的那样工作。

现在我有一个用户应用程序任务在user_app_callback后配置

.app_on_set_dev_config_complete = user_on_set_dev_config_complete

创建函数原型和定义如下

空白user_on_set_dev_config_complete(无效);空白user_on_set_dev_config_complete(){/ /配置一个用户ble计时器user_app_timer_used = app_easy_timer (USER_APP_TIMER user_app_timer_cb);/ / 1秒计时器default_app_on_set_dev_config_complete ();}/ /回调我切换gpio每1秒静态空user_app_timer_cb(){如果(usr_adv_flag = = 0) {GPIO_SetActive (GPIO_LED_PORT GPIO_LED_PIN);/ /这销不同于导致销usr_adv_flag = 1;/ / arch_printf (“\ n领导”);其他}{GPIO_SetInactive (GPIO_LED_PORT GPIO_LED_PIN);usr_adv_flag = 0;/ / arch_printf (\ n "领导");}}

我担心的是如果应用广告上面有延迟执行的任务,但当bie是辣的睡眠精品。什么是可能的错误。

我需要知道睡眠是如何实现一次难以停止,从下面提到片段。

静态孔隙adv_data_update_timer_cb(){/ /如果mnd_data_index MSB设置,厂家数据存储在扫描响应uint8_t * mnf_data_storage = (mnf_data_index & 0 x80) ?stored_scan_rsp_data: stored_adv_data;/ /更新制造商数据mnf_data_update ();/ /更新所选字段的广告数据(生产数据)memcpy (mnf_data_storage + (mnf_data_index & 0 x7f), &mnf_data, sizeof (struct mnf_specific_data_ad_structure));/ /更新广告数据动态app_easy_gap_update_adv_data (stored_adv_data, stored_adv_data_len, stored_scan_rsp_data stored_scan_rsp_data_len);/ /停止广告空气操作按钮按下将唤醒系统app_easy_gap_advertise_stop ();}

1。主循环设置睡眠模式如何?

2。BLE_APP_PRESENT是禁用应用程序进入睡哪里呢?

提前谢谢,

Br,

巴拉。

MHv_Dialog
离线
最后看到:1周1天前
工作人员
加入:15 2013-12-06
嗨Belaji,

嗨Belaji,

蓝牙活动有更高的优先级比你的用户应用程序。这意味着有时你app_easy_timer稍后将触发。附近acheieve实时执行的唯一方法是停止所有蓝牙LE活动(没有广告,没有连接)。

睡眠的实现是最复杂的SDK的一部分,和从用户是完全抽象的。它超出了论坛的解释范围的错综复杂的细节。就像前面提到过的答复,所有你需要知道的关于睡眠,你可以设置默认的操作模式和设备将睡眠时。请看看SDK6“入门”教程我之前提到的。在这个教程中你可以找到所有你需要知道的关于睡眠模式。

它通过BLE_APP_PRESENT只是如果您正在使用设备相关GTL模式(没有),所以离开。

/ MHv

巴拉吉
离线
最后看到:5天前3周
加入:2019-12-06 06:48
嗨MHv,

嗨MHv,

谢谢你详尽的回复。正如你说的,当没有广告或应用程序没有连接。用户应用程序执行。但是我们的产品要求没有得到满足。我的邮件id:balaji.s@pmsind.com。我可以分享我们的需求,经过4个月的发展我们被困在这里。我们需要稍微修改SDK的支持。我们不得不改变我们的祝福模块,如果这个问题没有解决。到现在你的产品是很棒的,请记住我们smartcane产品(我们选择了祝福设计使用da14531)售出100台。请考虑我的请求,在最早的回复。

谢谢提前

Br

巴拉吉

巴拉吉
离线
最后看到:5天前3周
加入:2019-12-06 06:48
嗨MHv,

嗨MHv,

当我设置睡眠模式

静态常量sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;

在user_config。h和项目文件ble_sleepmode项目从SDK。

超时后进入睡眠(如PD_SYS是关闭的)文档中提到的,我们可以使用多个选择唤醒我优先BLE计时器

我配置一个祝福user_app_callbacks内部定时器

静态常量struct app_callbacks user_app_callbacks = {.app_on_set_dev_config_complete = user_on_set_dev_config_complete};空白user_on_set_dev_config_complete () {app_easy_wakeup_set (app_wakeup_cb);app_awake_timer_used = app_easy_timer (APP_WAKE_UP_TIMER app_ble_wkp_cb);/ / 5秒后唤醒default_app_on_set_dev_config_complete ();}

设备睡觉但是没有从睡梦中醒来。如何使用RTC醒来/定时器1 / BLE计时器。分享我的一个小片段。

是用户应用程序计时器是取消当设备进入睡眠?

谢谢提前

Br,

巴拉吉

PM_Dialog
离线
最后看到:12小时3分钟前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

我读了整个谈话,关于这句话:

> >我需要获得相同的adc操作bie是未连接时每100毫秒。我的广告间隔是687.5毫秒和广告超时3分钟。

当设备配置在延长睡眠模式,那么它将睡眠之间的间隔(广告或连接的时间间隔)。在睡眠模式下,所有的外围域关闭,这样系统耗电低。所以,如果系统在延长睡眠模式,这意味着它是不可能使用任何外围模块包括ADC。

正如MHv_Dialog提到的,为了吵醒它定期,app_easy_timer应该使用()。这个API使用BLE定时器,所以它在延长睡眠模式是有效的。你能请检查如果回调注册app_easy_timer得到triggred是()?

> > >设备睡觉但是没有从睡梦中醒来。如何使用RTC醒来/定时器1 / BLE计时器。

睡眠模式?延长睡眠吗?

谢谢,PM_Dialog