这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【e起DIY】低功耗蓝牙温湿度计——WSL烧录蓝牙踩坑

共1条 1/1 1 跳转至

【e起DIY】低功耗蓝牙温湿度计——WSL烧录蓝牙踩坑

菜鸟
2026-06-13 15:59:45     打赏

1. 问题现象

FRDM-MCXW71 上运行 Zephyr 官方 BLE 示例:

samples/bluetooth/peripheral_ht

应用可以正常构建和烧录,但启动后 BLE 初始化失败,串口报错:

ASSERTION FAIL [err == 0] @ WEST_TOPDIR/zephyr/subsys/bluetooth/host/hci_core.c:482
        Controller unresponsive, command opcode 0xfc22 timeout with err -11

此时手机端扫描不到 BLE 设备。

2. 原因分析

FRDM-MCXW71 的 BLE 不是只烧录主核应用就能工作。

它需要两部分镜像:

· CM33 主核:运行 Zephyr BLE host/application。

· NBU CM3:运行 NXP 提供的 BLE controller firmware。

`Controller unresponsive` 表示 Zephyr Bluetooth Host 向 Controller 发送 HCI 命令后没有收到响应。因此问题不在手机扫描,也不在 GATT 服务代码,而是 NBU 侧 BLE controller 固件没有正确运行。

Zephyr 工程中已经包含 NBU 固件:

/home/actdxh/zephyrproject/modules/hal/nxp/zephyr/blobs/mcxw71/mcxw71_nbu_ble.sb3

3. 解决办法

使用 MCUXpresso Secure Provisioning Tool 给 NBU 烧录 BLE firmware。

先把 `.sb3` 文件复制到 Windows 目录:

cp "/home/actdxh/zephyrproject/modules/hal/nxp/zephyr/blobs/mcxw71/mcxw71_nbu_ble.sb3" \
   "/mnt/h/16.NXP/workspace/mcxw71_nbu_ble.sb3"

Windows 路径:

H:\16.NXP\workspace\mcxw71_nbu_ble.sb3

MCUXpresso Secure Provisioning Tool 中进入 Manufacturing Tool,选择 `Apply SB file / 应用 SB 图像`,选择上面的 `.sb3` 文件后执行烧录即可。

image.png

image.pngimage.pngimage.png

image.png

注意:

1.本次只需要烧录 SB 文件,不需要执行 `Erase all`、`Provision keys`、`Write fuses`、`Life cycle update` 等操作。

2.首先在win新建一个工作区,把板卡插入的时候会多出来usb和uart,记住要选择uart。然后源可执行文件不需要填,微控制器型号要选对。

3.新建后添加工具里面的制造工具,然后点是再勾选是否更新写入脚本。

4.进入工具后先自动检测串口选择板卡的串口然后测试连接(测试前要下进入isp模式),测试通过后在上面选择sb固件并开始烧录。

4. 验证结果

NBU 固件烧录完成后,重新烧录 Zephyr 官方 BLE 示例:

LinkServer flash --probe 2ZZMU5ASTTI1H --update-mode none \
  MCXW716CxxxA:FRDM-MCXW71 load \
  /home/actdxh/zephyr-frdm-mcxw71-review/build_ble_peripheral_ht/zephyr/zephyr.elf

串口输出正常:

HCI transport: BT NXP
Bluetooth initialized
no temperature device; using simulated data
Advertising successfully started

手机端可以扫描并连接 `Zephyr Health Thermometer`,开启 indication 后串口可以看到:

Connected
temperature is 21C
Indication success
Indication complete


说明 BLE Host 与 NBU Controller 通信恢复正常。

5. 其他注意点

WSL 下尝试使用 `blhost` 烧录 NBU 时没有成功,`nxpdevscan` 只能看到 MCU-Link,不能看到目标 ROM bootloader:

MCU-LINK NXP TRACE - NXP Semiconductors


因此本次改用 Windows 版 MCUXpresso Secure Provisioning Tool 完成 NBU `.sb3` 烧录。

另外,LinkServer 只用于烧录主核 CM33 应用。设备配置中只暴露 `cm33`,不能替代 `.sb3` 方式烧录 NBU 固件。

如果 `west flash` 停在 MCU-Link firmware check,可以直接使用:

LinkServer flash --probe 2ZZMU5ASTTI1H --update-mode none \
  MCXW716CxxxA:FRDM-MCXW71 load <zephyr.elf>


6. 后续应用验证

NBU 固件烧录完成后,自定义 DHT11 + BLE 温湿度计应用也可以正常运行。

设备名:

FRDM-MCXW71-TH

串口输出:

Bluetooth initialized
Advertising successfully started
DHT11 + BLE Test Start
Temperature: 28.0°C, Humidity: 68.6%RH

温度使用标准 Health Thermometer Service,湿度使用 `Humidity (0x2A6F)` 特征。手机端可通过 nRF Connect 扫描、连接并查看数据。

7. 小结

这次问题的关键点是:FRDM-MCXW71 跑 BLE 需要主核应用和 NBU controller firmware 两部分。只烧录 Zephyr app 时,主核 BLE Host 会启动,但 NBU Controller 没有响应,于是出现 `Controller unresponsive`。

烧录 `mcxw71_nbu_ble.sb3` 后,官方 BLE demo 和自定义温湿度计应用均验证通过。

15b25b21451fdf2fe6fe1de5adbe13b1.jpg



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]