作者:Stephen Evanczuk.
对于那些能够快速将概念转化为可行的物联网 (IoT)应用的开发者来说,市场在智能互联产品方面的需求为他们提供了广阔的机会。高能效处理器、各种可选的无线连接和广泛的硬件外设,为实现合适的、可投入生产的低功耗设计奠定了坚实的基础。
然而,在产品定义的早期阶段,开发者需要一个灵活的开发平台,用来快速构建基于同级别处理器、连接子系统和外设的原型。能够快速构建工作原型并轻松添加功能,对于提供早期概念验证并支持定制软件开发来说至关重要。
本文展示了开发者如何使用 Silicon Labs 的硬件和软件,以及大量现成的扩展板快速构建专门的节能互连型物联网设备原型。
实现快速原型开发
在探索电池供电型无线物联网设备的各种新的可能性时,开发者会发现自己已陷入了与构建有效开发平台有关的诸多细节的困扰中。凭借其集成子系统,先进的片上系统(SoC) 设备可以提供这样一个核心平台,但开发者仍然需要围绕这些设备构建完整的系统。
为了给这些设备构建一个合适的开发平台,开发者不仅需要满足强大性能和更长电池寿命的基本要求,还需要实现灵活性,以满足每个应用的具体要求。SiliconLabs 的 BGM220-EK4314A Explorer套件满足这种组合要求,使开发人员能够专注于新设计概念的快速原型开发,而无需处理构建开发平台所涉及的各种细节。
灵活的快速开发平台
BGM220-EK4314A Explorer 套件是开发基于蓝牙的各种应用的低成本平台,该平台整合了 SiLabs 的 BGM220P Wireless Gecko 模块 (BGM220PC22HNA)、1 个板载 SEGGER J-Link 调试器、1 个按钮、1 个发光二极管 (LED) 以及多种扩展选项(图 1)。
BGM220P 模块可作为小型电池供电型物联网设备的一个完整解决方案。其集成的 EFR32BG22 Blue Gecko SoC 具有超低功耗、蓝牙到达角(AoA) 和离开角 (AoD) 能力以及次 1 米定位精度——所有这些都是越来越多的流行蓝牙应用所必需的,包括资产追踪标签、智能门锁、健身等应用。
BGM220P 模块可作为独立系统运行,它将 EFR32BG22 系统芯片与 512KB 闪存、32KB 随机存取存储器 (RAM)、高频 (HF)和低频 (LF) 晶体 (XTAL) 以及一个用于无线连接的 2.4 GHz 匹配网络和陶瓷天线组合在一起(图2)。
除了可用作小型物联网设计的独立主机,该模块还可以作为通过其 UART 接口连接的主机处理器的网络协处理器(NCP)。该模块的集成蓝牙堆栈为独立设计中在模块上运行的应用执行无线服务,或在 NCP 设计中运行时处理从主机收到的指令。
高能效无线 SoC
BGM220P 模块的 EFR32BG22 蓝牙无线 SoC 集成了一个 32 位 ArmCortex-M33 内核、1 个 2.4GHz
无线电、安全、能量管理子系统,以及多个定时器和接口选择。EFR32BG22系统芯片专门为超低功耗、电池供电型设备而设计,具有多种能量管理功能,可使纽扣电池的运行寿命达到 10 年。
通过单一的外部电压供电,该 SoC 使用其内部能量管理单元来产生内部电源电压。在运行期间,由能量管理单元控制 SoC 的五种能量模式 (EM)之间的转换。当 SoC 从激活模式 (EM0) 过渡到睡眠模式 (EM1)、深度睡眠模式 (EM2)、停止模式 (EM3) 或停机模式 (EM4)时,每种模式都通过保持逐渐减少的激活功能块来进一步降低功耗(图 3)。
在 76.8 MHz 和 3 V 的激活模式 (EM0) 下,使用其内部的 DC/DC 转换器,该 SoC 的功耗为 27 μA/MHz。EM0是正常工作模式,也是唯一可以使用 Cortex M33 处理器内核和所有外设模块的模式。
所有的外设都可以在睡眠模式 (EM1)下使用,当系统进入功耗更低的模式时,保持激活状态的外设会更少。低功耗模式下,处于激活状态的时钟和功能块数量的减少会使功耗水平显著降低:
睡眠模式下 (EM1):17 μA/MHz
深度睡眠模式 (EM2):1.40μA,保留 32KB RAM,实时时钟 (RTC) 通过 LFXO 运行
停止模式 (EM3) 下:1.05 μA,保留 8KB RAM,RTC 通过 SoC 集成超低频 1 kHz 电阻电容 (RC) 振荡器 (ULFRCO)运行
0.17 μA 停机模式 (EM4)
一些电池供电型设备需要的不只是在低功耗工作模式下运行处理器的能力。许多支持蓝牙的应用通常都会长期处于很少激活或者非激活状态,但在恢复激活状态时需要低延迟响应。事实上,即使一个应用具有更宽松的延迟要求,缓慢唤醒操作也会浪费电力,因为处理器在完成唤醒过程并进入激活模式(或完成从高功耗模式进入低功耗模式的过程)时不会进行任何有用的工作。
随着激活状态之间的时间缩短,当缓慢唤醒或进入电源模式的时间相比处理器在非激活期保持高功耗模式所消耗的能量更多时,使用低功耗睡眠模式甚至会起到反作用。因此,致力于优化电池寿命的开发人员有时会将处理器维持在更高的功耗模式,以满足应用处理需求。
通过使用具有更快的唤醒和电源进入时间的处理器,开发者可以更充分地利用处理器的低功耗模式。在 EM1 中,EFG32BG22 在三个时钟/1.24 µs内唤醒,进入时间为 1.29 µs,在 EM4 中则分别延长至 8.81 ms 和 9.96 µs (表 1)。
用于在恢复激活状态时唤醒处理器的方法也可能会显著影响电池寿命。尽管如工业应用等一些应用会要求系统使用轮询处理方式来确保严格的周期性计时,但消费领域的许多应用都采用基于事件的处理方式来响应特定活动。例如,对基于事件的应用使用轮询方法,当处理器被反复无谓地唤醒时,会大大影响电池寿命。
许多基于传感器的设计使用“中断时唤醒”功能来避免只是为了检查激活状态而重复唤醒处理器的情况。与此相同,EFG32BG22系统芯片无线电子系统的内置“射频唤醒”功能也采用了类似的中断驱动方法。这样,开发人员能够使处理器保持在功耗较低的能量模式下,直到发生射频 (RF)激活情况。
在实际中,开发人员将 EFG32BG22 无线 SoC 置于超低功耗的 EM2、EM3 或 EM4 模式,并依靠“射频唤醒”功能在检测到 RF 能量时唤醒SoC。当仅限于检测超过阈值的能量时,RFSENS 的能耗为 131 nA。RFSENSE 模式的选择性更强,电流消耗略多,为 138nA,但在这种模式下,RFSENSE 会过滤进入的射频信号,确保在出现有效射频信号而不是射频噪声时唤醒。
在某些情况下,EFG32BG22 SoC 可能根本不需要唤醒处理器内核来响应外部事件:SiLabs 的外设反射系统 (PRS)使外设对事件作出反应,在不唤醒处理器内核的情况下进行操作。外设之间可以直接通信,其功能可以组合使用,以实现复杂的功能。通过使用具有较低能量模式的 PRS功能,开发者可以在不影响传感器数据采集等关键功能的情况下大幅降低功耗。
内置调试功能,易于扩展
BGM220P 模块内置于 BGM220 Explorer 套件板中,为电池供电型蓝牙设计带来 EFR32BG22 SoC
的全套能量管理和处理能力。当需要快速建立原型来探索新的设计概念时,该板的其他功能有助于加速开发。
通过板上 USB Micro-B 接口访问,板上 SEGGER J-Link 调试器可实现代码下载和调试以及一个用于主机控制台访问的虚拟 COM端口。该调试器还支持 SiLabs 的数据包跟踪接口 (PTI) 功能,用于分析通过无线网络传输或接收的数据包。
用于快速原型设计时,该板支持多种扩展选项,便于灵活地探索需要不同组合的传感器、致动器、连接选项和其他外设的新设计理念。依托多个供应商提供的大量mikroBUS 扩展板和 Qwiic 连接系统硬件,开发人员可以快速地为每个应用配置一个开发平台。
插入该板的 mikroBUS 插座后,mikroBUS 板可通过 I2C、SPI 或 UART 接口与 BGM220P 模块连接。Qwiic 连接器提供了Qwiic 系统的 I2C 接口,用于连接一个或多个 Qwiic 板,连接距离最长可达 4 英尺。对于较长距离的连接,开发者可以使用 SparkFun QwiicBus EndPoint 板 (COM-16988),该板使用差分信号来保持 I2C 信号的完整性,连接距离长约 100 英尺。
快速应用开发
SiLabs 将快速扩张的概念应用于应用软件开发。除了用于定制开发的板卡支持包、驱动程序、库和头文件外,该公司还提供了在 Simplicity Studio 开发环境中捆绑的几个示例应用,以及可从 SiLabs 的 GitHub资源库中获得的其他项目。事实上,开发者可将捆绑的温度应用样例作为切入点,探索传感器应用的开发。该样例使用 EFR32BG22 SoC的内部温度传感器作为数据源。
该温度应用围绕标准的蓝牙健康温度服务构建,可直接通过基于 SiLabs软件架构的通用蓝牙物联网应用演示处理流程。该应用会为系统服务、设置中断处理和回调功能的应用服务调用一系列初始化例程。完成初始化后,该应用进入一个无休止循环,等待事件发生(列表 1)。
int main(void)
{
// Initialize Silicon Labs device, system, service(s) and protocol
stack(s)。
// Note that if the kernel is present, processing task(s) will be created
by
// this call.
sl_system_init();
// Initialize the application. For example, create periodic timer(s) or
// task(s) if the kernel is present.
app_init();
#if defined(SL_CATALOG_KERNEL_PRESENT)
// Start the kernel. Task(s) created in app_init() will start running.
sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
while (1) {
// Do not remove this call: Silicon Labs components process action
routine
// must be called from the super loop.
sl_system_process_action();
// Application process.
app_process_action();
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
// Let the CPU go to sleep if the system allows it.
sl_power_manager_sleep();
#endif
}
#endif // SL_CATALOG_KERNEL_PRESENT
}
列表 1:SiLabs 的蓝牙样例应用使用通用执行框架,其中无限循环允许回调功能和事件处理程序在初始化后处理系统和应用行为。(代码来源:Silicon Labs)
在该应用中,当初始化过程中设置的定时器进行倒计时时,一个相关的回调例程就会进行温度测量。开发人员在构建应用并点亮威廉希尔官方网站 板后,可以使用 SiLabs EFRConnect 应用——一种通用型蓝牙移动应用,可与所有 Silicon Labs蓝牙套件和设备一起使用。除了提供定制应用的框架外,该应用还通过提供一个与蓝牙服务相关的支持特性视图来协助开发,例如本例应用中使用的蓝牙健康温度计服务(图 4)。
在 Simplicity Studio 中,开发人员可以导入一些不同的蓝牙应用实例,展示各种使用场景,包括单独或组合使用 Qwiic 或 mikroBUS板的设计。例如,样例应用演示了标准蓝牙心率 (HR) 脉搏血氧仪 (pO2) 服务与 MikroElektronika 的 MIKROE-4037 心率 2Click mikroBUS 板结合使用,其中包含 Maxim Integrated 的 MAX86161 生物传感器。MAX86161提供了一个完整的低功耗子系统,能够为通过其 I2C 接口连接的主机处理器提供准确的心率和 SpO2 测量值。(关于 MAX86161的详细使用信息,参见《构建真正的无线健身耳穿戴设备 — 第 1 部分:心率和 SpO2 测量》)。
由于需要另外的驱动器和比温度应用更苛刻的处理算法,该应用展示了更复杂的物联网设备软件应用架构(图 5)。
与上文提到的温度应用一样,这个应用依赖一系列初始化例程来设置系统和应用服务。在温度应用中,例程 app_process_action 为空,本应用在app_process_action 中增加了对例程 hrm_loop 的调用。这将导致在每次穿过列表 1 中所示的顶层无限循环时调用hrm_loop。此外,采用软件定时器定期更新 HR 和 SpO2 数据。
hrm_loop 例程反过来调用maxm86161_hrm_process,它从一个由辅助函数维护的队列中提取样本,并将其传递至样本处理例程。这反过来又调用一对例程:maxm86161_hrm_frame_process和maxm86161_hrm_spo2_frame_process,它们分别执行算法来验证和生成 HR 和 SpO2 结果。开发人员可以使用上文提到的 EFR Connect 应用查看结果和其他服务特征。
另一个软件应用样例显示了开发者如何在扩展其硬件平台时基于复杂的应用进行开发,如这里的 HR/SpO2 应用。使用 BGM220-EK4314AExplorer 套件板和 SiLabs 软件生态系统,围绕现有的软硬件进行构建是相对简单的。SiLabs 通过一个样例应用演示了这种方法,该应用在上述HR/SpO2 应用的硬件/软件平台上增加了 OLED 显示屏。本例中,SparkFun 的 OLED 显示屏 Qwiic 扩展板 (LCD-14532)与该板的 Qwiic 连接器连接,而 MikroElektronika Heart Rate 2 Click 扩展板来自之前的 HR/SpO2 样例应用中(图 6)。
除了为 OLED 板增加一个驱动程序和支持服务外,该 HR/SpO2 应用的扩展版本的软件应用基本保持不变。前面提到的 HR/SpO2应用的软件定时器增加了对函数 hrm_update_display 的调用,显示 HR 和 SpO2 数据(列表 2)。
除了为 OLED 板增加一个驱动程序和支持服务外,该 HR/SpO2 应用的扩展版本的软件应用基本保持不变。前面提到的 HR/SpO2应用的软件定时器增加了对函数 hrm_update_display 的调用,显示 HR 和 SpO2 数据(列表 2)。
/* Software Timer event */
case sl_bt_evt_system_soft_timer_id:
/* Check which software timer handle is in question */
if (evt-》data.evt_system_soft_timer.handle == HEART_RATE_TIMER) {
heart_rate_send_new_data(connection_handle);
break;
}
if (evt-》data.evt_system_soft_timer.handle == PULSE_OXIMETER_TIMER) {
pulse_oximeter_send_new_data(connection_handle);
break;
}
if (evt-》data.evt_system_soft_timer.handle == DISPLAY_TIMER) {
hrm_update_display();
break;
}
break;
列表 2:使用该套件和软件生态系统,开发者通过连接显示屏并在向现有应用的软件定时器处理程序中添加一个函数调用 (hrm_update_display)之后进行很小的软件改动,即可为现有的 HR/SpO2 应用添加显示功能。(代码来源:Silicon Labs)
这种可扩展硬件和软件方法使开发人员能够快速构建物联网的工作应用。由于硬件和软件都易于添加或删除,开发人员可以更轻松地探索新的设计方案并评估替代性配置。
结论
电池供电型蓝牙物联网设备是流行应用的核心,是满足市场对更多功能和更长工作寿命的持续需求的关键推动力。对于开发者来说,要有效地满足这些相互冲突的需求,就必须有能力迅速探索新的设计并评估替代性设计概念。使用Silicon Labs 的开发套件和相关软件,开发者可以快速构建原型,根据需要添加和删除硬件,以满足特定的应用要求。
全部0条评论
快来发表一下你的评论吧 !