当前位置: 首页 > news >正文

BLE协议栈的解析

目录

概述

1 BLE协议栈层次结构

1.1  控制器(Controller)

1.2 主机(Host)

1.3 应用层(Application)

1.3.1 业务层功能

1.3.2 实现方法

2 重要属性介绍

2.1 GATT属性

 2.2  服务(Service)

2.3 特征值(Characteristic)

2.4 描述符(Descriptor)

 2.5 数据交互方式

3 蓝牙设备角色

3.1 BLE 广播者(Broadcaster)

 3.2 BLE 观察者(Observer)

 3.3 BLE 中心设备(Central)

3.4  BLE 外设(Peripheral)

4 应用总结

4.1 组件功能列表

4.2 使用要点


概述

蓝牙低功耗(BLE)协议栈是实现蓝牙无线通信功能的分层架构,本文将从核心组成、各层功能到实际应用进行全面介绍。包括协议的层次结构,主要属性,以及设备角色等内容。

1 BLE协议栈层次结构

BLE协议栈主要分为三个部分:控制器(Controller),主机(Host),应用层(Application)

1.1  控制器(Controller)

控制之包括3个部分:

物理层PHY

  • 工作在2.4GHz ISM频段(2402-2480MHz)

  • 采用40个信道,信道间隔2MHz

  • 使用高斯频移键控(GFSK)调制

  • 传输速率: 1Mbps(蓝牙5.0后支持2Mbps)

链路层Link Layer

  • 负责广播、扫描、建立和维护连接

  • 管理5种状态:

    • 待机(Standby)

    • 广播(Advertising)

    • 扫描(Scanning)

    • 发起(Initiating)

    • 连接(Connected)

  • 处理数据包格式、时序和信道跳频

直接测试模式Direct Test Mode:用来测试射频性能,比如发射功率、接收灵敏度。

1.2 主机(Host)

主机(Host)层主要包含4个部分:

主机控制器接口HCI

  • 控制器与主机之间的标准通信接口

  • 可通过UART、USB或三线协议传输

  • 提供命令、事件和数据三种数据包类型

逻辑链路控制与适配协议L2CAP

  • 提供逻辑信道复用功能

  • 负责协议/信道多路复用

  • 处理数据包的分割和重组

  • 提供基本L2CAP模式和LE信用流控制模式

安全管理器Security Manager

  • 负责配对和密钥分发

  • 提供认证和加密功能

  • 支持四种安全模式

  • 实现LE安全连接和传统配对

属性协议ATT

  • 定义客户端-服务器结构的通信协议

  • 服务器存储数据(属性),客户端请求数据

  • 属性由句柄、UUID和值组成

  • 支持查找、读取和写入等操作

通用访问规范(GAP):

  • 定义设备角色:广播者、观察者、外围设备和中央设备

  • 管理设备发现、连接建立和安全

  • 控制广播和连接参数

通用属性规范(GATT):

  • 建立在ATT之上的服务框架

  • 定义服务(Service)、特征(Characteristic)和描述符(Descriptor)

  • 规范了数据如何组织和交换

  • 支持预定义和自定义服务

1.3 应用层(Application)

1.3.1 业务层功能

BLE应用层是蓝牙低能耗协议栈的最上层,直接面向用户和开发者,负责实现具体的业务逻辑和功能。以下是BLE应用层的详细功能解析:

1)业务逻辑实现

  • 定义设备的具体功能和行为

  • 实现用户需求的实际应用场景

  • 处理来自下层协议栈的数据和事件

2) 数据管理

  • 组织和管理应用数据

  • 定义数据格式和解析规则

  • 实现数据缓存和处理机制

1.3.2 实现方法

1) 应用配置文件(Profile)

  • 预定义的标准功能集合(如心率监测、血压监测等)

  • 由多个服务(Service)组成

  • 确保不同厂商设备的互操作性

2.)自定义服务/特征

  • 开发者根据需求定义的服务和特征

  • 通过自定义UUID实现

  • 灵活满足特定应用场景需求

3) 用户接口

  • 提供与用户交互的接口

  • 包括状态显示、参数配置等

  • 可以是物理按钮、LED指示灯或移动应用界面

4)数据处理模块

  • 数据加密/解密

  • 数据压缩/解压缩

  • 数据格式转换

2 重要属性介绍

2.1 GATT属性

1)GATT 的作用

  • 定义 数据如何组织(服务、特征值、描述符)

  • 规定 数据如何交互(读、写、通知、指示)

  • 确保不同厂商设备之间的 互操作性

2)GATT 角色

角色说明
GATT 服务器(Server)存储数据(如传感器数据、设备状态),并允许客户端访问。例如:心率监测器、智能灯泡。
GATT 客户端(Client)向服务器发起请求(读/写数据)。例如:手机APP、中央设备。

注意:一个设备可以同时是 Client 和 Server(例如:智能手表既可以接收手机数据,也可以向耳机发送数据)。

 2.2  服务(Service)

1)服务的定义

  • 服务是 一组相关功能 的集合,例如:

    • 心率服务(Heart Rate Service):包含心率测量、传感器位置等数据。

    • 电池服务(Battery Service):包含电池电量、充电状态等数据。

  • 每个服务由 UUID(通用唯一标识符) 标识:

    • 标准 UUID(16-bit):如 0x180D(心率服务)。

    • 自定义 UUID(128-bit):开发者可自定义,如 0000XXXX-0000-1000-8000-00805F9B34FB

2) 服务的层次结构

GATT Server
│
├── Service 1 (UUID: 0x180D)  // 心率服务
│   ├── Characteristic 1 (心率测量)
│   └── Characteristic 2 (传感器位置)
│
└── Service 2 (UUID: 0x180F)  // 电池服务├── Characteristic 1 (电池电量)└── Descriptor (通知使能)

2.3 特征值(Characteristic)

1)特征值的定义

  • 特征值是 服务中的具体数据项,例如:

    • 心率服务中的 当前心率值(如 72 BPM)。

    • 电池服务中的 剩余电量(如 85%)。

  • 每个特征值包含:

    • UUID(标识数据类型,如 0x2A37 表示心率测量)。

    • Value(数据值,如 0x48 表示 72 BPM)。

    • Permissions(读/写/通知权限)。

    • Descriptors(额外配置信息,如通知开关)。

2) 特征值的属性

属性说明
Read(可读)客户端可读取数据(如读取电池电量)。
Write(可写)客户端可写入数据(如调节灯光亮度)。
Notify(通知)服务器主动推送数据(无需客户端请求),例如持续发送心率数据。
Indicate(指示)类似 Notify,但要求客户端确认(更可靠)。

2.4 描述符(Descriptor)

1)描述符的作用

其主要作用是提供额外配置信息,例如:

  • Client Characteristic Configuration Descriptor (CCCD):控制 Notify/Indicate 是否启用。

  • Characteristic User Description:人类可读的描述(如 "Heart Rate Measurement")。

2)常见描述符

UUID名称功能
0x2902CCCD启用/禁用通知(Notify)或指示(Indicate)。
0x2901User Description提供特征值的文本描述(如 "Battery Level")。

 2.5 数据交互方式

1)主要操作

操作说明示例
Read(读取)客户端读取特征值读取电池电量
Write(写入)客户端写入特征值调节灯光亮度
Notify(通知)服务器主动推送数据(无确认)持续发送心率数据
Indicate(指示)服务器主动推送数据(需客户端确认)重要警报消息

2)典型应用场景

  1. 心率监测器(HRM)

    • 服务:0x180D(心率服务)

    • 特征值:0x2A37(心率测量,Notify 模式)

    • 客户端订阅后,服务器持续发送心率数据。

  2. 智能灯泡

    • 服务:自定义 UUID(如 0000AAAA-...

    • 特征值:

      • 0xAAAA(亮度,Write 模式)

      • 0xAAAB(颜色,Write 模式)

3 蓝牙设备角色

3.1 BLE 广播者(Broadcaster)

 广播者的核心特点主要如下:

1)工作模式

  • 仅发送数据,不接收响应(单向通信)。

  • 不建立连接(Connectionless),适用于一对多通信。

  • 使用 广播信道(37/38/39) 发送数据包。

2)典型应用场景

  • 信标(Beacon)(如 iBeacon、Eddystone)

  • 传感器数据广播(温度、湿度等)

  • 设备发现(让扫描设备感知广播者的存在)

  • 低功耗标签(资产跟踪、室内定位)

 3.2 BLE 观察者(Observer)

观察者(Observer)是 BLE(蓝牙低功耗)中的一种设备角色,专门用于 扫描并接收广播数据,但不主动发起连接。它在 BLE 通信中扮演"监听者"的角色,适用于数据采集、设备发现等场景。

1. 观察者的核心特点

1)工作模式

  • 仅接收广播数据,不发送连接请求(被动监听)

  • 不建立双向连接(Connectionless)

  • 在 3个广播信道(37/38/39) 上扫描数据

2) 典型应用场景

  • 信标(Beacon)接收(如商场导航、室内定位)

  • 环境传感器数据收集(温度、湿度等)

  • 设备发现与监控(如资产跟踪)

  • 广播数据抓包与分析

2. 观察者的工作流程

1) 扫描方式

扫描类型特点功耗
被动扫描(Passive Scanning)只接收广播数据,不发送扫描请求更低功耗
主动扫描(Active Scanning)发送扫描请求(SCAN_REQ)获取更多数据(Scan Response)功耗略高

2) 数据接收机制

  1. 监听广播信道(37/38/39)

  2. 解析广播数据(如设备名称、服务UUID、厂商数据等)

  3. 可选:发送扫描请求(SCAN_REQ)获取扩展信息(Scan Response)

3. 观察者的关键特性

1)低功耗优化

  • 可调节扫描间隔(Scan Interval)和 扫描窗口(Scan Window)

    • 例:间隔100ms,窗口10ms → 每100ms扫描10ms

  • 支持后台扫描(如手机APP在后台发现Beacon)

2) 数据过滤能力

  • 基于MAC地址过滤

  • 基于广播数据类型过滤(如只接收iBeacon数据)

  • RSSI阈值过滤(忽略信号过弱的设备)

3)无连接管理

  • 不处理配对、加密等流程

  • 无法直接控制广播设备(仅接收数据)

 3.3 BLE 中心设备(Central)

中心设备(Central)是 BLE(蓝牙低功耗)通信中的核心角色,负责 主动扫描、发起连接 并 管理数据通信。它是构建 BLE 系统的"大脑",在大多数 BLE 应用中起主导作用。

1. 中心设备的核心特点

1) 核心功能

  • 扫描发现外围设备(扫描广播数据)

  • 发起和管理连接

  • 作为GATT客户端(读写服务/特征值)

  • 管理多个连接(部分设备支持)

2)典型设备示例

  • 智能手机/平板电脑

  • 笔记本电脑

  • 智能家居网关

  • 医疗监护仪主控端

 2. 工作流程

1)设备发现阶段

2) 连接建立阶段

3. 关键技术特性

1)连接管理

参数说明典型值
连接间隔两次数据交互间隔7.5ms-4s
从机延迟允许从设备跳过的连接事件0-499
监控超时判定连接丢失时间100ms-32s

 优化建议

  • 低功耗场景:增大间隔(如100ms)

  • 实时性要求高:减小间隔(如15ms)

2) 多设备连接

  • 分时复用机制:在不同连接间隔处理不同设备

  • 连接参数协商:为不同设备设置独立参数

  • 资源限制:受芯片RAM/处理能力限制

3 中心设备 vs 外围设备 

特性中心设备(Central)外围设备(Peripheral)
角色主动方/控制端被动方/被控端
功耗相对较高优化更好
连接能力可连接多个设备通常只连1个中心
典型设备智能手机、网关传感器、穿戴设备

3.4  BLE 外设(Peripheral)

外设(Peripheral)是 BLE(蓝牙低功耗)通信中的关键角色,作为 数据提供方 和 被控制端,在蓝牙生态系统中承担着终端数据采集和设备控制的重要功能。

1. 外设的核心特点

1)基本特性

  • 广播自身存在(Advertising)

  • 接受中心设备连接请求

  • 作为GATT服务器(存储并提供数据)

  • 低功耗优化设计

2)典型设备示例

  • 智能手环/手表

  • 医疗传感器(心率、血氧)

  • 智能家居设备(灯泡、门锁)

  • 信标(Beacon)设备

 2. 工作流程

1)广播阶段

2) 连接建立

 3. 关键技术特性

1) 广播配置

参数说明典型值
广播间隔两次广播间隔时间20ms-10.24s
广播类型ADV_IND/ADV_NONCONN_IND等根据需求选择
广播数据设备名称/服务UUID等31字节限制

2)  连接管理

参数外设控制能力说明
连接参数更新可请求修改协商最佳参数
安全请求可发起配对提升安全性
断连处理可重新广播恢复可发现状态

4. 外设 vs 中心设备

特性外设(Peripheral)中心设备(Central)
角色数据提供者数据消费者
连接能力通常单连接多连接支持
功耗优化深度睡眠支持相对较高
典型功耗μA级待机mA级工作

4 应用总结

4.1 组件功能列表

组件作用示例
GATT定义数据组织方式客户端-服务器架构
Service功能分组心率服务(0x180D)、电池服务(0x180F)
Characteristic具体数据项心率值(0x2A37)、电池电量(0x2A19)
Descriptor额外配置CCCD(0x2902,控制通知开关)

4.2 使用要点

  • GATT 是数据组织的框架,服务是功能模块,特征值是具体数据。

  • Notify/Indicate 适用于实时数据推送(如传感器数据)。

  • CCCD(0x2902)是 Notify/Indicate 的关键,客户端必须写入 0x01 启用通知。

相关文章:

  • 4.3 random模块
  • 中小企业MES系统详细设计
  • 低代码/AI是否会取代前端开发?
  • 倒排索引与数据库索引
  • 小刚说C语言刷题—1018三角形类别
  • [预备知识]5. 优化理论(一)
  • Linux 库文件详解
  • 文章六:《循环神经网络(RNN)与自然语言处理》
  • 云盘系统设计
  • EMC PowerStore存储学习之一NVMe磁盘的命名规则
  • 预订接口优化:使用本地消息表保证订单生成、库存扣减的一致性
  • 程序员转行酒店用品客户经理
  • MySQL 中的游标(Cursor)
  • [计算机科学#8]:指令与程序的奥秘
  • c语言的常用关键字
  • WebRtc11:SDP详解
  • AE/PR模板 100个现代文字标题动态排版效果动画 Motion Titles
  • C++ unordered_set unordered_map
  • LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程
  • 2023华为od统一考试B卷【二叉树中序遍历】
  • 山西太原一小区发生爆炸,太原:进一步深刻汲取教训
  • 国铁集团:5月1日全国铁路预计发送旅客2250万人次
  • 新型算法助力听障人士听得更清晰
  • 解放日报:中国大模型企业的发展机遇已经到来
  • 国有六大行一季度合计净赚超3444亿,不良贷款余额均上升
  • 神十九飞船已撤离空间站,计划于今日中午返回东风着陆场