你好,
我正在使用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 ()
我设定的超时时间是5秒,睡眠时间是10秒,并且在醒来后。果然奏效了。
现在我有一个用户应用程序任务,它在user_app_callback下面配置
.app_on_set_dev_config_complete = user_on_set_dev_config_complete
创建的函数原型和定义如下
我担心的是,如果应用程序是广告,就会延迟执行上述任务,但当ble处于长时间睡眠时,它会像预期的那样工作。可能的错误是什么?
我需要知道一旦adv停止,睡眠是如何实现的,参见下面的代码片段。
1 .主循环如何设置睡眠模式?
2.where BLE_APP_PRESENT是禁用的应用程序进入睡眠?
提前谢谢,
Br,
巴拉。
嗨Belaji,
蓝牙活动具有比任何用户应用程序更高的优先级。这意味着有时您的app_easy_timer将在稍后触发。实现接近实时执行的唯一方法是停止所有Bluetooth LE活动(没有广告,没有连接)。
睡眠实现是SDK中最复杂的部分,因此完全从用户中抽象出来。解释其中错综复杂的细节超出了本论坛的范围。正如之前的回复中所提到的,关于睡眠,你所需要知道的是,你可以设置默认的操作模式,设备会在它可以休眠的时候休眠。请查看我之前提到的“入门SDK6”教程。在这个教程中,你可以找到你需要知道的关于睡眠模式的一切。
未定义BLE_APP_PRESENT只在您以GTL模式(您不是)使用设备时才相关,所以保持原样。
/ MHv
嗨MHv,
感谢您的详细回复。就像你说的,当没有广告或应用程序没有连接。用户应用程序按照预期执行。但是我们的产品要求没有达到。我的邮箱号:balaji.s@pmsind.com.我可以分享我们的需求,经过4个月的开发,我们被困在了这里。我们需要对SDK稍加修改的支持。如果这个问题没有解决,我们将被迫更改BLE模块。到目前为止,你的产品是很棒的,记住我们有我们的智能拐杖产品(我们选择使用da14531的ble设计)到目前为止销售了100K单位。请考虑我的请求,并尽快回复。
谢谢提前
Br
巴拉吉
嗨MHv,
当我设置睡眠模式为
在user_config.h和项目文件是ble_sleepmode项目从SDK。
超时后,它进入睡眠(如PD_SYS是关闭的),正如文档中提到的,我们可以使用多个选项来唤醒,所以我更喜欢BLE定时器
我在user_app_callbacks中配置了一个BLE计时器
设备进入睡眠状态但没有从睡眠中醒来。如何唤醒使用RTC /定时器1 / BLE定时器。与我分享一个小片段。
当设备进入休眠状态时,用户应用程序的计时器是否被取消?
谢谢提前
Br,
巴拉吉
嗨,巴拉
我读了整个对话,关于这个声明:
当BLE未连接时,我需要每100毫秒实现相同的adc操作。我的广告间隔是687.5ms,广告超时是3分钟。
当设备配置为扩展休眠模式时,它将在间隔(广告或连接间隔)之间休眠。在休眠模式下,所有外围域都将关闭电源,从而降低系统功耗。因此,如果系统处于扩展睡眠模式,这意味着不可能使用包括ADC在内的任何外围块。
正如MHv_Dialog所提到的,为了周期性地唤醒它,应该使用app_easy_timer()。这个API使用BLE定时器,所以它在扩展睡眠模式下是有效的。你能检查在app_easy_timer()中注册的回调是否被触发吗?
>>>设备进入睡眠状态,但未从睡眠中醒来。如何唤醒使用RTC /定时器1 / BLE定时器。
哪个是睡眠模式?是延长睡眠时间?
谢谢,PM_Dialog