在蓝牙低功耗(BLE)物联网应用中,协处理器模式凭借 “功能拆分、高效协同” 的核心优势成为主流设计方案。意法半导体 BlueNRG 系列芯片自初代 BlueNRG-MS 起便原生支持协处理器模式,既延续了 AT 指令模式 “高内聚、低耦合” 的特点,又在灵活性、低功耗控制及交互能力上实现全面升级。本文基于 LAT1290 应用笔记(Rev 1.0),从核心定义、技术细节到实操配置,系统拆解 BlueNRG 协处理器的关键知识点,为工程师提供一站式技术参考。
资料获取:【应用笔记】LAT1290 BlueNRG系列的协处理器简介
1. 协处理器模式核心概述:定位与基础要求
1.1 核心架构逻辑
1.2 核心优势对比 AT 指令模式
| 特性 | 协处理器模式 | AT 指令模式 |
|---|---|---|
| 灵活性 | 支持自定义扩展,适配复杂场景 | 功能固定,扩展受限 |
| 功耗控制 | 支持睡眠 / 唤醒协同,续航更优 | 缺乏深度协同功耗管理 |
| 交互能力 | 支持 ACI/HCI 双指令集,通信效率更高 | 仅支持基础 AT 指令,交互维度有限 |
1.3 基础使用前提
- 硬件层面:BlueNRG 芯片需搭配带 UART 或 SPI 接口的外部处理器(MCU/MPU/PC);
- 软件层面:BlueNRG 芯片需烧录 ST 扩展版 DTM 固件(Direct Test Mode)。该固件不仅支持 RF 性能测试(发射功率、接收灵敏度、频偏、谐波等指标检测),更是协处理器模式运行的核心支撑,同时可通过 BlueNRG GUI 工具实现便捷配置与调试。
2. 软件分层架构:两种方案适配不同场景
2.1 主流架构(推荐优先选用)
- 部署逻辑:BlueNRG 芯片集成完整的 Host 层(含通用访问配置文件 GAP、通用属性配置文件 GATT、安全管理器等协议组件)与 Controller 层(链路层 LL、物理层 PHY 等),外部 MCU/MPU 仅需聚焦应用层开发;
- 交互方式:通过 ACI 指令(HCI 指令的扩展版本)实现数据通信,无需关注 BLE 协议栈细节;
- 适用场景:绝大多数物联网设备,尤其适合资源有限或需快速迭代的项目。
2.2 特殊架构(自定义 Host 层场景)
- 部署逻辑:BlueNRG 芯片仅运行 Controller 层,外部 MCU/MPU 需同时承载 Host 层协议与应用层;
- 交互方式:通过标准 HCI 指令通信;
- 启用条件:编译 DTM 固件时,需在 Preprocessor Symbols 中使能 “LL_ONLY” 宏定义;
- 适用场景:需自定义 Host 层协议的特殊需求,使用频率较低。
3. 核心技术:ACI 指令格式与协议规范
3.1 指令基础与数据包类型
| 数据包类型 | 类型标识 | 核心功能 |
|---|---|---|
| HCI 命令数据包 | 0x01 | 外部处理器向 BlueNRG 发送控制指令 |
| HCI ACL 数据包 | 0x02 | 异步无连接数据传输 |
| HCI 同步数据包 | 0x03 | 同步数据传输(如音频流) |
| HCI 事件数据包 | 0x04 | BlueNRG 反馈状态或事件(如连接成功) |
| HCI 扩展命令 | 0x81 | 自定义功能扩展指令 |
| HCI 扩展事件 | 0x82 | 自定义事件反馈 |
3.2 详细格式查询路径
如需查看完整的 ACI 指令格式细节,可按以下路径检索:
打开 BlueNRG-LP/LPS SDK → index.html → Network Coprocessor (UART, SPI mode) → Bluetooth LE stack v3.x ACI Data format → Bluetooth LE stack v3.x ACI commands data format。
掌握指令格式可大幅提升通信调试时的问题定位效率。
4. DTM 工程选型:精准匹配需求的核心指南
4.1 核心工程分类
| 工程名称 | 核心特性 | 适用场景 |
|---|---|---|
| DTM | 默认 Full Stack(完整协议栈) | 需完整 BLE 功能的复杂场景 |
| DTM_basic | 默认 Basic Stack(基础协议栈) | 功能简单的轻量化场景 |
| DTM_Updater | 仅含 DTM boot 源码 | 需自定义 boot 程序的开发场景 |
4.2 工程配置细分(按通信接口)
| 配置名称 | 通信接口 | 核心特点 |
|---|---|---|
| UART | UART | 基础 DTM 功能,无升级代码 |
| UART_WITH_UPDATER | UART | 含 DTM_Updater(启动代码)+ 完整 DTM 功能,推荐选用 |
| UART_FOR_UPDATER | UART | Flash 第一页留空(偏移 0x2000),需用户自定义升级固件 |
| SPI | SPI | 基础 DTM 功能,无升级代码 |
| SPI_WITH_UPDATER | SPI | 含 DTM_Updater(启动代码)+ 完整 DTM 功能,推荐选用 |
| SPI_FOR_UPDATER | SPI | Flash 第一页留空(偏移 0x2000),需用户自定义升级固件 |
4.3 选型建议
5. 协处理器配置实现:两种核心路径
5.1 基于 STM32CubeMX 软件包(快速适配)
- X-CUBE-BLE1C(适配 BlueNRG-MS);
- X-CUBE-BLE2(适配 BlueNRG-1/2);
- X-CUBE-BLEMGR(适配 BlueNRG 全系列)。
5.2 基于源码移植(非 STM32 / 未适配型号)
- 移植路径:BlueNRG-LP/LPS DK x.x.x → Midlewares → ST → External_micro,核心文件含 HAL 库、SimpleBlueNRG-LP_HCI;
- 适配关键:需实现 SPI / 串口初始化代码,并重新编写函数
void Hal_Write_Serial(const void* data1, const void* data2, uint16_t n_bytes1, uint16_t n_bytes2); - 参考案例:SDK 工程下 External_Micro 目录的官方示例,可直接复用核心逻辑。
6. MCU 端软件处理框架:数据交互流程解析
6.1 MCU 主动发送数据(同步超时机制)
- 应用端调用
aci_xxxx系列函数(如 BLE 连接、数据发送指令); - 函数触发
hci_send_req(),向 BlueNRG 发送数据; - MCU 进入带超时的
while(1)循环,等待接收队列hciReadPktRxQueue数据; - BlueNRG 返回数据后,通过 IO 中断触发
hci_tl_lowlevel_isr()函数,读取数据并压入队列; - 队列接收数据后,
aci_xxxx函数同步执行完成;若超时未接收,函数终止。
6.2 BlueNRG 主动发送数据(事件触发机制)
- BlueNRG 触发特定事件(如蓝牙连接成功、接收外部数据),通过 IO 口拉低通知 MCU;
- MCU 外部中断触发
hci_tl_lowlevel_isr()函数,读取数据并压入hciReadPktRxQueue队列; - 主循环函数
hci_user_evt_proc()解析队列数据; - 解析成功后触发对应
xxx_event事件(应用定义则执行自定义函数,否则执行弱定义空函数)。
7. 交互时序图:串口 / SPI 通信关键流程
7.1 串口接口交互时序(含睡眠 / 唤醒协同)
(1)MCU 主动发送 ACI 指令
- MCU 唤醒 BlueNRG 芯片;
- BlueNRG 唤醒完成,准备接收数据;
- MCU 通过串口发送数据(流控允许条件下);
- 数据发送完毕,MCU 释放 MCU_RTS;
- BlueNRG 允许进入睡眠,降低功耗。
(2)BlueNRG 主动发送数据
- BlueNRG 唤醒 MCU(通过 IO 中断);
- MCU 唤醒完成,准备接收数据;
- BlueNRG 通过串口发送数据(流控允许条件下);
- 数据发送完毕,BlueNRG 释放 MCU_CTS;
- MCU 允许进入睡眠,实现低功耗协同。
7.2 SPI 接口时序参考
8. 核心总结:BlueNRG 协处理器的核心价值
- 兼容性广:支持 BlueNRG 全系列芯片,可搭配任何带 UART/SPI 接口的 MCU、MPU 或 PC 端;
- 灵活性强:两种软件分层架构 + 多类 DTM 工程配置,适配从简单到复杂的全场景需求;
- 低功耗优:睡眠 / 唤醒协同机制,大幅延长物联网设备续航;
- 开发高效:支持 STM32CubeMX 快速配置与源码移植两种方式,降低开发门槛;
- 调试便捷:标准化 ACI 指令格式 + 清晰交互时序,便于问题定位。
BlueNRG 系列协处理器通过 “标准化协议 + 灵活配置 + 低功耗优化” 的组合,成为 BLE 物联网应用的优选方案。无论是智能家居、医疗健康还是工业物联网场景,工程师均可基于本文梳理的知识点,快速完成架构选型、固件配置与调试优化,加速产品上市周期。
237