这次评测的完整计划有四项任务:
1. 搭建工具链,单独使用 B-WBA5M-WPAN 完成 LED 点灯;2. 基于 Cube 包中的蓝牙例程,快速实现 **BLE 数据上报;3. 与 STM32U3C5 载板"合体":U3C5 的 ADC 采集 + I2C 读取电源芯片电压电流,经 B-WBA5M-WPAN 通过 BLE 上报;4. 选做:PC 上位机对 B-WBA5M-WPAN / U3C5 的双向固件更新。
【图1-1:B-WBA5M-WPAN 包装与全家福(待补)】
【图1-2:板卡正面/背面特写(待补)】
B-WBA5M-WPAN 和常见的 Nucleo/DK 开发板画风很不一样——它是一块M.2形态的蓝牙模块评估板,ST给到的板卡代号是MB2131,尺寸与一块 M.2 2280 SSD 相仿。板上一半是 STM32WBA5MMG 模块和射频前端,一半是传感器与接口区,边上是**金手指——也就是 M.2 KEY-E 连接器(丝印 CN2)。
这个形态决定了它的玩法和普通开发板不同:
- 单板插 USB-C 供电就能跑(供电与调试走 CN3);- 也能像无线网卡一样,**插到 M.2 插槽的载板上**(比如本次评测配套的 STM32U3C5 载板 MB2222),作为"女儿板"提供 BLE 连接能力——这正是任务 3 的玩法。
官方 Wiki(开箱演示与烧录教程):`https://wiki.st.com/stm32mcu/wiki/STM32StepByStep:STM32WBA5M_Discovery_Kit_Out_Of_Box_Demonstration`
| 项目 | 参数 ||---|---|| 主控 | **STM32WBA5MMG**(STM32WBA5 系列) || 内核 | Cortex-M33 @ 100 MHz(TrustZone 可选) || Flash / RAM | 1 MB Flash / 128 KB RAM(链接脚本实测:应用区 1008 KB + 16 KB NVM) || 无线 | 2.4 GHz 多协议:Bluetooth LE / Thread / Zigbee(Cube 包内含三类例程) || 模块封装 | 预认证模组,U.FL 外接天线座 + 板载天线焊桥可选 |
【图1-3:STM32WBA5MMG 模块区特写(待补)】
2.2 板载外设盘点(对照 mb2131 原理图逐一核对过)
| 资源 | 位置/引脚 | 说明 ||---|---|---|| 用户 LED **LD1** | **PA1**,低电平点亮 | 全板仅 1 个 LED || 用户按键 **B2** | **PC13**,下拉输入、按下为高 | 与 BSP `BSP_PB_Init()` 一致 || 调试口 **CN3** | STDC14 | 接 ST-LINK V3,SWD + VCP 串口 || VCP 串口 | **USART1:TX=PB12 / RX=PA8**(AF7) | 调试 trace 输出口 || M.2 连接器 **CN2** | KEY-E 金手指 | 引出 UART(USART2)、I2S/PCM、SAI、SPI3、SDIO、I2C、LED 等信号 || 板间 UART | **USART2:TX=PB15 / RX=PB2**(AF3) → M.2 pin22 / pin32 | 任务 3 的关键通道 || 温湿度传感器 | **SHT40AD1B**(I2C) | ENV 例程数据源 || 六轴 IMU | **ISM330DHCX**(I2C) | 加速度 + 陀螺仪 || 射频天线 | U.FL 座 + 焊桥切换 | 外接天线更稳 |
【图1-4:传感器区特写(待补)】
> **划重点**:这块板子的"板载 LED"只有 LD1 一个,且 M.2 金手指上还预留了 LED_1#/LED_2# 两路(pin6/pin16),设计上是给载板扩展用的。M.2 上的 USART2(pin22/pin32)+ I2C(pin59/60)是两板互联的主通道,评测第三篇会大量用到。
2.3 配套载板 MB2222(STM32U3C5)
本次评测同时拿到了配套的MB2222开发板,主控STM32U3C5ZIT6Q(超低功耗 U3 系列),板载ST-LINK-V3EC、Arduino/Morpho 排针、USB、M.2 KEY-E 插座——B-WBA5M-WPAN 直接插上去就"合体"成一套"U3C5 采集 + WBA5M 上报"的系统。这部分详见第三篇。
固件包中与本板相关的工程:
```STM32Cube_FW_WBA_V1.9.0/Projects/B-WBA5M-WPAN/├── Applications/│ ├── BLE/ # BLE_HR_P2PServer、BLE_Sensor(ST BLE Sensor 演示)│ ├── Thread/ # Thread 例程│ └── Zigbee/ # Zigbee 例程├── Templates/ # TrustZone 禁用/使能 最小模板(点灯从这里开始)└── Templates_LL/```
3.2 工具链验证:命令行也能构建
除了图形界面,我额外验证了 **headless 命令行构建**(CI 友好),两个方案都跑通了:
**方案 A:CubeIDE headless 构建(与 GUI 完全一致的工程)**
```bash/Applications/STM32CubeIDE.app/Contents/MacOS/STM32CubeIDE \ --launcher.suppressErrors -nosplash \ -application org.eclipse.cdt.managedbuilder.core.headlessbuild \ -data /tmp/ws \ -import <工程目录>/STM32CubeIDE \ -cleanBuild BLE_Sensor# 结果:Build Finished. 0 errors, 0 warnings```
**方案 B:裸 Makefile(v1 点灯固件采用,不依赖 Eclipse)**
```bashcd STM32Cube_FW_WBA_V1.9.0/Projects/B-WBA5M-WPAN/Applications/GPIO/GPIO_Blinkmake GCC_PATH=<arm-none-eabi-gcc 所在 bin 目录> all# 产物 build/GPIO_Blink.{elf,bin,hex}```
> **踩坑提醒**:ST 的 CubeIDE 工程是**逐文件 `<link>` 引用**源文件的。往 `Core/Src` 里新加 `.c` 文件后,CubeIDE **不会**自动收录——必须在 `.project` 里补一条 `<link>` 条目(或在 IDE 里手动 Add/Remove files),否则链接期报 `undefined reference`。这个坑我们在第二篇的二次开发里真实踩到了,详见 2.x 节。
3.3 烧录方法
ST-LINK V3 接 CN3,板卡 USB-C 供电:
```bash# 命令行烧录(以任意固件为例),地址 0x08000000STM32_Programmer_CLI -c port=SWD -w xxx.bin 0x08000000 -v -rst```
烧完按 RESET 或重新上电生效。蓝牙广播名为 **`WBA5M_XX`**(XX 为蓝牙地址尾字节的十六进制),手机 nRF Connect 可以直接看到。
【图1-6:CubeProgrammer 烧录截图(待补)】
---
四、任务 1 实测:LED 点灯(含按键交互)
4.1 实现思路
评测计划要求"**单独使用** B-WBA5M-WPAN 完成点灯",所以我没有在蓝牙例程上叠加,而是基于 `Templates/TrustZoneDisabled`(TZEN=0、100 MHz 最小系统)做了一个**独立的最小工程** `GPIO_Blink`:
- 全部改动都放在模板 `main.c` 的 **USER CODE 区**内,CubeMX 再生成不会被冲掉;- 引脚极性均以 BSP 源码为准:`BSP_LED_On()` 写 `GPIO_PIN_RESET` → **LD1 低电平点亮**;`BSP_PB_Init()` 用 `GPIO_PULLDOWN` → **B2 按下为高**。
4.2 关键代码
```c/* USER CODE BEGIN 3 —— LD1 慢闪;按住 B2 快闪 */HAL_GPIO_WritePin(GPIOA, LD1_PIN, GPIO_PIN_RESET); /* 亮(低有效) */HAL_Delay(HAL_GPIO_ReadPin(GPIOC, B2_PIN) == GPIO_PIN_SET ? LED_BLINK_FAST_MS /*100ms*/ : LED_BLINK_SLOW_MS /*500ms*/);HAL_GPIO_WritePin(GPIOA, LD1_PIN, GPIO_PIN_SET); /* 灭 */HAL_Delay(...); /* 同上 *//* USER CODE END 3 */```
构建结果:`text 4928 B / data 12 B / bss 4132 B`——妥妥的最小系统体量,也说明工具链(cortex-m33 + 硬浮点 + nano.specs)配置正确。
4.3 实测现象
| 步骤 | 操作 | 预期 | 实测 ||---|---|---|---|| 1 | 烧录 `WBA5M_v1.0.0_LED_Blink.bin`,复位 | — | 【待补】 || 2 | 上电静置 | LD1 以 500ms 周期闪烁 | 【待补】 || 3 | 按住 B2 | 切换为 100ms 快闪 | 【待补】 || 4 | 松开 B2 | 恢复慢闪 | 【待补】 |
【图1-7:点灯效果 GIF/视频截图(待补)】
> **本章结论**:工具链搭建 → 构建 → 烧录 → 运行的完整链路验证通过,最小系统工作正常。任务 1 达成。
**下篇预告**:跑通官方 BLE_Sensor 例程,移植 Sensor Hub 框架,自定义 `TEMP_MULTI_C` 多温度源特征,并用 PC 上位机(Python/Web Bluetooth)完成 BLE 数据上报实测。
1. 搭建工具链,单独使用 B-WBA5M-WPAN 完成 LED 点灯;2. 基于 Cube 包中的蓝牙例程,快速实现 **BLE 数据上报;3. 与 STM32U3C5 载板"合体":U3C5 的 ADC 采集 + I2C 读取电源芯片电压电流,经 B-WBA5M-WPAN 通过 BLE 上报;4. 选做:PC 上位机对 B-WBA5M-WPAN / U3C5 的双向固件更新。
本篇是系列第一篇:先把板子认识清楚、环境搭起来、灯点起来。工具链通了,后面两篇的 BLE 玩法才有的聊。
一、开箱与板卡概览
【图1-1:B-WBA5M-WPAN 包装与全家福(待补)】
【图1-2:板卡正面/背面特写(待补)】
B-WBA5M-WPAN 和常见的 Nucleo/DK 开发板画风很不一样——它是一块M.2形态的蓝牙模块评估板,ST给到的板卡代号是MB2131,尺寸与一块 M.2 2280 SSD 相仿。板上一半是 STM32WBA5MMG 模块和射频前端,一半是传感器与接口区,边上是**金手指——也就是 M.2 KEY-E 连接器(丝印 CN2)。
这个形态决定了它的玩法和普通开发板不同:
- 单板插 USB-C 供电就能跑(供电与调试走 CN3);- 也能像无线网卡一样,**插到 M.2 插槽的载板上**(比如本次评测配套的 STM32U3C5 载板 MB2222),作为"女儿板"提供 BLE 连接能力——这正是任务 3 的玩法。
官方 Wiki(开箱演示与烧录教程):`https://wiki.st.com/stm32mcu/wiki/STM32StepByStep:STM32WBA5M_Discovery_Kit_Out_Of_Box_Demonstration`
二、硬件资源详解
2.1 核心芯片| 项目 | 参数 ||---|---|| 主控 | **STM32WBA5MMG**(STM32WBA5 系列) || 内核 | Cortex-M33 @ 100 MHz(TrustZone 可选) || Flash / RAM | 1 MB Flash / 128 KB RAM(链接脚本实测:应用区 1008 KB + 16 KB NVM) || 无线 | 2.4 GHz 多协议:Bluetooth LE / Thread / Zigbee(Cube 包内含三类例程) || 模块封装 | 预认证模组,U.FL 外接天线座 + 板载天线焊桥可选 |
【图1-3:STM32WBA5MMG 模块区特写(待补)】
2.2 板载外设盘点(对照 mb2131 原理图逐一核对过)
| 资源 | 位置/引脚 | 说明 ||---|---|---|| 用户 LED **LD1** | **PA1**,低电平点亮 | 全板仅 1 个 LED || 用户按键 **B2** | **PC13**,下拉输入、按下为高 | 与 BSP `BSP_PB_Init()` 一致 || 调试口 **CN3** | STDC14 | 接 ST-LINK V3,SWD + VCP 串口 || VCP 串口 | **USART1:TX=PB12 / RX=PA8**(AF7) | 调试 trace 输出口 || M.2 连接器 **CN2** | KEY-E 金手指 | 引出 UART(USART2)、I2S/PCM、SAI、SPI3、SDIO、I2C、LED 等信号 || 板间 UART | **USART2:TX=PB15 / RX=PB2**(AF3) → M.2 pin22 / pin32 | 任务 3 的关键通道 || 温湿度传感器 | **SHT40AD1B**(I2C) | ENV 例程数据源 || 六轴 IMU | **ISM330DHCX**(I2C) | 加速度 + 陀螺仪 || 射频天线 | U.FL 座 + 焊桥切换 | 外接天线更稳 |
【图1-4:传感器区特写(待补)】
> **划重点**:这块板子的"板载 LED"只有 LD1 一个,且 M.2 金手指上还预留了 LED_1#/LED_2# 两路(pin6/pin16),设计上是给载板扩展用的。M.2 上的 USART2(pin22/pin32)+ I2C(pin59/60)是两板互联的主通道,评测第三篇会大量用到。
2.3 配套载板 MB2222(STM32U3C5)
本次评测同时拿到了配套的MB2222开发板,主控STM32U3C5ZIT6Q(超低功耗 U3 系列),板载ST-LINK-V3EC、Arduino/Morpho 排针、USB、M.2 KEY-E 插座——B-WBA5M-WPAN 直接插上去就"合体"成一套"U3C5 采集 + WBA5M 上报"的系统。这部分详见第三篇。
【图1-5:两板合体照(待补)】
三、开发环境搭建
3.1 工具清单
| 工具 | 版本 | 用途 ||---|---|---|| STM32CubeIDE | 2.1.1 | IDE / 工程构建(内置 GNU ARM gcc 14.3.rel1) || STM32Cube_FW_WBA | **V1.9.0** | 官方固件包(含 B-WBA5M-WPAN 全部例程) || STM32CubeProgrammer | — | 烧录 || ST-LINK V3 | — | 经 CN3(STDC14)连接 |固件包中与本板相关的工程:
```STM32Cube_FW_WBA_V1.9.0/Projects/B-WBA5M-WPAN/├── Applications/│ ├── BLE/ # BLE_HR_P2PServer、BLE_Sensor(ST BLE Sensor 演示)│ ├── Thread/ # Thread 例程│ └── Zigbee/ # Zigbee 例程├── Templates/ # TrustZone 禁用/使能 最小模板(点灯从这里开始)└── Templates_LL/```
3.2 工具链验证:命令行也能构建
除了图形界面,我额外验证了 **headless 命令行构建**(CI 友好),两个方案都跑通了:
**方案 A:CubeIDE headless 构建(与 GUI 完全一致的工程)**
```bash/Applications/STM32CubeIDE.app/Contents/MacOS/STM32CubeIDE \ --launcher.suppressErrors -nosplash \ -application org.eclipse.cdt.managedbuilder.core.headlessbuild \ -data /tmp/ws \ -import <工程目录>/STM32CubeIDE \ -cleanBuild BLE_Sensor# 结果:Build Finished. 0 errors, 0 warnings```
**方案 B:裸 Makefile(v1 点灯固件采用,不依赖 Eclipse)**
```bashcd STM32Cube_FW_WBA_V1.9.0/Projects/B-WBA5M-WPAN/Applications/GPIO/GPIO_Blinkmake GCC_PATH=<arm-none-eabi-gcc 所在 bin 目录> all# 产物 build/GPIO_Blink.{elf,bin,hex}```
> **踩坑提醒**:ST 的 CubeIDE 工程是**逐文件 `<link>` 引用**源文件的。往 `Core/Src` 里新加 `.c` 文件后,CubeIDE **不会**自动收录——必须在 `.project` 里补一条 `<link>` 条目(或在 IDE 里手动 Add/Remove files),否则链接期报 `undefined reference`。这个坑我们在第二篇的二次开发里真实踩到了,详见 2.x 节。
3.3 烧录方法
ST-LINK V3 接 CN3,板卡 USB-C 供电:
```bash# 命令行烧录(以任意固件为例),地址 0x08000000STM32_Programmer_CLI -c port=SWD -w xxx.bin 0x08000000 -v -rst```
烧完按 RESET 或重新上电生效。蓝牙广播名为 **`WBA5M_XX`**(XX 为蓝牙地址尾字节的十六进制),手机 nRF Connect 可以直接看到。
【图1-6:CubeProgrammer 烧录截图(待补)】
---
四、任务 1 实测:LED 点灯(含按键交互)
4.1 实现思路
评测计划要求"**单独使用** B-WBA5M-WPAN 完成点灯",所以我没有在蓝牙例程上叠加,而是基于 `Templates/TrustZoneDisabled`(TZEN=0、100 MHz 最小系统)做了一个**独立的最小工程** `GPIO_Blink`:
- 全部改动都放在模板 `main.c` 的 **USER CODE 区**内,CubeMX 再生成不会被冲掉;- 引脚极性均以 BSP 源码为准:`BSP_LED_On()` 写 `GPIO_PIN_RESET` → **LD1 低电平点亮**;`BSP_PB_Init()` 用 `GPIO_PULLDOWN` → **B2 按下为高**。
4.2 关键代码
```c/* USER CODE BEGIN 3 —— LD1 慢闪;按住 B2 快闪 */HAL_GPIO_WritePin(GPIOA, LD1_PIN, GPIO_PIN_RESET); /* 亮(低有效) */HAL_Delay(HAL_GPIO_ReadPin(GPIOC, B2_PIN) == GPIO_PIN_SET ? LED_BLINK_FAST_MS /*100ms*/ : LED_BLINK_SLOW_MS /*500ms*/);HAL_GPIO_WritePin(GPIOA, LD1_PIN, GPIO_PIN_SET); /* 灭 */HAL_Delay(...); /* 同上 *//* USER CODE END 3 */```
构建结果:`text 4928 B / data 12 B / bss 4132 B`——妥妥的最小系统体量,也说明工具链(cortex-m33 + 硬浮点 + nano.specs)配置正确。
4.3 实测现象
| 步骤 | 操作 | 预期 | 实测 ||---|---|---|---|| 1 | 烧录 `WBA5M_v1.0.0_LED_Blink.bin`,复位 | — | 【待补】 || 2 | 上电静置 | LD1 以 500ms 周期闪烁 | 【待补】 || 3 | 按住 B2 | 切换为 100ms 快闪 | 【待补】 || 4 | 松开 B2 | 恢复慢闪 | 【待补】 |
【图1-7:点灯效果 GIF/视频截图(待补)】
> **本章结论**:工具链搭建 → 构建 → 烧录 → 运行的完整链路验证通过,最小系统工作正常。任务 1 达成。
五、本章小结
- B-WBA5M-WPAN 是 M.2 形态的蓝牙模块评估板,单板可跑、插载板可"合体",玩法比传统 Nucleo 更灵活;- 板载资源不算多但都在点上:1 LED + 1 按键 + SHT40 + ISM330DHCX + STDC14 调试口 + 引脚齐全的 M.2 金手指;- CubeIDE 图形界面与命令行 headless 两条构建路线都验证可用,烧录链路通畅;- 新增源文件记得在 `.project` 补 `<link>`——ST 工程不是"放进去就编译"。**下篇预告**:跑通官方 BLE_Sensor 例程,移植 Sensor Hub 框架,自定义 `TEMP_MULTI_C` 多温度源特征,并用 PC 上位机(Python/Web Bluetooth)完成 BLE 数据上报实测。
我要赚赏金
