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

ESP32 C3开发实战 -8(BLE广播数据)

一、基础规则:广播包整体结构

BLE 广播包(Advertising Packet)分两大块:

  1. 广播头部(Packet Header):蓝牙底层链路层控制信息(芯片自动填充,应用层不用管)
  2. AD 数据载荷(Advertising Data / Scan Response Data):开发者可自定义的业务数据,最多 31 字节
    • ADV_DATA:主机扫描时直接收到的广播数据(最多 31 字节)
    • SCAN_RSP:主机发 Scan Request 后设备回复的附加数据(额外 31 字节)

所有用户可见的名称、服务 UUID、厂商数据,全部放在「AD 载荷」里,由多条AD 结构(AD Structure)顺序拼接而成。

二、单条 AD 结构通用固定格式(核心)

每一段信息(名称、Flags、厂商数据等)都遵循统一 3 段式结构:

plaintext

[1字节 Length] + [1字节 AD Type] + [N字节 AD Data Payload]
  1. Length(长度字节):等于后面「AD Type + AD Payload」的总字节数
    • 例:Type1 字节 + 负载 2 字节 → Length = 0x03
  2. AD Type(数据类型):标准编号,规定这段数据是什么含义(蓝牙 SIG 规范定义)
  3. AD Payload(有效载荷):该类型对应的实际内容,长度 = Length - 1

多条 AD 结构紧密拼接,中间无分隔符,扫描工具靠Length逐个拆分解析

三、BLE 最常用标准 AD Type(对照你截图里的字段)

1. 0x01 Flags 标志位(必带,几乎所有设备广播第一段)

  • 长度固定:Length=0x02,Payload 2bit 标志位
  • 关键 bit 定义:
    • Bit0:LE Limited Discoverable 有限可发现(短时广播)
    • Bit1:LE General Discoverable 通用可发现(长期广播)
    • Bit2:BR/EDR Not Supported = 1 → 纯 BLE 设备,无经典蓝牙
    • Bit3:LE+BR/EDR 共存设备
  • 示例值0x05= 0b00000101:有限可发现、无经典蓝牙

2. 服务 UUID 类(宣告设备支持的 BLE GATT 服务)

3. 设备名称类

  • 0x08 Shortened Local Name:缩短本地名(名称超长时截断)
  • 0x09 Complete Local Name:完整本地名称 Payload 直接存 ASCII 字符串

4. Appearance 设备外观 0x19

2 字节数值,蓝牙 SIG 预定义设备图标分类:手环、温度计、体重秤、通用设备等0x0000= 无分类通用 BLE 设备,手机不显示专属图标

5. LE 蓝牙地址 0x1B

广播携带自身 BLE MAC 地址,6 字节,用于区分设备

6. 厂商自定义数据 0xFF Manufacturer Specific Data

最常用私有业务段,也是你文档重点: Payload 格式固定:[2字节 Company ID] + [厂商自定义私有数据]

  • 前 2 字节:蓝牙联盟分配的厂商 ID
  • 剩余字节:厂商自由定义状态、参数、MAC、故障码等,无规范限制

四、可选扩展 AD Type(日常开发高频)

  1. 0x0A Tx Power Level:发射功率,用于 RSSI 测距定位
  2. 0x14 Service Data:服务配套数据(BLE 透传、传感器实时值广播)
  3. 0x16 16-bit Service Data:绑定 16bit 服务的实时数据(门锁、传感器常用)
  4. 0x29 Mesh Data:蓝牙 Mesh 组网广播
  5. 0x2A Mesh Beacon:Mesh 信标

五、广播数据包两种载体区分

  1. ADV_DATA(主广播数据,最大 31 字节)设备主动向外广播,手机不用额外请求就能直接收到; 业务核心数据(名称、厂商状态、基础服务)尽量放这里。
  2. SCAN_RSP(扫描响应,额外 31 字节)手机发送 Scan Request 包后,设备才会回复; 适合放次要数据:超长设备名、额外服务、扩展厂商信息。

总可用数据上限:ADV 31B + SCAN_RSP 31B = 62 字节

六、贴上实例代码

// 启动BLE广播

void BleAdvertise(void)

{

LOG(BLE_TAG, "BleAdvertise()");

if(BleState!=BLE_STOP) return;

if (!ble_hs_synced())

{

ESP_LOGW(BLE_TAG, "BLE is not synced,return");

return;

}

struct ble_hs_adv_fields Fields = {0};

Fields.name = (uint8_t *)DeviceName;

Fields.name_len = strlen(DeviceName);

Fields.name_is_complete = 1;

Fields.flags = BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP;

Fields.uuids16 = (ble_uuid16_t[]){BLE_UUID16_INIT(0x180A)}; //设备信息服务UUID

Fields.num_uuids16 = 1;

Fields.uuids16_is_complete = 1;

if (ble_gap_adv_set_fields(&Fields) != 0)

{

ESP_LOGE(BLE_TAG, "Set Ble Advertise field fail");

return;

}

struct ble_gap_adv_params AdvPara = {0};

AdvPara.conn_mode = BLE_GAP_CONN_MODE_UND;

AdvPara.disc_mode = BLE_GAP_DISC_MODE_GEN; if (ble_gap_adv_start(BLE_OWN_ADDR_PUBLIC, NULL, BLE_HS_FOREVER, &AdvPara, BleGapEventHdl, NULL) != 0)

{

ESP_LOGE(BLE_TAG, "Ble advertise start fail");

return;

}

BleState=BLE_ADVERTISING;

LOG(BLE_TAG, "BLE advertising (Device: %s)", LB_Mode);

}

http://www.jsqmd.com/news/1151135/

相关文章:

  • 基于高等代数视角:(7,4)汉明码矢量分区与标准译码表解析——P124302052汪梓然
  • 2026年面试复盘分析推荐AI快速整理,清晰省事体验比手动好太多
  • 我怎么把开发过程中的笔记,慢慢整理成后续还能继续用的资产
  • 抗衰防病五道防线:从第一性原理导出的健康老龄化框架
  • STM32F723ZE直流电机控制实战:从有刷到无刷
  • YOLOv5 5款模型对比评测:从n到x的精度/速度/显存占用实测
  • 容器网络与存储:lxcfs-tools如何协同其他容器技术栈
  • 揭阳解决电商财税哪家专业:2026本土全品类服务商TOP实力解析
  • 3步掌握VASPsol:免费开源的VASP隐式溶剂模型完整指南
  • MHmarkets迈汇平台:工具可用性的标准归纳
  • 生产力直接拉满,能生成连续剧情视频的AI工具推荐!
  • 容器故障排查:lxcfs-tools调试与日志分析完全手册
  • 如何用STM32实现±0.5°C高精度温度控制:从新手到专家的实践指南
  • 告别Switch游戏安装烦恼:NS-USBLoader一站式解决方案完全指南
  • 番茄小说永久保存全攻略:告别网络限制,打造个人数字图书馆
  • 叉车司机N1培训推荐:创星职培适合急需实操的学员吗
  • FanControl V270:Windows终极风扇控制解决方案,告别噪音拥抱静音
  • RMQ/稀疏表加速静态区间查询
  • AI商业洞察动态简报(2026.07.08)
  • 我和 Fable 5 聊了一晚上 AI,得出的结论大吃一惊
  • 围绕MonetaMarkets多端体验看,会更顺畅吗?
  • 游戏云服务器推荐的技术梳理
  • 2026抖音无水印保存视频到相册方法,官方去水印完整教程
  • 告别打码平台!Python + ddddocr 实现验证码全自动识别(滑块/文字/点选)实战
  • Python ORM Bee V1.9.0发布,支持多表关联查询,代码量少,AI写也容易检查
  • 哪个AI可以做长视频?即梦Seedance 2.5 将是做长视频唯一选择!
  • Linux 没有桌面?Docker 跑 Webtop,浏览器图形化管理服务器
  • 基于TLA2518与PIC18F45K80的高精度多通道ADC系统设计
  • 运营不会写代码,也能用Codex做报表自动化吗?2026小工具落地教程
  • 抖音批量下载神器:3分钟学会自动化内容收集与管理