优化BLE应用以实现最小能耗运行是一项挑战。了解BLE协议和底层的系统级芯片(SoC)架构对于延长电池寿命至关重要。其中对BLE工作模式(例如广播和睡眠)的见解尤其重要。通过向堆栈提供正确的输入以及利用BLE SoC的硬件功能,我们可以采用多种不同的方法来最小化整个系统的功耗。
在蓝牙通信中,BLE已保护了大量的连接设备插座(socket)。而在无线设计中选择BLE的最关键原因之一在于它的普及性,这要归功于它在智能手机中的广泛部署以及能够延长电池使用寿命的能力。由于大多数物联网(IoT)终端节点都由电池供电,因此较长的电池寿命就显得极为珍贵。
尽管是众所周知的事情,但还是要强调选择BLE器件时首先要评估其文档。虽然最初的数据挖掘过程看起来微不足道,但是很快你就会发现半导体器件数据手册的比较过程将是一项相当复杂的任务。
例如,考虑无线SoC的接收或发送模式中的工作电流。许多BLE SoC文档显示的电流消耗为几毫安。例如,Silicon Labs的EFR32BG22 SoC在0 dBm时的射频接收电流为2.6 mA,发射电流为3.5 mA。请注意,这些数字仅与SoC RF收发器有关。而在SoC级别,这些电流都会稍高一些,分别为3.6 mA和4.1 mA。一个常见的错误是仅依靠SoC电流消耗(current drain)的射频数字(radio numbers)来做判断。器件文档首页的数据通常要通过对数据手册进行全面分析才能得以验证。
另一个例子是数据手册中显示的以微安/兆赫(μA/MHz)为单位的CPU功耗。在密集计算应用中,该数值会成为决定性的选择标准。当然,这一数值通常指的是CPU在最高频率时的最佳情况。换句话说,当SoC CPU的工作频率与制造商数据手册中指定的频率不同时,数据手册中显示的数值可能会被证明是非常不准确的。
第三个例子是深度睡眠电流,这对于电池供电的终端产品至关重要。该数值通常在数百纳安至几微安之间。非常重要的是,须确保深度睡眠电流的数值与保留的RAM大小相关,并且包含实时时钟(RTC)电流消耗。RTC与精确的睡眠时钟源结合在一起是为了维持BLE正常工作所需的时序。对于EFR32BG22 SoC,其数据手册的首页提到了在EM2模式中深度睡眠电流为1.40 µA,保留的RAM为32 KB,同时RTC从LXCO(低频晶体振荡器)产生。更多信息可以参考该数据手册的电流消耗部分。
因此,数据手册中的功耗数值缺乏标准化可能会造成错误的比较,最终可能导致选择错误的器件。
了解应用需求评估BLE SoC时考虑应用需求很重要。大多数供应商都试图以负责任的态度来展示他们器件的数值,但是对于一个可能要支持多种不同应用的器件而言,所提供的数值显然不可能适合所有应用案例。在这种情况下,终端应用的知识就变得至关重要。
选择BLE SoC时,工作电流和睡眠电流是关键指标。必须将这些电流数值置入与应用环境紧密匹配的模型中,以产生对平均功耗的合理评估。此类模型通常包括开/关占空比,我们知道低占空比更适合使用具有最低深度睡眠电流的SoC,而高占空比则更适合具有最低工作电流的SoC。
另一个重要参数可能是终端产品的环境温度。BLE SoC在25℃时的漏电流与85℃或更高温度时的漏电流明显不同。高温下的漏电流是工业应用中的关键选择标准,例如子计量表(sub-metering),因为其需要在高温下确保电池寿命。
图1:EFR32BG22 BLE SoC的电流图。在25℃时,BLE SoC的漏电流与85℃或更高温度时的漏电流有显著差异。从图中还可以明显看出,电流在很大程度上取决于SoC时钟频率。上图对应EM0工作模式,下图对应EM1睡眠模式。两张图均描述了内部直流-直流(DC- DC)转换器在3V供电时的芯片电流。
应用的另一个重要元素在于所使用的电池技术类型(在电池供电的终端产品中)。电池要为集成在最新BLE SoC中的片上DC-DC转换器供电。使用DC-DC转换器将显著降低整个SoC的工作电流消耗。一些复杂的SoC可能会为射频和CPU集成独立的DC-DC转换器。这种做法提供了一种优化的解决方案,但趋势显然是只使用一个转换器,从而最小化SoC的成本。
图2:EFR32BG22是集成了一个片上DC-DC转换器的BLE SoC的例子。使用dc-dc转换器将显著降低整个SoC的工作电流消耗。一些复杂的SoC可能会为射频和CPU集成独立的dc-dc转换器。这种做法提供了一种优化的解决方案,但趋势显然是只使用一个转换器,从而最小化SoC的成本。
最后,了解如何使用片内或片外存储器也很重要。BLE终端节点的一个常见需求是执行软件的无线(OTA)更新。根据传输的固件映像的大小,使用外接闪存可能成本更低。但事实证明,其增加的功耗和潜在的安全问题可能比使用片上闪存要高得多。对OTA更新进行详细分析将有助于确定最合适的内存物料清单。
近年来,BLE SoC大幅降低了总工作电流消耗,同时保持了更低的深度睡眠电流。原因是硅技术从较大的尺寸(0.18 µm,90 nm和65 nm)迁移到了更优化的工艺节点(55 nm和40 nm)。采用40 nm节点,再加上集成片上dc-dc转换器,极大地降低了EFR32BG22 SoC的总体电流消耗。
例如,当禁用片上dc-dc转换器而从片上闪存运行Coremark时,Arm Cortex-M33 CPU需要54 µA/MHz的功耗。当激活同一个dc-dc转换器时,相同的操作仅需要37 µA/MHz的功耗。
在深度睡眠模式下,保留的RAM至关重要,因为它是大部分功耗预算的来源,而且当BLE SoC必须返回到工作模式时,保留的RAM可以加快启动速度。从设计角度看,低漏电流SRAM的使用能让芯片设计人员将深度睡眠电流保持在1µA范围内。选择BLE SoC的另一个关键考量因素是每个SRAM的大小可能有所不同。选择保留RAM大小的能力将有助于最小化深度睡眠模式的功耗。EFR32BG22 SoC在32 KB片上RAM中集成了可独立选择的SRAM。
最后,时钟门控和电源门控技术的结合使BLE SoC可以根据其工作模式完全关闭设备的某些功能。这些功能的激活是自动的,应用开发人员基本上不需要去了解详细的信息。
软件支持最小化BLE应用的功耗需要对射频操作进行高度优化的调度,并且在保持协议所需的精确时序的同时,最大限度地处于尽可能低的能耗模式下。为了精确控制发射功率,BLE堆栈集成了dc-dc转换器的配置。堆栈来自于软件开发套件(SDK),该套件与集成开发环境(IDE)完美整合在一起。IDE包括一个网络分析器,可直接从SoC射频获取数据;一个先进的能量监控器,可将功耗与代码位置相关联;以及一个可视的通用属性配置文件(Generic Attribute profile,GATT)配置器,可实现标准蓝牙SIG配置文件或自定义服务。这些工具支持BLE应用的开发与硬件设计完全整合,从而使开发人员可以专注于影响功耗的高级设计选择。此外,SDK还集成了安全的引导加载程序,支持通过OTA和串行接口进行固件更新。
先进硬件和强大软件的结合支持应用开发人员在多个设备上执行自己的基准测试。这是推荐在选择BLE SoC之前所应采取的方法。虽然最初耗时较多,但这种方法已被证明是非常有价值的,有助于发现因硬件功能短缺或软件功能不佳所导致的潜藏挑战。
开发一种标准化的基准测试策略还可以帮助开发人员对各个供应商的器件进行对比。嵌入式微处理器基准联盟(EEMBC)开发的IoTMark-BLE基准配置文件提供了一种有用的功耗评估工具。IoTMark-BLE基准配置文件构建了一个真实的IoT边缘节点模型,其由I2C传感器与涵盖睡眠、广告和连接模式操作的BLE射频所组成。
尽管IoTMark-BLE基准测试可能并不适合所有应用案例,但它可以作为基础来支持为任何特定的应用探索适合的场景。
简而言之,对供应商数据手册的并行比较可能会导致代价高昂的误解和错误陈述。当比较SoC中的板载和外部DC-DC转换器模块时,必须在系统层级上对BLE SoC进行分析。第三方基准测试通常可以帮助确定比较分析的真实情况。