0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何快速而经济高效地将蓝牙 5.3 添加至边缘物联网设计

海阔天空的专栏 来源:Jens Wallmann 作者:Jens Wallmann 2024-01-01 17:39 次阅读

作者:Jens Wallmann

投稿人:DigiKey 欧洲编辑

激烈的竞争给物联网 (IoT) 设备开发商带来了压力,他们必须迅速推出新的创新产品,同时还要降低成本,确保稳定、低功耗、安全的通信。传统的智能物联网终端节点包括用于边缘处理的微控制器单元 (MCU) 和用于连接的无线集成电路。如果设计团队缺乏开发有效解决方案必需的射频 (RF) 技能,就会出现问题。

为了按时完成和认证无线物联网设计,并将其投入量产,开发人员必须提高开发过程的效率。提高开发过程效率的一种方法是使用配备集成低功耗蓝牙 (BLE) 无线接口的低功耗 MCU。

本文介绍了来自 [STMicroelectronics] 的超低功耗 [STM32WBA52]MCU 系列,并展示了开发人员如何使用 BLE 评估板、开发工具和应用示例,快速完成和运行 BLE 5.3 无线设计。此外,本文还简要介绍了编程和 MCU 布线。

高安全级别的节能无线 MCU

STM32WBA52 MCU 系列已通过 BLE 5.3 认证,这是一种经济高效的解决方案,可帮助新手开发人员快速为设备添加无线通信功能。这些微控制器基于时钟频率为 100 MHz 的 [Arm®] Cortex®-M33 内核和 TrustZone 技术,具有高安全·,可保护数据和知识产权 (IP),防止黑客攻击和设备克隆。

[STM32WBA52CEU6]无线 MCU 搭载 512 KB 闪存和 96 KB 静态 RAM (SRAM),[STM32WBA52CGU6]型号则搭载 1 MB 闪存和 128 KB SRAM。图 1 显示了 48 UFQFN 封装中集成电路的功能范围。此外,多达 20 个电容式触摸通道可支持密封设备的操作(无需机械按键)。

STMicroelectronics STM32WBA52 的功能框图图 1:STM32WBA52 的功能框图显示了集成 BLE 5.3 无线电、闪存和 SRAM 以及安全支持。(图片来源:STMicroelectronics)

丰富的 STM32Cube 生态系统可以支持 BLE 应用的实现和编程。该生态系统包括 STM32CubeIDE 开发环境以及各种工具,例如 STM32CubeMX 外设配置器和代码生成器、STM32CubeMonitorRF 性能测试器,以及用于人工智能 (AI) 的 STM32Cube.AI 桌面版本和云版本。匹配的评估板 [NUCLEO-WBA52CG]可简化原型设计,并提供大量 BLE 实例应用程序和免费源代码,以加速验证。

设备和数据安全

STM32WBA52 产品系列达到了物联网安全标准平台安全架构 (PSA) 认证等级 3 和物联网平台安全评估标准保证等级 3 (SESIP3)。基于安全隔离、内存保护、篡改保护的 PSA 安全认证计划,以及采用 Arm TrustZone 架构的 MCU Cortex-M33,都可以增强网络保护。适用于 Arm Cortex-M 的可信固件 (TF-M) 符合行业标准 PSA 认证安全框架,具有 PSA 不可变信任根 (RoT),包括安全启动和安全固件更新 [(X-CUBE-SBSFU])、加密、安全存储和运行时验证。

集成无线电最大限度地降低物料成本

集成的超低功耗无线电模块可提供 +10 dBm(分贝数基准为 1 mW)的射频输出功率。该模块可实现短距离 (BLE 5.3) 和长距离 (Long Range) 可靠通信,数据传输速率高达 2 Mbps。在进行无线电通信时,深度待机低功耗模式可以降低总耗电量。STM32WBA MCU 可同时支持最多 20 个连接。

该无线电模块的电气性能特征:

  • 支持 BLE 5.3 的 2.4 GHz 射频收发器
  • 接收灵敏度:-96 dBm (1 Mbps BLE)
  • 可编程输出功率,最高 +10 dBm,步长为 1 dB
  • 集成平衡不平衡转换器

由于高效的能源管理,电池体积更小

STM32WBA52 MCU 采用多项节能技术,包括 STMicroelectronics 的低功耗直接内存访问 (LPDMA),以及具有快速唤醒时间的灵活省电状态。这些特性组合在一起,可将 MCU 功耗降低多达 90%,从而显著缩小电池体积或延长电池续航时间。

FlexPowerControl 的电气性能特性:

  • 1.71 至 3.6 V 电源
  • 140 nA 待机模式(16 个唤醒引脚)
  • 200 nA 待机模式,实时时钟 (RTC) 运行
  • 2.4 μA 待机模式,64 KB SRAM
  • 16.3 μA 停止模式,64 KB SRAM
  • 45 μA/MHz 运行模式,电压 3.3 V
  • 无线电:Rx 7.4 mA/Tx,0 dBm,10.6 mA

此外,蓝牙 5.3 在低占空比和高占空比之间的切换速度更快,因而比先前版本的能效更高。

蓝牙堆栈架构和数据包

STM32WBA52 中的单核 Arm Cortex-M33 MCU 专门用于应用固件开发,包括 BLE 堆栈(控制器和主机)上的配置文件和服务。MCU 处理从最低物理层 (PHY) 上的集成射频模块到通用属性配置文件 (GATT) 和通用访问配置文件 (GAP) 的数据流(图 2)。GAP 定义和管理广播和连接,GATT 则定义和管理进出数据交换。

MCU 处理从无线电 PHY 到 GATT 和 GAP 的数据流图片图 2:MCU 处理从无线电 PHY 到 GATT 和 GAP 的数据流。(图片来源:STMicroelectronics)

BLE 发送的数据包被定义为一个位序列的固定帧结构。用户数据区的长度在 27 到 251 个字节之间动态变化。

BLE 应用实例

在线百科全书 [STMicro-Wiki]中有关 STM32WBA MCU 的部分包含多个不同蓝牙角色的应用实例,包括:

  • 广播:BLE_Beacon
  • 传感器:BLE_HealthThermometer、BLE_HeartRate
  • 网桥:BLE_SerialCom
  • 路由器:BLE_p2pRouter
  • 数据:BLE_DataThroughput、BLE_p2pServer 和 Multi Slave BLE_p2pClient
  • 射频监控器:BLE_TransparentMode
  • 固件空中升级:BLE_Fuota

设备设计人员和程序员可根据自己的 BLE 项目,将相应 GitHub 项目目录中已编译的二进制文件烧录到 NUCLEO 开发板上,然后启动与智能手机或台式电脑的蓝牙连接。必需的编程器软件 [STM32CubeProg]让用户能够通过调试接口和引导程序接口,对设备内存进行读取、写入和验证。

运行 BLE 实例“健康温度计传感器”

健康温度计规范 (HTP) 是蓝牙技术联盟 (SIG) 制定的基于 GAP 的低功耗规范。其将健康温度计收集器和健康温度计传感器结合在一起,在不同应用中进行连接和交换数据(图 3)。

[NUCLEO 开发板与智能手机之间的 BLE 通信示意图(点击放大)]图 3:作为传感器/服务器的 NUCLEO 开发板与作为收集器/客户端的智能手机之间的 BLE 通信。(图片来源:STMicroelectronics)

健康温度计传感器:

  • 测量温度,并通过健康温度计服务公布数据
  • 包含远程设备要识别的设备信息服务
  • 作为 GATT 服务器

健康温度计收集器:

  • 访问健康温度计传感器提供的信息,并将其显示给最终用户,或者存储在非易失性存储器中,以便日后分析
  • 作为 GATT 客户端

将健康温度计[二进制文件]烧录到 NUCLEO 的 MCU 上之后,开发人员需要按照以下步骤运行 BLE 应用实例:

使用智能手机应用程序

  1. 在智能手机上安装 [ST BLE 工具箱]。该应用程序用于与 ST BLE 设备交互以及对其进行调试。
  2. 为已烧录健康温度计应用程序的 STM32WBA NUCLEO 开发板通电。
  3. 打开智能手机蓝牙 (BT),在应用程序中扫描可用的蓝牙设备。选择健康温度计并连接。

使用网络浏览器界面

  1. 确保浏览器的兼容性:
    • 在台式电脑上:Chrome、Edge 或 Opera
    • 在智能手机设备上:安卓版 Chrome 浏览器
  2. 为已烧录健康温度计应用程序的 STM32WBA NUCLEO 开发板通电。
  3. 在电脑上激活蓝牙。
  4. 在浏览器中打开网页 [https://applible.github.io/Web_Bluetooth_App_WBA/]。
  5. 点击网页顶部的连接按钮,然后在设备列表中选择 HT_xx,点击配对。该设备现已连接。
  6. 点击健康温度计以显示界面。

表 1 显示了健康温度计传感器的服务结构。128 位长度的全局唯一标识符 (UUID) 可区分各个特征和服务。

| | 服务 | 特征 | 属性 | UUID | 大小 |
| ---------------- | ------------------ | ------------------ | -------- | ------ |
| 健康温度计服务 | | | 0X1809 | |
| | 温度测量 | 指示 | 0x2A1C | 13 |
| | 温度类型 | 读取 | 0x2A1D | 1 |
| | 中间温度 | 通知 | 0x2A1E | 13 |
| | 测量间隔 | 读取、写入、指示 | 0x2A21 | 2 |
| 设备信息服务 | | | 0X180A | |
| | 制造商名称字符串 | 读取 | 0x2A29 | 32 |
| | 型号字符串 | 读取 | 0x2A24 | 32 |
| | 系统 ID | 读取 | 0x2A23 | 8 |

表 1:“健康温度计传感器”GAP 的 GATT 服务及其 UUID。(图片来源:STMicroelectronics)

来自 [GitHub]的以下 JavaScript 序列显示了网络浏览器界面如何筛选不同的 GATT 数据吞吐量特征(清单 1)。

复制
[...]

// Filtering the different datathroughput characteristics
  props.allCharacteristics.map(element = > {
    switch (element.characteristic.uuid) {
      case"00002a1c-0000-1000-8000-00805f9b34fb":
        IndicateCharacteristic= element; // Temperature Measurement (TEMM)
        IndicateCharacteristic.characteristic.startNotifications();
        IndicateCharacteristic.characteristic.oncharacteristicvaluechanged=
        temperatureMeasurement;
        break;
      case"00002a1d-0000-1000-8000-00805f9b34fb":
        ReadCharacteristic= element; // Temperature Type
        readTemperatureType();
        break;
      case"00002a1e-0000-1000-8000-00805f9b34fb":
        NotifyCharacteristic= element; //Immediate Temperature
        NotifyCharacteristic.characteristic.startNotifications();
        NotifyCharacteristic.characteristic.oncharacteristicvaluechanged= notifHandler;
        break; 
      case"00002a21-0000-1000-8000-00805f9b34fb":
        ReadWriteIndicateCharacteristic= element; // Measurement Interval
        readMeasurementInterval();
        break;
      default:
        console.log("# No characteristics found..");
    }
  });

[...]

清单 1:此 JavaScript 序列可筛选表 1 中的不同 GATT 数据吞吐量特征。(清单来源:GitHub、STMicroelectronics)

跟踪 BLE 堆栈进程

NUCLEO-WBA52CG 嵌入了 ST-LINK/V3 在线调试器和编程器,支持 STM32 虚拟 COM 端口驱动程序,可通过串行接口与 PC 通信。任何软件终端都可以打开该串行通信端口,显示由 APP_DBG_MSG 函数在代码中生成的文本短消息。

项目内的跟踪需要在 app_conf.h 文件中启用

#define CFG_DEBUG_APP_TRACE (1)

另外,智能手机应用程序“SE BLE Toolbox”在<应用程序日志>选项卡上提供了跟踪功能。

BLE 5.3 应用程序编程

为了对 STM32WBA52 MCU 进行编程,STM 推出了由硬件抽象层 (HAL)、低层应用程序编程接口 (API)、CMSIS、文件系统、RTOS、BLE/802.15.4、线程和 Zigbee 堆栈组成的 [STM32CubeWBA 软件包],以及在 STMicroelectronics 电路板上运行的实例。

每个 [NUCLEO-WBA52CG BLE 应用程序实例]都包含适用于 IAR Embedded Workbench for Arm (EWARM)、Keil MDK-ARM 和 STM32CubeIDE 等所有三种开发环境 (IDE) 的项目结构设置。

在健康温度计实例中,只有项目目录树(图 4 左侧框架)中的特定文件才会生成 GATT 服务。表 1 中的“健康温度计服务”(hts) 和“设备信息服务”(dis) 这两个例程并行运行(图 4 右下方)。

[程序员可以在框架代码文件中添加自己的 GATT 内容的示意图(点击放大)]图 4:程序员可以在框架代码文件(左)中添加自己的 GATT 内容;这些文件会生成 GATT 服务(右)。(图片来源:STMicroelectronics)

程序员可将源代码用于自己的项目,并在标记 USER CODE BEGIN/USER CODE END 的区域内进行扩展,添加他们的 GATT 内容(清单 2)。文件 hts.c 中的初始化序列会生成 GATT 特性温度测量 (TEMM),其 UUID 为 0x2A1C。

复制
[...]
 void HTS_Init(void)
 {
 [...]

  /* TEMM, Temperature Measurement */
  
  uuid.Char_UUID_16 = 0x2a1c;
  ret =aci_gatt_add_char(HTS_Context.HtsSvcHdle,
                          UUID_TYPE_16,
                          (Char_UUID_t *) &uuid,
                          SizeTemm,
                          CHAR_PROP_INDICATE,
                          ATTR_PERMISSION_NONE,
                          GATT_DONT_NOTIFY_EVENTS,
                          0x10,
                          CHAR_VALUE_LEN_VARIABLE,
                          &(HTS_Context.TemmCharHdle));
  if (ret != BLE_STATUS_SUCCESS)
  {
    APP_DBG_MSG("  Fail   : aci_gatt_add_char command  : TEMM, error code: 0x%2Xn", ret);
  }
  else
  {
    APP_DBG_MSG("  Success: aci_gatt_add_char command  : TEMMn");
  }

  /* USER CODE BEGIN SVCCTL_InitService2Char1 */

  /* USER CODE END SVCCTL_InitService2Char1 */

 [...]
 }
[...]

清单 2:文件 hts.c 中的初始化序列会生成 GATT 特性 TEMM。(图片来源:GitHub、STMicroelectronics)

外部元器件要求

STM32WBA52 无线 MCU 只需少量外部元器件即可实现基本的蓝牙功能操作。这些元器件包括用于提供电压的电容器、晶体振荡器、带阻抗匹配的印刷电路板天线,以及谐波滤波器(图 5)。

[STMicroelectronics STM32WBA52 射频终端的示意图(点击放大)]图 5:为实现蓝牙功能,STM32WBA52 的射频终端连接到阻抗匹配网络、谐波滤波器和天线。(图片来源:STMicroelectronics)

总结

无线物联网设备开发人员必须缩短设计周期并降低成本,才能在快速发展的市场中竞争。然而,射频设计非常具有挑战性。STM32WBA52 MCU 集成 BLE 5.3 接口,使开发人员能够经济高效地快速将产品推向市场。预编程的 BLE 堆栈和多个 BLE 应用实例为定制项目提供了编程模板,可轻松插入 GATT 内容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343622
  • 蓝牙
    +关注

    关注

    112

    文章

    5428

    浏览量

    165651
  • 物联网
    +关注

    关注

    2869

    文章

    41622

    浏览量

    358378
  • 无线电
    +关注

    关注

    58

    文章

    2070

    浏览量

    115095
  • BLE
    BLE
    +关注

    关注

    12

    文章

    608

    浏览量

    58836
收藏 人收藏

    评论

    相关推荐

    联网将为PLC市场带来新机遇

    复苏疲软的影响,PLC的市场规模呈急剧下滑的趋势。联网发展指导意见相关文件于今年正式出台,受联网及智能电网的带动,PLC行业
    发表于 01-14 18:34

    蓝牙4.2版本与联网世界

    Smart更智能、更快速,成为了联网理想的无线技术。 *联网世界:蓝牙把一切连接起来*万
    发表于 01-29 15:18

    联网边缘的智能视频分析技术

    ,使用节点分析技术和对数成像器可增强联网中的视频分析应用。智能边缘通过处理基于预期视觉事件的数据,可迅速地测量数据转换为适当的动作,不必向云服务器传输任何数据,或传输少量数据。对视
    发表于 10-17 10:34

    联网接下来是什么?

    应用所依赖的数据结果,粗略测量根本无法支持。联网系统节点和云之间分区云技术支持采用扩展的多个信号链,包括分析功能和大数据。联网应用主要是需要在
    发表于 10-24 10:45

    成功的联网系统需要考虑的几大关键元素

    赖的数据结果,粗略测量根本无法支持。联网系统节点和云之间分区云技术支持采用扩展的多个信号链,包括分析功能和大数据。联网应用主要是需要在边缘
    发表于 10-29 17:15

    工业联网检测和测量:边缘节点

    ,2015年。5 Jason Stamper,“联网分析能力驱动网络边缘的原因”。451 Research,2015年。6 Steve
    发表于 11-01 11:30

    联网无处不在取决于Wi-Fi和蓝牙

    相对较高的功耗,约为300 mA,蓝牙为3 mA。考虑到联网设备在短时间内主动通信,空闲功率也很重要。当
    发表于 12-03 11:45

    联网优势和联网边缘

    钱。这个快速行动的时间只是联网边缘计算可以提供的价值的一个例子。为了支持其他IoT应用程序,Edge具有一系列特性,使其具有价值。IoT边缘
    发表于 12-19 17:44

    视觉联网方案的进展如何?

    联网(IoT)涉及大量的边缘设备,需要由FOG节点将处理后的数据进行聚合,进而发送到云/数据中心,然后从云/数据中心再发送最终的指令经由FOG到
    发表于 08-07 08:42

    边缘计算对嵌入式系统实现联网应用有什么影响?

    边缘计算对嵌入式系统实现联网应用的影响,究竟有多大?
    发表于 04-01 11:49

    联网市场规模扩大对无线模组有哪些影响

    全球联网模组出货量为3.1片,预计到2023年增长15亿片,年均复合增长率为45%。在连接数保持高复合增速的情况下,无线模组将是
    发表于 02-02 17:08

    什么是工业联网(IIOT)?它与边缘计算有什么关系?

    工业联网(IIoT)有哪些价值?边缘计算是什么意思?边缘计算有什么作用?
    发表于 06-30 06:26

    快速发展的联网产业链

    快速发展的联网产业链,随着未来中国联网产业规模的不断壮大,以及应用领域的不断拓展,我国正处于
    发表于 07-27 07:00

    边缘智能市场要素:海量需求,联网切分

    容易。 联网对海量数据进行快速处理和分析,边缘智能使计算服务更接近最终用户或数据源,如联网
    发表于 08-23 15:42

    基于飞腾派的边缘联网

    等功能,为智慧教室提供更加智能和高效的服务。边缘联网关不仅仅只是应用在智慧教室场景,而是各种需要边缘计算盒子的
    发表于 09-21 16:50