BLE 中的 Advertising(广播):什么是广播、数据包格式及广播机制

作者: IT Sectr 发布日期: 2026-07-15 阅读时间: 11 分钟

Advertising(广播) — 是 Bluetooth Low Energy 中的一种机制,外设设备通过该机制在三个专用信道(37、38、39)上发送短数据包来宣告自己的存在。Bluetooth Core Specification 5.4 (2023) 定义了两种广播类型:可连接广播 — 设备已准备好连接,和不可连接广播 — 由信标(Beacon)使用,仅传输数据而不建立双向连接。广播参数 — 间隔从 20 ms 到 10.24 s、发射功率从 -20 到 +10 dBm 和数据包类型 — 直接影响设备的发现速度和能耗,这对于开发电池供电的物联网设备至关重要。

要点

  • Advertising(广播) — BLE 设备的主要发现机制,工作在三个专用信道 37、38 和 39 上。
  • 标准广播数据包限制为 31 字节 数据,扩展广播(BLE 5.0)将限制提高到 251 字节。
  • 可连接广播允许中央设备 连接 到设备,不可连接广播 — 仅单向传输(信标)。
  • 广播间隔影响能耗:1000 ms 间隔下的平均电流比 100 ms 低 10 倍。
  • 扫描响应允许在响应中央设备的请求时发送额外的 31 字节 数据。

BLE 中的广播是什么?

Advertising(广播) — 是定期发送短数据包的过程,BLE 设备通过该过程宣告其存在和可用性。与经典蓝牙不同,经典蓝牙中搜索设备需要几秒钟,而 BLE 广播可以在几毫秒内发现设备,同时消耗最少的能量。

BLE 架构将设备分为两个角色:外设(Peripheral)(广播)和 中央设备(Central)(扫描)。外设发送广播数据包,中央设备扫描信道并决定是否连接。这种非对称模型是 BLE 的关键优势:广播设备仅消耗能量用于发送短数据包,而不是持续监听信道。

广播过程包括三个阶段:广播事件(在所有三个信道上发送数据包)、扫描请求/响应(与中央设备的可选交换)和 连接请求(中央设备发起连接)。每个阶段由链路层级别的蓝牙控制器管理。

广播信道及其用途

BLE 使用 40 个信道 在 2.4 GHz 频段中,其中 37(2402 MHz)、38(2426 MHz)和 39(2480 MHz)专用于广播。三个信道是发现可靠性和带宽之间的折衷:一个信道可能被 Wi-Fi 或其他干扰占用,但设备将在其他两个信道上被发现。

信道 37 位于 Wi-Fi 信道 1 附近,信道 39 位于 Wi-Fi 信道 6 附近,而信道 38 位于它们之间,在最小干扰区域。选择三个信道 保证了即使在密集的无线电环境下也能发现设备 — 例如,在有数十个 Wi-Fi 接入点的购物中心。

外设按顺序在所有三个信道上发送广播数据包 — 这称为 广播事件。中央设备一次扫描一个信道,根据蓝牙控制器中实现的算法在它们之间切换。在没有冲突的情况下,一个广播事件期间的发现概率接近 100%。

广播数据包类型

Bluetooth Core Specification 定义了多种广播协议数据单元(PDU),每种都有自己的用途。主要类型:ADV_IND(可连接无定向广播) — 具有连接能力的标准广播,ADV_NONCONN_IND(不可连接无定向广播) — 仅广播无连接,ADV_SCAN_IND(可扫描无定向广播) — 支持扫描请求,ADV_DIRECT_IND(定向广播) — 针对特定中央设备的广播。

ADV_IND — 最常见的类型,用于大多数 BLE 设备。在收到 ADV_IND 后,中央设备可以发送连接请求并建立连接。ADV_NONCONN_IND 由信标(Beacon)使用:设备广播但不接受连接请求 — 仅单向数据传输。

PDU 类型描述连接扫描响应
ADV_IND标准广播
ADV_DIRECT_IND特定中央设备广播
ADV_NONCONN_IND无连接(信标)
ADV_SCAN_IND支持扫描
ADV_EXT_IND扩展广播(BLE 5.0)

ADV_DIRECT_IND 包含目标中央设备的地址,允许在无需等待扫描的情况下快速建立连接。当设备已经相互"认识"时使用 — 例如,在重新连接到之前配对的智能手机后。这种类型降低了能耗,因为不需要在所有信道上广播。

广播间隔与能耗

广播间隔 — 是连续广播事件之间的时间。规范允许 20 ms 到 10.24 s 的间隔,步长为 0.625 ms。实际间隔计算为固定值和随机延迟(0–10 ms)的总和,这降低了多个广播设备之间冲突的可能性。

间隔的选择是在 发现速度能耗 之间的平衡。在 20 ms 的间隔下,设备将在 20–30 ms 内被发现,但平均电流约为 1–2 mA。在 1000 ms 的间隔下 — 发现将需要最多 1 秒,但平均电流将降至 50–100 µA。对于大多数物联网设备,建议的间隔为 200–1000 ms。

根据 德州仪器应用报告 SWRA478(2024),将广播间隔从 100 ms 增加到 1000 ms 可将能耗降低 90%。如果设备不需要立即被发现(例如,每分钟发送一次数据的温度传感器),最佳间隔为 1000–2000 ms。

另一个参数 — 广播超时 — 设备广播的最长时间。在 iOS 中,外设在后台模式下 180 秒后自动关闭广播。在 Android 中没有这样的限制,但制造商可能会添加自己的限制。

扫描响应:额外数据

扫描响应 — 是外设响应来自中央设备的扫描请求而发送的额外数据包(最多 31 字节)。扫描请求由中央设备在收到广播数据包后发送,如果它在连接前需要更多信息。扫描响应不需要额外广播 — 仅在请求时发送,节省信道资源。

典型数据分布:在 广播 PDU(31 字节)中放置标志(3 字节)、服务 UUID(2–16 字节)和制造商数据(剩余字节)。在 扫描响应 中传输设备的全名(最多 28 字节)和额外的 UUID 或 TX Power Level。这种划分允许中央设备根据 UUID 快速过滤设备,而无需读取扫描响应。

在设计广播数据包时请考虑:如果广播 PDU 中的所有 31 字节都已占用,中央设备将无法确定该设备是否支持扫描响应。建议在广播 PDU 中至少留出 3–5 字节 空闲以指示扫描响应能力。

BLE 5.0 中的扩展广播

扩展广播(BLE 5.0) — 是广播机制的扩展,将广播数据包的大小从 31 字节增加到 251 字节,并添加了新的数据包类型。扩展广播还支持编码 PHY,可将开放区域中的通信范围增加到 1 公里,以及周期性广播,用于同步多个中央设备。

主要创新:ADV_EXT_IND — 扩展广播 PDU,可以在单个数据包中传输最多 251 字节的数据。扩展广播仅使用主信道(37、38、39)来指示完整数据在哪个辅助信道(0–36)上传输。这减少了广播信道的负载并增加了系统的总带宽。

周期性广播 — 一种额外的机制,外设在辅助信道上以固定间隔发送数据,中央设备可以与此序列同步。用于需要定期数据更新的服务 — 例如,音频传输或实时传感器读数。

参数BLE 标准扩展 BLE 5.0
最大数据包大小31 字节251 字节
信道仅 37、38、39+ 辅助 0–36
范围最远 100 米最远 1000 米(编码 PHY)
速度1 Mbps125 kbps – 2 Mbps
周期性

在 iOS 和 Android 中配置广播

iOS(Core Bluetooth) 提供 CBPeripheralManager 来管理广播。广播参数通过 advertisementData 字典设置,使用键 CBAdvertisementDataLocalNameKey(设备名称)、CBAdvertisementDataServiceUUIDsKey(服务 UUID)、CBAdvertisementDataTxPowerLevelKey(功率)。iOS 自动管理广播间隔,不允许手动设置。

swift
import CoreBluetooth

class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startBLEAdvertising() {
        let data: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Beacon",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ],
            CBAdvertisementDataIsConnectable: true
        ]
        peripheralManager.startAdvertising(data)
    }
}

Android(BluetoothLeAdvertiser) 提供更详细的控制。可用:AdvertiseSettings — 设置模式(LOW_POWER、BALANCED、LOW_LATENCY)、发射功率和间隔;AdvertiseData — 数据包内容。Android 在兼容设备上支持扩展广播(BLE 5.0),但这类设备在市场上的份额约为 30–40%。

java
BluetoothLeAdvertiser advertiser =
    BluetoothAdapter.getDefaultAdapter()
    .getBluetoothLeAdvertiser();

AdvertiseSettings settings = new AdvertiseSettings.Builder()
    .setAdvertiseMode(
        AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
    )
    .setTxPowerLevel(
        AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
    )
    .build();

AdvertiseData data = new AdvertiseData.Builder()
    .setIncludeDeviceName(true)
    .addServiceUuid(new ParcelUuid(
        UUID.fromString(
            "0000180F-0000-1000-8000-00805F9B34FB"
        )
    ))
    .build();

advertiser.startAdvertising(
    settings, data, advertiseCallback
);

在开发跨平台 BLE 应用程序时,请考虑差异:iOS 不允许直接控制广播间隔,但保证在所有设备上稳定运行;Android 提供完全控制,但版本和制造商的碎片化可能导致不兼容。建议在两种平台的实际设备上 测试广播

常见问题

可连接广播和不可连接广播有什么区别?

可连接广播(ADV_IND)允许中央设备与设备建立 双向连接。不可连接广播(ADV_NONCONN_IND) — 仅单向数据传输,由信标(Beacon)用于广播标识符而无需连接可能。

一个广播数据包中可以发送多少字节?

标准广播数据包 — 31 字节,扫描响应 — 另外 31 字节。扩展广播(BLE 5.0+)通过使用辅助信道传输数据将限制提高到 251 字节

物联网设备应该选择哪种广播间隔?

对于大多数物联网设备,建议 500–1000 ms。如果需要快速发现(例如,连接耳机) — 20–50 ms。对于数据发送频率较低的传感器 — 1000–2000 ms 以节省能源。

为什么 BLE 使用三个广播信道?

三个信道(37、38、39)是 发现可靠性 和带宽之间的折衷。一个信道可能被 Wi-Fi 占用,但设备将在其他两个信道上被发现。信道 38 位于 Wi-Fi 信道之间的最小干扰区域。

广播如何影响电池寿命?

广播是 BLE 中的主要能耗来源。在 1000 ms 的间隔下,平均电流为 50–100 µA,使设备能够使用 CR2032 电池工作一年。在 20 ms 的间隔下,电流增加到 1–2 mA,将工作时间缩短到几周。

总结

  • 广播 — BLE 设备的发现机制,工作在三个信道(37、38、39)上,数据包大小最多 31 字节。
  • 有五种类型的广播 PDU:ADV_IND、ADV_DIRECT_IND、ADV_NONCONN_IND、ADV_SCAN_IND 和用于 BLE 5.0 的 ADV_EXT_IND
  • 广播间隔从 20 ms 到 10.24 s,直接影响设备发现速度和能耗。
  • 扫描响应根据中央设备的请求提供额外的 31 字节 数据,而不增加外设的能耗。
  • 扩展广播(BLE 5.0)将数据包增加到 251 字节,并通过编码 PHY 支持最远 1 公里的范围。
  • 在 iOS 中,广播通过 CBPeripheralManager 管理,在 Android 中 — 通过具有详细设置的 BluetoothLeAdvertiser。
  • 正确选择广播间隔和数据包类型决定了 BLE 设备的 能效 和电池续航时间。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读