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

作者:jens wallmann
投稿人:digikey 欧洲编辑
激烈的竞争给物联网 (iot) 设备开发商带来了压力,他们必须迅速推出新的创新产品,同时还要降低成本,确保稳定、低功耗、安全的通信。传统的智能物联网终端节点包括用于边缘处理的微控制器单元 (mcu) 和用于连接的无线集成电路。如果设计团队缺乏开发有效解决方案必需的射频 (rf) 技能,就会出现问题。
为了按时完成和认证无线物联网设计,并将其投入量产,开发人员必须提高开发过程的效率。提高开发过程效率的一种方法是使用配备集成低功耗蓝牙 (ble) 无线接口的低功耗 mcu。
本文介绍了来自 [stmicroelectronics] 的超低功耗 [stm32wba52]mcu 系列,并展示了开发人员如何使用 ble 评估板、开发工具和应用示例,快速完成和运行 ble 5.3 无线设计。此外,本文还简要介绍了编程和 mcu 布线。
高安全级别的节能无线 mcustm32wba52 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 个电容式触摸通道可支持密封设备的操作(无需机械按键)。
图 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 sram16.3 μa 停止模式,64 kb sram45 μ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 则定义和管理进出数据交换。
图 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)。
[]图 3:作为传感器/服务器的 nucleo 开发板与作为收集器/客户端的智能手机之间的 ble 通信。(图片来源:stmicroelectronics)
健康温度计传感器:
测量温度,并通过健康温度计服务公布数据包含远程设备要识别的设备信息服务作为 gatt 服务器健康温度计收集器:
访问健康温度计传感器提供的信息,并将其显示给最终用户,或者存储在非易失性存储器中,以便日后分析作为 gatt 客户端将健康温度计[二进制文件]烧录到 nucleo 的 mcu 上之后,开发人员需要按照以下步骤运行 ble 应用实例:
使用智能手机应用程序在智能手机上安装 [st ble 工具箱]。该应用程序用于与 st ble 设备交互以及对其进行调试。为已烧录健康温度计应用程序的 stm32wba nucleo 开发板通电。打开智能手机蓝牙 (bt),在应用程序中扫描可用的蓝牙设备。选择健康温度计并连接。使用网络浏览器界面确保浏览器的兼容性: 在台式电脑上:chrome、edge 或 opera在智能手机设备上:安卓版 chrome 浏览器为已烧录健康温度计应用程序的 stm32wba nucleo 开发板通电。在电脑上激活蓝牙。在浏览器中打开网页 [https://applible.github.io/web_bluetooth_app_wba/]。点击网页顶部的连接按钮,然后在设备列表中选择 ht_xx,点击配对。该设备现已连接。点击健康温度计以显示界面。表 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) { case00002a1c-0000-1000-8000-00805f9b34fb: indicatecharacteristic= element; // temperature measurement (temm) indicatecharacteristic.characteristic.startnotifications(); indicatecharacteristic.characteristic.oncharacteristicvaluechanged= temperaturemeasurement; break; case00002a1d-0000-1000-8000-00805f9b34fb: readcharacteristic= element; // temperature type readtemperaturetype(); break; case00002a1e-0000-1000-8000-00805f9b34fb: notifycharacteristic= element; //immediate temperature notifycharacteristic.characteristic.startnotifications(); notifycharacteristic.characteristic.oncharacteristicvaluechanged= notifhandler; break; case00002a21-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 右下方)。
[]图 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)。
[]图 5:为实现蓝牙功能,stm32wba52 的射频终端连接到阻抗匹配网络、谐波滤波器和天线。(图片来源:stmicroelectronics)
总结无线物联网设备开发人员必须缩短设计周期并降低成本,才能在快速发展的市场中竞争。然而,射频设计非常具有挑战性。stm32wba52 mcu 集成 ble 5.3 接口,使开发人员能够经济高效地快速将产品推向市场。预编程的 ble 堆栈和多个 ble 应用实例为定制项目提供了编程模板,可轻松插入 gatt 内容。

公布!中国制造业皇冠上的明珠:28家传感器单项冠军企业!
EtherCAT主站开发“利器”——EC-Master软件协议栈
热水器的漏电保护插头_热水器漏电保护插头原理_热水器漏电保护插头使用方法
新冠肺炎疫情会对我国5G发展带来怎样的影响
GPU比传统CPU上运行相同的计算速度快10倍至100倍
如何快速而经济高效地将蓝牙 5.3 添加至边缘物联网设计
MOTO推出超薄便携式电源升级版P893
iPhone8发布会倒计时,已从郑州富士康打包运往美国
la76810a引脚功能及电压资料
小米小爱老师体验 让你专心学英语的多功能翻译机
专为2-4KG级单轴起飞重量打造的601-X一体机臂动力
深智云获猎云网“最佳企业服务商”奖项
浅谈物联网操作系统选择,浏览器比安卓更合适!
arduino扩展板引脚及其特性的详细说明
亚洲消费电子展在上海新国际博览中心举办 带来各种有趣的黑科技产品
服务器数据恢复-服务器硬盘黄色指示灯常亮的数据恢复案例
开关电源的布局及印制板布线原则的介绍(下)
基于单片机的串口协议网络化设计
智能制造的本质是解决不确定性
泰克为您免费升级示波器