DA14580
基本的开发工具包
SDK 5.0.3
Hello again对话-
我们正在基于ble_app_peripheral示例继续开发电池供电的BLE设备。我设置了进入扩展睡眠,并使用app_easy_timer回调以1秒的间隔唤醒外围设备,以采样传感器数据并存储ADC读数。当我唤醒外围设备时,我不会唤醒BLE函数....并不想将电池电量降到最低。在传感器读数后,我想回到延长睡眠,直到下一个传感器读数间隔。这一切都是功能上的工作,但最近的功率分析表明,在记录样本唤醒后,我不会回到完全扩展的睡眠模式。我希望通过配置扩展睡眠模式,这将发生在主循环之外,但这似乎没有发生。我在传感器采样例程的末尾添加了arch_ble_ext_wakeup_on(),但它似乎也不会将我返回到完全扩展睡眠模式。
我尝试在不唤醒外围设备和采样传感器数据的情况下执行相同的代码,并确认实现了扩展睡眠。
我需要做什么才能回到低扩展睡眠模式电源?
再次感谢,马克斯
设备:
嗨Max44,
如果没有BLE操作,580会自动进入休眠状态,内核定时器需要BLE核心处于可操作状态才能唤醒,所以定时器会在BLE核心被触发的时间自动唤醒BLE核心。在那之后,你应该测量你的尺寸,580会回到睡眠状态,并关闭外围设备。580将通过主循环来执行计时器的处理程序,因为调度消息的函数位于主循环中。关于你的设备没有睡眠你确定是这样吗?您是否在测量时调用arch_disable_sleep() ?你是否在专业板上检查过功率分析器以确保你的设备不会休眠?
由于MT_dialog
太,
谢谢你的信息。我们建立了一个克隆的电流电压转换电路来轮廓电源,因为我们有类似的部分在手边。我们在已知的延长睡眠模式下看到的基线电流肯定比我们在外围样本间看到的低得多。
要详细说明我正在进行的测试:程序初始化并开始正常的BLE操作(与ble_app_peripheral示例相同)。开发调试和UART被配置为关闭,扩展休眠模式被配置为开启。我通常通过Keil加载到RAM中来运行程序,退出调试器。我也从EEPROM引导运行。在10秒的延迟之后,我调用延长睡眠并开始一个1秒的计时器。在第二个计时器回调中,我使用peripher_init()函数启动外围设备。我没有调用arch_disable_sleep()。然后运行几个ADC示例,将结果存储在RAM数组中。在开始写EEPROM页之前积累256字节页的EEPROM数据。这将每64秒发生一次。 At the end of the one second sample routine I release the EEPROM, return the pads to the power on state, restart the 1 second timer, call arch_ble_ext_wakeup_on(), then exit. This repeats endlessly looping through sections of the EEPROM to see how long the battery lasts.
所以…我有这个程序的一个版本,它只是进入扩展睡眠,然后一个无止境的循环,而没有运行上面的外围示例来验证扩展睡眠。回想一下,在BLE广告完成后,你给我提供的关于做这件事的建议,它非常有效。功率剖面仪显示低电流,我们在设计中测量到大约2 uA。
运行每秒通过ADC采样一次的程序版本时,在1秒采样之间不会显示与在扩展睡眠模式中停止时相同的低电流。
我正在启动第二个测试设置,并将验证所有这些。同时,如果你看到我在上面做得不太对的地方,请告诉我。
谢谢你,马克斯
嗨Max44,
就我从你的描述中所能理解的,我没有看到一些会导致睡眠模式取消的东西,你能不能附上一个功率分析器快照来检查当前的消耗?你确定你看到的增加的功耗是580而不是其他任何一个通电并消耗能量的部件吗?
由于MT_dialog
太,
说得好。让我仔细看看外部组件的状态,看看我是否可以关闭一些东西,以验证额外的功率消耗是或不是来自那里。我们预计会有额外的电流,但估计会很小。我将回来报告。
问候,马克斯
太,
你是对的。最后,我跟踪了这个问题,在ADC示例例程中将GPIO输出配置为范围触发器。该引脚有一个外部上拉,导致GPIO下沉约300uA时,它是不活动的默认状态。是我的错,我不好意思承认。:(
不过我很欣赏你对行动的回顾。这很好地证实了我们可以期待在周期性ADC采样之后回到扩展睡眠模式,这是我现在看到的,在纠正了出错的GPIO之后。一切运转良好,我们正处于调整功率和测量电池寿命的阶段。
认为这解决。再次感谢您的支持。
马克斯
嗨Max44,
谢谢你告诉我们,很高兴我能帮上忙。
MT_dialog问好