蓝牙 SDK 示例¶
SiFli-SDK 的蓝牙(Bluetooth)示例针对特定蓝牙应用规范(Profile)、设备角色或无线通信流程提供验证起点,并非可直接用于产品的固件。应先选择覆盖产品最严苛技术要求的项目,在目标开发板上跑通未修改的示例,再逐项加入产品需求。
本文按工程任务整理 SF32LB58x 文档栏目中的经典蓝牙、BLE和 LE Audio 广播示例。URL 中的 sf32lb58x 表示文档归属,并不承诺每个示例都支持所有 SF32LB58x 开发板或其他 SF32 系列;latest 也是滚动版本。针对计划使用的 SDK 版本或提交,应查阅对应项目的“支持的平台”(Supported Platforms)一节,并严格采用其中列出的开发板名称和构建方式。如果没有明确资料能对应到目标开发板和 SDK 版本/提交,应将兼容性标记为“未确认”,不要根据 URL、相邻示例或名称相似的开发板推断。即使页面标注“全平台”,产品开发前仍应在实际 SDK 版本和板级配置下构建验证。项目页面还应作为 menuconfig 设置、测试设备和限制条件的依据。
从合适的蓝牙路径开始¶
| 产品需求 | 建议起点 | 产品集成前应验证的内容 |
|---|---|---|
| 自定义 BLE 服务或配套应用连接 | BLE 外设端 | 广播、连接、服务接口约定、重连和手机端验证 |
| 设备需要作为外设端(Peripheral)连接手机,同时作为中心端(Central)连接传感器 | BLE 中心端与外设端 | GAP 双角色并发,以及 GATT 客户端/服务器的职责划分 |
| 可靠的 BLE 数据传输 | BLE 吞吐量 或 BLE 文件传输 | 所需的数据流、连接参数和恢复行为 |
| 通过蓝牙更新固件 | 支持 OTA 的外设端 或 中心端与外设端 Pingpong OTA | 升级时的角色分工、升级中断后的恢复、分区和回滚方案 |
| 经典蓝牙串口通信或通过手机接入网络 | SPP 或 PAN | 串口 Profile 或手机网络接入方式是否符合产品需求,以及对端兼容性和重连行为 |
| 通过 UART 连接 BT/BLE 主机与控制器 | UART HCI 传输(BT/BLE) | 主机/控制器边界、UART 传输,以及目标控制器和板级配置 |
| 经典蓝牙音频或通话 | 音乐接收端、音乐发送端 或 HFP | 音频通路、时钟、缓冲、手机互操作性和功耗预算 |
| LE Audio 广播 | BAP 广播发送端 或 BAP 广播接收端 | 广播角色、音频处理链路、测试接收端或发送端,以及时序裕量 |
启动调试示例并留存证据¶
修改项目之前,应记录准确的 SDK 版本、开发板名称、配置、对端设备或应用、无线参数和预期日志。建议按以下步骤推进:
- 按与实际 SDK 版本相对应的项目页面,使用其中列出的准确开发板名称和构建方式,构建并烧录未修改的示例。若无法确认文档与 SDK 版本的对应关系,或页面未明确目标板是否受支持,应先将兼容性标记为“未确认”,再考虑移植。
- 验证示例的主要无线通信行为:发现、连接、传输、流式传输或接收。
- 在复位、断连、重连和重新上电后重复测试。
- 每次只加入一项产品专用服务、交互流程、音频通路或功耗策略。
- 在产品的组合负载下复测,包括显示、传感器、存储、音频和低功耗状态切换。
成功运行的示例只能证明其覆盖的工作流程可行;不能据此认定产品的安全策略、通信距离、延迟(latency)、功耗或互操作性已达到发布要求。
BLE 示例¶
BLE 示例适用于配套应用连接、可互操作的 GATT 服务、信标、数据传输和基于 BLE 的 OTA。应先选择与产品设备角色匹配的示例;只有产品需要标准化服务时,再叠加对应的 Profile 示例。
| 工程任务 | 官方示例 | 应先验证的内容 |
|---|---|---|
| 基本角色与服务访问 | 外设端、中心端与外设端、多连接 | 广播、扫描、连接由哪一端负责管理,以及 Central/Peripheral 角色分工 |
| 手机生态集成 | AMS、ANCS、双核 ANCS | Apple 媒体或通知集成,以及所需的手机端配对流程 |
| 标准 GATT Profile | BASC、CPPC、CSCPC、DISS、HRPC、CTS | 服务角色、GATT 特征定义,以及标准 Profile 与对端设备的互操作性 |
| 人机输入与语音对讲 | HID、BLE 对讲 | 在加入产品 UI 或语音交互前,先验证交互模型 |
| 配对和重连行为 | BLE 配对 | 绑定信息、身份管理和产品的重新配对流程 |
| 广播与发现 | iBeacon、周期广播、周期广播同步 | 所需的广播或同步行为,而不假定必须建立 GATT 连接 |
| 数据传输和 OTA | 文件传输、吞吐量、支持 OTA 的外设端、中心端与外设端 Pingpong OTA | 载荷、链路参数、更新角色、传输中断后的恢复和端到端验证 |
不能将吞吐量示例的测试结果直接当作产品数据速率。它还取决于所选 PHY、连接参数、对端行为、射频环境、主机侧(Host)活动和载荷模式。同样,ANCS 或 AMS 示例只是手机集成的基线,不能保证在所有 iOS 版本或用户授权状态下都具有相同行为。
经典蓝牙示例¶
经典蓝牙项目适用于需要 BR/EDR Profile、音频、串口式传输或通过手机接入 IP 网络的产品。开发板上的演示成功只是起点;还应针对产品实际使用的对端设备和工作负载验证互操作性。
| 工程任务 | 官方示例 | 应先验证的内容 |
|---|---|---|
| 主机/控制器传输或经典蓝牙串口 Profile | UART HCI 传输(BT/BLE)、SPP | HCI 的主机/控制器边界和 UART 传输,或 SPP 串口 Profile 的行为 |
| 音频流与媒体控制 | A2DP 多连接、A2DP 共享、AVRCP 封面图、音乐接收端、带转发的音乐接收端、音乐发送端 | 所需音源端/接收端拓扑、音频通路、媒体控制路径和资源预算 |
| 通话与语音链路 | 3-SCO、HFP、HFP 转发 | 通话拓扑、音频延迟、麦克风/扬声器通路和手机行为 |
| 通过手机联网与 OTA | PAN、PAN OTA | 手机网络共享、IP 流量、重连和 OTA 分发路径 |
关于 PAN 网络模型和手机端设置,请参阅蓝牙 PAN。关于音频路由、缓冲区所有权和系统负载验证,请参阅音频概览和音频服务器与缓冲。
LE Audio 广播示例¶
sf32lb58x 文档路径本身不能证明目标开发板受支持;应针对实际 SDK 版本和开发板查阅项目的“支持的平台”(Supported Platforms)一节。经典蓝牙与 BAP 广播桥接示例的 README 标题写的是发送端,路径和概述却描述接收端;本次核查的 SDK 实现处理经典蓝牙 A2DP,并启动 BAP 广播发送端。这个结论仅适用于链接中的固定提交,不能直接推及 latest 文档所覆盖的其他 SDK 版本。构建前,应针对实际使用的 SDK 版本或提交核对 README、源代码和板级配置;不能依据复制过来的接收端描述判断角色或开发板支持情况。
zbt 项目提供基于 LE Audio 基础音频应用规范(Basic Audio Profile,BAP)的广播发送端(Source)和广播接收端(Sink)示例。应将发送端和接收端作为一组进行系统测试:广播配置、音频源、接收端、时钟和射频条件都会影响实际结果。
| 产品方向 | 官方示例 | 应先验证的内容 |
|---|---|---|
| 接收广播音频流 | BAP 广播接收端 | 接收端行为、输出音频通路和测试广播配置 |
| 发送广播音频流 | BAP 广播发送端 | 发送端音频处理链路、广播配置和已验证的接收端 |
| 桥接经典蓝牙与 LE Audio 广播 | 经典蓝牙与 BAP 广播发送端 | 经典蓝牙与 LE Audio 两个音频域、它们之间的交接边界,以及组合场景下的时序和资源裕量 |
示例之外的产品验证¶
| 边界 | 保留示例已有的验证依据 | 为产品重新验证的内容 |
|---|---|---|
| 射频行为 | 支持的开发板,以及示例定义的角色或 Profile | 天线、外壳、距离、射频共存、对端设备和法规符合性测试计划 |
| 连接策略 | 基础广播、扫描或连接流程 | 产品延迟、功耗目标、重连策略和状态转换 |
| 安全 | 示例中的配对或绑定设置 | 身份验证要求、密钥存储、隐私、恢复出厂设置和用户恢复流程 |
| 数据与音频 | 已验证的数据包或音频流 | 数据格式与交互约定、错误恢复、延迟、缓冲、编解码配置和内存余量 |
| 证据 | 构建配置、日志和预期行为 | 可重复的手机/配件矩阵、功耗波形、断连恢复和回归测试 |
相关资源¶
- 蓝牙概览:了解产品级角色、Profile、安全、连接参数和共存决策。
- 蓝牙处理器架构:了解 Host/Controller 边界和功耗行为。
- 蓝牙 PAN:了解通过手机网络共享获得 IP 连接,以及基于 PAN 的 OTA。
- 音频 SDK 示例:了解与蓝牙音频开发配合使用的本地采集、编解码和播放示例。
- 示例:查看跨领域的 SDK 示例目录。
最后更新: