Bluetooth LE技术在许多日常使用的设备中随处可见,包括联网手表、跟踪标签、运动和健身传感器、医疗传感器以及移动设备等,除此之外在智能家居里也有诸多应用,例如智能门锁和照明,这些设备设计优化最重要的指标之一就是功耗,功耗也是衡量一款芯片的重要指标。
QN908x是恩智浦专为可穿戴设备、物联网等需要低功耗,且具备蓝牙连接功能的电子设备设计的SoC,其具有超低的功耗和极高的吞吐率。该产品可在纽扣电池等小容量电池的驱动下长时间运行。
图1 Bluetooth Low Energy应用
影响QN908x功耗的因素
对于一个蓝牙产品,功耗的控制与产品的成功与否至关重要,本文只讨论与QN908x芯片硬件相关的影响功耗的因素,关于应用程序及协议栈等方面的因素,不在本文讨论的范围内。
DCDC/LDO
QN908x内部提供LDO和DCDC两种电源模式,将外部电压转换为QN908x芯片内数字电路、模拟电路以及RF的工作电压。
使用LDO不需额外增加电感和电容,可以节省成本,接收灵敏度会比DCDC模式高1~2dBm;使用DCDC可以最大限度的降低功耗,且仅需额外增加两个电感和一个电容。软件可通过函数POWER_EnableDCDC()开启DCDC。
图2 LDO与DCDC电源电路示意图
功耗模式
QN908x支持多种功耗模式,包括Active、Sleep和Power down模式,Power down式还分为Power down1和 Power down0模式。
Active模式:CPU内存和外设时钟全部使能,CPU全速运行;
Sleep模式:MCU时钟停止,CPU处于挂起状态,未关断外设的时钟处于开启状态,处理器、外设寄存器、内部RAM和引脚电平都保持;
Power down0模式:系统及外设时钟停止,仅有32kHz时钟保持,RTC、ACMP和Sleep Timer可以通过寄存器配置使能或停止。
Power down1模式:系统所有时钟停止,只能通过外部中断唤醒。
时钟
QN908x的AHB和APB总线的时钟在开发阶段都是可以配置的。降低时钟可以降低功耗。
外设
QN908x的系统外设的电源和时钟都是可以通过寄存器控制的,及时停止时钟和电源可以降低功耗。
QN908x数据手册中有各个外设的功耗参数,可供参考。
IO漏电
QN908x的IO端口,除PB00和PB01引脚外,其他IO在缺省状态时均为输入上拉。
在调试功耗性能时,GPIO的状态必须与外设电路匹配,阻止漏电情况发生。对于未使用引脚,建议设置为输出高阻。。
Bluetooth LE 模块
Bluetooth LE射频模块在Active模式下具有很好的功耗表现。QN908x在使用3.0V供电、启用DCDC、使用32MHz外部晶体、0dBm发射功率的工作情况下:TX状态时芯片整体功耗峰值为3.5mA,RX状态时芯片整体功耗峰值为3.5mA。
影响射频模块功耗的因素,广播间隔:在广播期间,发送广播数据的间隔会影响设备的功耗。在QN908x的SDK中可通过函数Gap_SetAdvertisingParameters()修改广播参数。
图3 Bluetooth LE在广播间隔1秒与广播间隔100ms时的功耗
同时,广播包长、广播类型及发射功率都会影响BLE的功耗。包长越短,发射功率越低,功耗越小。
连接间隔:与广播间隔类似,增加连接间隔时间也会降低设备的功耗。在QN908x的SDK中通过函数Gap_UpdateConnectionParameters()修改连接参数。
传输速率:QN908x可支持蓝牙5.0的2M模式。2M模式会更省电。
从细节降低功耗
低功耗的设计需“精打细算”,每一句代码都有可能影响到整体功耗,以下总结一些通用技巧:
1.使能低功耗模式;
2.设置合适的总线时钟频率;
3.及时关闭外设电压和时钟;
4.根据外围电路设置GPIO,避免GPIO漏电;
5.设置合适的广播间隔和连接间隔。
低功耗配置与使能
在QN908x的SDK中,共有四个Bluetooth LE的样例工程使能了低功耗功能,分别是:Power profiling、heart rate sensor、temperature collector/sensor。
基于QN908x SDK的固件架构,使能低功耗非常简单。具体步骤如下:
1. 在app_preinclude.h使能如下的宏定义:
2. 在board.h中添加声明:
3. 在board.c文件中的函数:BOARD_WakeupRestore()和BOARD_PrepareDeepSleep()这两个函数内增加对用户外设处理操作。
4. 通过PWR_DisallowDeviceToSleep()和PWR_AllowDeviceToSleep()函数禁止或允许系统进入低功耗。
5. 使用函数PWR_PreventEnterLowPower(true)或使用PWR_PreventEnterLowPower(false)阻止或允许系统进入低功耗。
6. 在相应的文件中添加头文件#include "PWR_Interface.h"。
总结
本文简要介绍了影响QN908x功耗的因素及如何使能低功耗。QN908x具有优秀的低功耗性能,是一颗十分适合可穿戴设备和IoT市场的芯片。
作者:刘佳 文章出处:恩智浦MCU加油站
|