你好,
我使用USB开发工具包,以尽量减少功耗,我们正试图合并睡眠模式之一从以下链接
http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode + /介绍……
我的需要,
1.在每100毫秒的周期中,它应该休眠50毫秒(剩下的50毫秒,它将做adc读取和更新到ble)
2.通过BLE计时器它应该醒过来了。
你能给我提供一些上述约束的例子吗?
谢谢提前
巴拉。
你好,
我使用USB开发工具包,以尽量减少功耗,我们正试图合并睡眠模式之一从以下链接
http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode + /介绍……
我的需要,
1.在每100毫秒的周期中,它应该休眠50毫秒(剩下的50毫秒,它将做adc读取和更新到ble)
2.通过BLE计时器它应该醒过来了。
你能给我提供一些上述约束的例子吗?
谢谢提前
巴拉。
嗨,巴拉
在您选择三种不同的模式之一后,SDK6会管理睡眠模式。在你的情况下,最佳模式是延长睡眠时间。当这种模式被设置(根据睡眠模式教程),设备将自动唤醒执行任何BLE交易-你将不需要在你的代码中做任何事情来确保正确的BLE唤醒。
对于常规的ADC活动,您可以选择使用app_easy_timer来触发读取,也可以将ADC读取绑定到每个BLE事件的尾部。你可以在这里找到如何使用app_easy_timer的说明:http://lpccs-docs.dialog-semiconductor.com/Tutorial_SDK6/timer.html
将ADC读数与每个BLE事件的结束绑定可以稍微提高能源效率,因为它限制了醒来的次数。你可以在你的主头文件中定义一个宏函数,例如user_myproject .h:
在这个文件中还添加一个原型函数:
最后在user_myproject .c中,在这个函数中实现你的ADC读取。
我希望这对你有所帮助。
/ MHv
嗨MHv,
谢谢你的快速回复,我将努力研究它,只是一个后续查询,我需要实现相同的adc操作每100毫秒时,BLE是没有连接.我的广告间隔是687.5ms,广告超时时间是3分钟。广告周期只有在用户按下按钮时才会重新启动,在此之前收音机应该是关闭的。有可能和"延长睡眠"如果BLE是像你上面提到的那样连接的"深度睡眠当BLE未连接时。还有其他的建议吗?
提前谢谢!
Br,
巴拉。
嗨,巴拉
这就只剩下app_easy_timer,这是最容易实现的。对于需要每100ms(在您的情况下执行ADC读数)唤醒的设备来说,延长睡眠时间是功率最低的解决方案。从深度睡眠中醒来需要额外的能量,以便从OTP复制到RAM执行。如果您的应用程序代码是在flash中,那么深度睡眠只会对天数或数周的睡眠时间有用。
记住,睡眠是由SDK管理的。设备将进入休眠状态,除非:
/ MHv
嗨MHv,
我把ble_app_sleepmode项目和配置了一个app_easy定时器user_sleepmode.c
在这个ble_timer_wake ()
我做了睡眠adv超时5秒,睡眠时间是10秒,并且醒来后。正如预期的那样。
现在我有了一个用户应用程序任务,它在user_app_callback下面配置
.app_on_set_dev_config_complete = user_on_set_dev_config_complete
创建的函数原型和定义如下
我担心的是,如果应用程序是广告,在上述任务的执行有延迟,但当ble是在延长睡眠,它工作如预期。可能的错误是什么。
我需要知道一旦停止adv是如何达到睡眠的,参见下面的片段。
1 .主回路如何设置休眠模式?
2.哪里BLE_APP_PRESENT是禁用的应用程序进入睡眠?
提前谢谢,
Br,
巴拉。
嗨Belaji,
蓝牙活动具有比任何用户应用程序更高的优先级。这意味着有时app_easy_timer将在稍后触发。实现接近实时执行的唯一方法是停止所有蓝牙LE活动(没有广告,没有连接)。
睡眠实现是SDK中最复杂的部分,因此完全从用户中抽象出来。这超出了论坛的范围来解释这一复杂的细节。正如在之前的回复中提到的,关于睡眠,你所需要知道的就是你可以设置默认的操作模式,当它可以时,设备就会休眠。请查看我之前提到的“使用SDK6入门”教程。在该教程中,你可以找到你需要知道的关于睡眠模式的一切。
取消BLE_APP_PRESENT的定义只有在您以GTL模式使用设备时才相关(而您不是),所以保持原样。
/ MHv
嗨MHv,
感谢您详细的回复。就像你说的,没有广告或者没有应用的时候。用户应用程序将按照预期执行。但是我们的产品要求没有达到。我的邮箱:balaji.s@pmsind.com.我可以分享我们的需求,经过4个月的开发,我们陷入了困境。我们需要支持对SDK的轻微修改。如果这个问题没有解决,我们将被迫更改BLE模块。到目前为止,你们的产品很棒,请记住,我们的智能手杖产品(我们选择ble设计使用da14531)到目前为止售出了10万件。请考虑我的要求并尽早回复。
谢谢提前
Br
巴拉吉
嗨MHv,
当我把睡眠模式设为
在user_config.h中,项目文件为ble_sleepmode项目从SDK。
超时后进入睡眠状态(如PD_SYS是关闭的),正如在文档中提到的,我们可以使用多个选项来唤醒,所以我更喜欢BLE定时器
我在user_app_callbacks中配置了一个BLE计时器
设备进入睡眠状态,但没有从睡眠中醒来。如何唤醒使用RTC /定时器1 / BLE定时器。分享给我一个相同的小片段。
当设备进入睡眠状态时,用户应用程序计时器是否被取消?
谢谢提前
Br,
巴拉吉
嗨,巴拉
我读了整个对话,关于这个声明:
>>我需要实现相同的adc操作每100毫秒,当BLE没有连接。我的广告时间间隔是687.5ms,广告超时时间是3分钟。
当设备配置为延长睡眠模式时,它将在间隔(广告或连接间隔)之间休眠。在睡眠模式下,所有外围域都关闭电源,以便系统消耗更低的功率。因此,如果系统处于延长睡眠模式,这意味着不可能使用包括ADC在内的任何外围模块。
正如MHv_Dialog所提到的,为了定期唤醒它,应该使用app_easy_timer()。此API使用BLE计时器,因此在扩展睡眠模式下有效。请检查app_easy_timer()中注册的回调是否被触发?
>>>设备睡着了,但没有醒来。如何唤醒使用RTC /定时器1 / BLE定时器。
哪一种是睡眠模式?是睡眠时间延长了吗?
谢谢,PM_Dialog