登录/注册

ble 广播ad结构定义

更多

BLE(蓝牙低功耗)设备在进行广播时,会发送包含自身信息的广播数据包。这个包由一个或多个 AD Structure(Advertising Data Structure,广播数据结构)组成。

每个 AD Structure 的定义遵循一个固定的格式,包含三个连续的字段:

  1. 长度字段 (Length)

    • 长度:1 字节
    • 含义:表示其后的两个字段(AD Type + AD Data)总共占用的字节数
    • 范围:0 ~ 31。因为整个广播包(包含所有 AD Structure)的有效载荷最大为 31 字节,所以单个 AD Structure 的长度字段值加上下一个 AD Structure 的起始位置不能超过 31。
  2. 类型字段 (AD Type / Data Type)

    • 长度:1 字节
    • 含义:指定 AD Data 字段中包含的数据类型以及如何解释这些数据。
    • 关键性:这是定义广播数据内容的核心字段。蓝牙 SIG 组织定义了标准的 AD Type 值,每个值对应一种特定的数据类型。
    • 常见 AD Type 示例:
      • 0x01Flags。指示设备能力(如是否支持 BR/EDR,是否支持 LE 通用/受限发现模式,是否仅支持 BLE 等)。
      • 0x02 / 0x03Incomplete List of 16-bit Service Class UUIDs / Complete List of 16-bit Service Class UUIDs。设备提供的服务 UUID 列表(不完整/完整)。
      • 0x08 / 0x09Shortened Local Name / Complete Local Name。设备的名称(简称/全称)。
      • 0x0ATx Power Level。广播设备的射频发射功率电平。
      • 0xFFManufacturer Specific Data。制造商自定义数据。这是最常用的自定义数据类型。紧随其后的 AD Data 的前 2 个字节通常是公司标识符 (Company Identifier),由蓝牙 SIG 分配,剩下的字节是制造商自定义的数据内容。
      • (还有其他许多标准类型,如 32-bit/128-bit Service UUIDs List, Service Data, Appearance, Slave Connection Interval Range 等)
  3. 数据字段 (AD Data)

    • 长度:可变长度,具体值等于 Length 字段的值减去 1(因为 Length 字段包含了 AD Type 的 1 字节)。
    • 含义:包含实际的数据内容,其结构和意义完全由 AD Type 字段指定
    • 示例:
      • 如果 AD Type 是 0x01 (Flags),AD Data 通常只有 1 个字节,表示具体的标志位。
      • 如果 AD Type 是 0x09 (Complete Local Name),AD Data 就是设备名称的字符串(如 "MyBLEDevice")。
      • 如果 AD Type 是 0xFF (Manufacturer Specific Data),AD Data 的前 2 个字节是公司 ID (如 0x004C 代表 Apple),后续字节由该公司定义(如 iBeacon 数据)。

总结:一个 AD Structure 的结构定义

字段序号 字段名称 长度 (字节) 描述
1 Length 1 AD Type + AD Data 的总字节数 (N)。
2 AD Type 1 数据类型标识符 (蓝牙 SIG 定义的标准值或制造商自定义值 0xFF)。
3 AD Data N-1 实际数据内容,其格式和含义取决于 AD Type。

关键特点:

简单示例:

假设一个广播包包含两个 AD Structure:

  1. Flags (AD Type=0x01AD Data=0x06): AD Structure = [Length=0x02, AD Type=0x01, AD Data=0x06]
    • Length=0x02: 表示 AD Type + AD Data 共 2 字节。
    • AD Type=0x01: 表示 Flags。
    • AD Data=0x06: 具体的标志位值。
  2. 设备名称 "BLE" (AD Type=0x09): AD Structure = [Length=0x04, AD Type=0x09, AD Data=0x42, 0x4C, 0x45] (ASCII 'B', 'L', 'E')
    • Length=0x04: AD Type (1字节) + "BLE" (3字节) = 4 字节。
    • AD Type=0x09: 表示 Complete Local Name。
    • AD Data=0x42, 0x4C, 0x45: "B"、 "L"、 "E" 的 ASCII 码。

这个广播包的总长度 = (Length字段1 + AD Type1 + AD Data1) + (Length字段2 + AD Type2 + AD Data2) = (1 + 1 + 1) + (1 + 1 + 3) = 3 + 5 = 8 字节(小于 31 字节)。

理解 AD Structure 的定义和组成是开发和解析 BLE 广播数据的基础。

BLE 蓝牙空中报文格式与解析(广播包)

BLE 广播包数据格式解析说明 ...... 矜辰所致

2026-01-04 17:28:15

BLE广播数据解析

BLE 广播数据结构 在链路层,BLE 的

资料下载 mu760905 2022-10-08 10:49:49

蓝牙协议栈BLE-CC254x资源下载

蓝牙协议栈BLE-CC254x资源下载

资料下载 gj_john_dx0504 2021-04-24 10:37:19

广播数据系统RDS工作原理及特征分类综述

在调频立体声广播中传送广播数据,是对FM声音广播多工应用的重大发展。近年来,数据广播

资料下载 佚名 2021-04-24 10:35:58

BLE实验详解之蓝牙温度计设计方案

BLE实验详解之蓝牙温度计设计方案

资料下载 佚名 2021-03-30 16:50:07

BLE实验详解之蓝牙血压计设计方案

BLE实验详解之蓝牙血压计设计方案

资料下载 佚名 2021-03-30 16:46:02

扫描到的BLE设备始终不会显示AT+BLEADVDATA 定义的设备名称是哪里出了问题?

AT 固件版本:release/v2.2.0.0 版本使用“AT+BLEADVDATA”定义了蓝牙的广播的蓝牙名称,使用“蓝牙调试助手” 和 “Light Blue”APP ,在安卓手机上扫描

2023-03-08 06:14:37

户外做BLE广播,隔天却无法扫描到广播了怎么解决?

你们有遇到这样的问题吗?可以分享如何搞定。我的 esp32c3 开发板昨天在户外做 BLE 广播一切正常(将开发板放在户外的塑料瓶子中),但我今天无法扫描到广

2023-03-06 06:04:14

BLE主从一体相互收发广播

大佬们,BLE蓝牙主从一体怎么做到让他们相互收到对方发的广播啊?单链路的情况,添加独立的RF文件也不行;相同程序,目前只能其中一方收得到另一方收不到,多个设备时,也有某个设备收不到其它

2022-12-09 18:14:43

如何利用NRF24L01来实现BLE广播

先来介绍一下模拟BLE广播的理论基础。BLE的广播广告(Advertis

2020-06-17 04:36:31

请问我必须打开BLE的接收端来识别“广播类型消息”吗?

1 /我计划使用上面的BLE微控制器在电池供电的应用程序中,连接到手机。2 /我打算把微卫星放进深度睡眠中以尽可能多地节省功率。3、我必须定期“唤醒”我的申请并做广告吗?或者我的手机发送了一个“广播

2019-10-28 11:16:21

如何在BLE定义特征字段中使用数据结构

是否有人知道如何在BLE自定义特性字段中定义数据结构?在选择数据类型的下

2019-09-11 13:44:07
7天热门专题 换一换
相关标签