news 2026/7/13 14:47:28

【蓝牙精品系列文档】【01_ble基础】07_ble_ota_process

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【蓝牙精品系列文档】【01_ble基础】07_ble_ota_process

BLE OTA(Over-The-Air)完整交互流程详解

目录

  1. BLE协议栈分层架构
  2. 物理层与链路层PDU格式
  3. 广播阶段(Advertising)
  4. 扫描阶段(Scanning)
  5. 连接建立(Connection)
  6. 配对与绑定(Pairing & Bonding)
  7. 服务发现(GATT Service Discovery)
  8. 数据交互(Data Exchange)
  9. 断连(Disconnection)

1. BLE协议栈分层架构

┌─────────────────────────────────────────────────────────────────┐ │ Application Layer │ ├─────────────────────────────────────────────────────────────────┤ │ GATT Layer │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ GATT Client │ │ GATT Server │ │ Service/Profile │ │ │ └──────────────┘ └──────────────┘ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ ATT Layer │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ ATT Request │ │ ATT Response│ │ ATT Notification │ │ │ └──────────────┘ └──────────────┘ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ L2CAP Layer │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ L2CAP Channel (CID=0x0004 for ATT) │ │ │ │ - LE Credit Based Flow Control (LE-CFC) │ │ │ │ - Fixed Channel for ATT, SM, LE signaling │ │ │ └────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ HCI Layer │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ HCI Command │ │ HCI Event │ │ ACL Data Packet │ │ │ └──────────────┘ └──────────────┘ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Link Layer (LL) │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ - LL Data PDU │ │ │ │ - LL Control PDU │ │ │ │ - Advertising PDU (ADV_IND, SCAN_REQ, CONNECT_IND, etc.) │ │ │ └────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ Physical Layer (PHY) │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ - 2.4GHz ISM Band (2402-2480 MHz, 40 channels) │ │ │ │ - Channel Spacing: 2MHz │ │ │ │ - Modulation: GFSK, 1Msym/s (LE 1M), 2Msym/s (LE 2M) │ │ │ └────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ Data Flow Direction: Master (Central) Slave (Peripheral) ┌──────────────┐ ┌──────────────┐ │ Application │ <── GATT Read/Write/Notify/Indicate ──> │ Application │ ├──────────────┤ ├──────────────┤ │ GATT │ <────── ATT Request/Response ─────────> │ GATT │ ├──────────────┤ ├──────────────┤ │ ATT │ <────── L2CAP Data (CID=0x0004) ──────> │ ATT │ ├──────────────┤ ├──────────────┤ │ L2CAP │ <────── ACL Data Packets ────────────> │ L2CAP │ ├──────────────┤ ├──────────────┤ │ HCI │ <────── HCI ACL / HCI Events ─────────> │ HCI │ ├──────────────┤ ├──────────────┤ │ Link Layer │ <────── LL Data / LL Control PDU ─────> │ Link Layer │ ├──────────────┤ ├──────────────┤ │ PHY │ <────── Radio Frames (2.4GHz) ────────> │ PHY │ └──────────────┘ └──────────────┘

各层核心作用

层级功能典型PDU/数据单元
Application业务逻辑实现自定义数据
GATT定义服务、特征值、描述符结构Service/Characteristic/Descriptor
ATT属性读写协议ATT_Read_Request, ATT_Write_Response
L2CAP多路复用、分段重组L2CAP_Data_PDU, LE-CFC
HCI主机与控制器标准接口HCI_Command, HCI_Event, HCI_ACL
Link Layer状态机管理、加密、连接控制LL_Data_PDU, LL_Control_PDU
PHY射频收发、调制解调Radio Packet

2. 物理层与链路层PDU格式

2.1 物理层空口数据包格式(LE 1M PHY)

┌──────────┬────────────┬───────────────┬──────────┬──────────────┬────────────┐ │ Preamble │ Access │ PDU │ CRC │ CTE │ Trailer │ │ (1 byte) │ Address │ (2-258 bytes)│ (3 bytes)│ (Optional) │ (Optional) │ │ │ (4 bytes) │ │ │ │ │ └──────────┴────────────┴───────────────┴──────────┴──────────────┴────────────┘
Preamble(前导码) - 1 Byte
字节值含义说明
0xAALE 1M PHYAccess Address[0] = 0, 使用 01010101b
0x55LE 1M PHYAccess Address[0] = 1, 使用 10101010b
0xAALE Coded PHY S2/S8重复前导,用于前向纠错

Bit级解析:

Preamble = 0x55 (10101010b): Bit[7:0] = 10101010 ├── Bit[7] = 1 → 交替模式,用于频率同步 ├── Bit[6] = 0 ├── Bit[5] = 1 ├── Bit[4] = 0 ├── Bit[3] = 1 ├── Bit[2] = 0 ├── Bit[1] = 1 └── Bit[0] = 0 用途: 提供频率同步和自动增益控制(AGC)训练
Access Address(接入地址) - 4 Bytes
┌────────────────────────────────────────────────────────────────────┐ │ Access Address (32 bits) │ ├────────────────────────────────────────────────────────────────────┤ │ Byte[3] │ Byte[2] │ Byte[1] │ Byte[0] │ ├───────────┼───────────┼───────────┼────────────────────────────────┤ │ 0x8E/0x89 │ 0xBE/0x89 │ 0xD6/0x6D │ 0x00/0xAF │ └───────────┴───────────┴───────────┴────────────────────────────────┘ 广播信道固定地址: 0x8E89BED6 (大端序) 连接信道随机地址: 例如 0x00D68E89 (由Master在CONNECT_IND中生成) Bit级约束: - Bit[31:24] ≠ 0x00, 0x55, 0xAA, 0x6B, 0x7E, 0x99, 0xAA, 0xB5, 0xD6, 0xE7, 0xF8 - 不能包含6个连续的0或1 - 不能出现4个重复的nibble - 必须与广播地址(0x8E89BED6)海明距离 > 1

广播信道Access Address = 0x8E89BED6(hex展开):

地址字节序 (小端传输): D6 BE 89 8E 地址字节序 (大端表示): 8E 89 BE D6 Bit展开: Byte[3] = 0x8E = 1000 1110b Bit[31:28] = 1000 = 0x8 Bit[27:24] = 1110 = 0xE Byte[2] = 0x89 = 1000 1001b Bit[23:20] = 1000 = 0x8 Bit[19:16] = 1001 = 0x9 Byte[1] = 0xBE = 1011 1110b Bit[15:12] = 1011 = 0xB Bit[11:8] = 1110 = 0xE Byte[0] = 0xD6 = 1101 0110b Bit[7:4] = 1101 = 0xD Bit[3:0] = 0110 = 0x6 校验属性: - 不符合连续6个相同bit规则 ✓ - 海明距离(0x55555555) = 17 > 1 ✓ - 海明距离(0xAAAAAAAA) = 14 > 1 ✓
CRC(循环冗余校验) - 3 Bytes
CRC多项式: x^24 + x^10 + x^9 + x^6 + x^4 + x^3 + x + 1 CRC初始值(广播): 0x555555 CRC初始值(数据): 由Channel Map计算得出

2.2 链路层PDU通用格式

链路层PDU根据信道类型分为两大类:

  1. 广播信道PDU(Advertising Channel PDU): 用于广播、扫描、发起连接
  2. 数据信道PDU(Data Channel PDU): 用于连接建立后的数据和控制
通用链路层PDU格式: ┌────────────────────────────────────────────────────────────────────┐ │ Link Layer PDU │ ├────────────────────────────────────────────────────────────────────┤ │ Header (2 bytes) │ Payload (0-255 bytes) │ MIC (0/4 bytes) │ └────────────────────────────────────────────────────────────────────┘
2.2.1 广播信道PDU Header - 16 bits
┌────────────────────────────────────────────────────────────────────┐ │ Advertising Channel PDU Header │ ├──────────┬──────────────┬───────────────┬──────────────────────────┤ │ PDU Type │ RFU (ChSel) │ TxAdd │ RxAdd │ │ (4 bits) │ (1 bit) │ (1 bit) │ (1 bit) │ ├──────────┼──────────────┼───────────────┼──────────────────────────┤ │ Length │ RFU │ │ │ (8 bits) │ (8 bits) │ │ └──────────┴──────────────┴──────────────────────────────────────────────┘ 完整16-bit Header布局: Bit[15:12] = PDU Type Bit[11] = ChSel (通道选择算法 #2 指示, BLE 5.0+) Bit[10] = TxAdd (发送地址类型: 0=Public, 1=Random) Bit[9] = RxAdd (接收地址类型: 0=Public, 1=Random) Bit[8] = RFU (Reserved for Future Use) Bit[7:0] = Length (Payload长度, 单位: bytes) 注意: BLE 5.0扩展广播中,Header最高字节定义有变化,Length扩展为8bits

PDU Type编码 (Bit[15:12]):

值 (hex/bin)PDU类型描述方向
0x0 (0000b)ADV_IND可连接可扫描非定向广播Slave → 所有设备
0x1 (0001b)ADV_DIRECT_IND可连接定向广播Slave → 特定Master
0x2 (0010b)ADV_NONCONN_IND不可连接不可扫描广播Slave → 所有设备
0x3 (0011b)SCAN_REQ扫描请求Master → Slave
0x4 (0100b)AUX_SCAN_REQ辅助扫描请求 (BLE 5.0+)Master → Slave
0x5 (0101b)SCAN_RSP扫描响应Slave → Master
0x6 (0110b)CONNECT_IND连接请求Master → Slave
0x7 (0111b)AUX_CONNECT_REQ辅助连接请求 (BLE 5.0+)Master → Slave
0x8 (1000b)ADV_SCAN_IND可扫描非连接广播Slave → 所有设备
0x9-A (1001-1010b)ADV_EXT_IND / AUX_ADV_IND扩展广播指示BLE 5.0
0xB-D (1011-1101b)AUX_SYNC_IND / AUX_CHAIN_IND / AUX_CONNECT_RSP辅助广播BLE 5.0
0xE-F (1110-1111b)Reserved保留-
2.2.2 数据信道PDU Header - 16 bits (LE 4.0-4.1)
数据信道PDU (Data Channel PDU) 包含两种类型: 1. LL Data PDU - 传输上层数据(L2CAP) 2. LL Control PDU - 传输链路层控制命令 ┌────────────────────────────────────────────────────────────────────┐ │ Data Channel PDU Header (16 bits) │ ├──────────┬──────────┬───────────────┬──────────────────────────────┤ │ LLID │ NESN │ SN │ MD │ │ (2 bits) │ (1 bit) │ (1 bit) │ (1 bit) │ ├──────────┼──────────┼───────────────┼──────────────────────────────┤ │ CP │ RFU │ Length │ │ │ (1 bit) │ (3 bits) │ (8
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 14:47:27

OmenSuperHub:释放惠普游戏本隐藏性能的终极开源控制中心

OmenSuperHub&#xff1a;释放惠普游戏本隐藏性能的终极开源控制中心 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 在游戏…

作者头像 李华
网站建设 2026/7/13 14:44:29

重新定义物联网平台:从复杂架构到单一可执行文件的颠覆性创新

重新定义物联网平台&#xff1a;从复杂架构到单一可执行文件的颠覆性创新 【免费下载链接】iot-master 物联大师是开源免费的物联网平台&#xff0c;集成了标准Modbus和主流PLC等多种协议&#xff0c;支持数据采集、公式计算、定时控制、自动控制、异常报警、流量监控、Web组态…

作者头像 李华
网站建设 2026/7/13 14:44:13

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术02

编号 类型 领域 子领域 问题 问题的数学分析及数值分析 (逐Step推导的数学方程式) 参数列表及边界范围及数值及各类常数 加工装备及机床及零件及工具列表 关联知识 212 服务器卫星 微型计算机控制技术 PCIe Retimer MCU PCIe 5.0/6.0 Retimer芯片(如Astera Labs P…

作者头像 李华
网站建设 2026/7/13 14:43:27

Docker 与 Kubernetes 实战:2026 年容器编排最佳实践

Docker 与 Kubernetes 实战&#xff1a;2026 年容器编排最佳实践 引言 如果说前几年云原生还是"先进技术"的代表&#xff0c;那现在基本已经是行业标配了。2026年&#xff0c;新启动的项目大部分都会考虑用容器、微服务这些技术栈。Kubernetes 在企业生产容器编排 wo…

作者头像 李华
网站建设 2026/7/13 14:42:23

ArcGIS Pro 3D场景构建与外部模型集成指南

1. 为什么需要将外部模型集成到ArcGIS Pro中&#xff1f;在三维地理信息系统中&#xff0c;真实世界往往需要精细的模型与地理环境相结合。比如城市规划中&#xff0c;设计师可能需要将建筑模型&#xff08;.fbx格式&#xff09;放置到真实地形上&#xff1b;考古复原时&#x…

作者头像 李华
网站建设 2026/7/13 14:42:01

揭秘游戏修改新纪元:Wand-Enhancer如何彻底改变你的游戏体验

揭秘游戏修改新纪元&#xff1a;Wand-Enhancer如何彻底改变你的游戏体验 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为游戏内资源匮乏而烦…

作者头像 李华