news 2026/6/19 16:22:09

le audio broadcast source的周期/BIG广播流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
le audio broadcast source的周期/BIG广播流程

在无线音频的世界里,一场静默却深刻的革命正在进行。

它,就是LE Audio。

这不仅仅是一次技术迭代,而是从底层重新定义声音如何被创造、传输和体验的范式转移。其复杂性令人敬畏——它并非单一技术,而是一套精密的生态系统:全新的LC3编解码器以超凡效率重塑音质与功耗的平衡,多重串流音频让真无线立体声达到前所未有的稳定与同步,而音频广播功能则打破了“一对一”连接的百年窠臼,让声音如电台般自由播撒。

然而,正是这种复杂性,构成了我们必须深入学习它的不可辩驳的理由。未来的声音图景将由它绘制:从下一代真无线耳机、无障碍助听设备到公共场所的沉浸式音频导览、多语言广播,乃至元宇宙中清晰无缝的语音交互。不了解LE Audio,将意味着在即将到来的音频浪潮中失去对话的基石。

这不仅仅关乎技术本身,更关乎我们如何连接彼此,如何感知世界。让我们共同开启这段探索之旅,揭开LE Audio的复杂面纱,看清它为何必将成为未来数年里,每一个科技从业者、音频爱好者乃至普通用户都无法忽视的关键命题。

接下来的系列文章,我们将逐步拆解这座精妙的技术大厦。

同时我也录制了一系列的Le audio视频,有兴趣的可以咨询,我会带领你们入门Le audio!翻过大山,眼下皆是风景!!!

------------------------------------------------------------------------------------------------------------------------------------------

视频链接:https://item.taobao.com/item.htm?id=1001969040805&mi_id=000032T4qZX9WZoRwX6YbxlNUaZOfOI6XoxDx0jxsfnwlEc&spm=a21xtw.29178619.0.0

Le Audio文章目录:

还在为蓝牙BLE Audio的学习苦恼吗?安排下,让你一文彻底了解Le Audio蓝牙低功耗音频的技术-CSDN博客

---------------------------------------------------------------------------------------------------------------------------------

一. 周期广播流程

我们来拆解下流程,分别介绍下以下几个command

1. HCI_LE_Set_Extended_Advertising_Parameters 指令介绍

该命令是蓝牙 5.0引入的 HCI 命令(Opcode0x0036),用于配置扩展广告(Extended Advertising)的参数。与传统的LE_Set_Advertising_Parameters相比,它支持更多的广告类型、更灵活的 PHY(1M、CODED、2M)、更大的数据载荷以及多个广告集。

参数

长度

说明

Advertising_Handle

1 octet

广告集句柄,范围0x00–0xEF。用于标识要配置的广告实例(可同时运行最多 240 个广告集)。

Advertising_Event_Properties

2 octets

位掩码,定义广告事件的属性。常用取值(Bit 0~15):
0x0001:可连接扫描(Connectable + Scannable)
0x0002:可扫描(Scannable)
0x0004:可定向(Directed)
0x0008:高通广播(High Duty Cycle)
0x0010:传统广告(Legacy)
0x0020:匿名广告(Anonymous)
0x0040:包含 TX 功率(Include Tx Power)

Primary_Advertising_Interval_Min

3 octets

主广告间隔最小值,单位0.625 ms范围0x0000200xFFFFFF,对应 20 ms ~ 10485.76 s。实际间隔为Min ≤ 实际 ≤ Max

Primary_Advertising_Interval_Max

3 octets

主广告间隔最大值(同上,通常设置 Min = Max 以获得固定隔)。

Primary_Advertising_Channel_Map

1 octet

主广告使用的信道(37/38/39),位掩码:
0x01= 37 信道
0x02= 38 信道
0x04= 39 信道
默认通常为0x07(全部三个信道)。

Own_Address_Type

1 octet

本地设备地址类型:
0x00:公开地址
0x01:随机地址
0x02:可解析私有地址(RPA,Controller 生成)
0x03:可解析私有地址(Host 生成)

Peer_Address_Type

1 octet

对端地址类型(仅定向广告有效):
0x00:公开地址
0x01:随机地址
0x02:可解析私有地址(仅当使用定向广告时)

Peer_Address

6 octets

对端蓝牙设备地址(定向广告的目标地址)。非定向广告时可全填0

Advertising_Filter_Policy

1 octet

过滤策略,控制响应哪些设备的扫描请求/连接请求:
0x00:接受任何设备的扫描/连接
0x01:仅接受白名单中的设备
0x02:仅接受所有设备的扫描请求,但仅接受白名单设备的连接
0x03:仅接受白名单设备的扫描请求,但接受所有设备的连接
• 更高值用于扩展广告策略,参考规范。

Advertising_TX_Power

1 octet

广告发射功率(单位 dBm,有符号整数,范围 -127 ~ +20)。常用特殊值:
0x7F:由 Controller 自动选择最优功率(推荐)
• 其他值:实际发射功率(需 Controller 支持)。

Primary_Advertising_PHY

1 octet

主广告所采用的 PHY:
0x01:LE 1M PHY
0x02:LE CODED PHY(长距离)
0x03:LE 1M PHY 与 LE CODED PHY 的混合(实际由Controller 选择)
注意:扩展广告的主通道依然在 37/38/39 上,但可使用 CODED PHY。

Secondary_Advertising_Max_Skip

1 octet

辅助广告同步时最大可跳过的 AUX 包数量(0~0xFF)。通常设为0x00,表示不跳过;用于设备快速同步到辅助广告链路上。

Secondary_Advertising_PHY

1 octet

辅助广告所使用的 PHY:
0x01:LE 1M PHY
0x02:LE CODED PHY
0x03:LE 2M PHY
扩展广告的数据包将在辅助信道上以该 PHY 发送。

Advertising_SID

1 octet

广告集 ID(0~0x0F),用于在扫描响应中标识广告集。同一设备的不同广告集可以设置相同的 SID,便于扫描端过滤。

Scan_Request_Notification_Enable

1 octet

是否使能扫描请求通知(通过LE Scan Request Received

事件上报):

0x00:禁用通知
0x01:使能通知

2. LE Set Periodic Advertising Parameters

对于Le audio我们先来介绍V1了哈,就不介绍V2了

  • Advertising_Handle(广播句柄)
    • 含义:一个0x00至0xEF之间的标识符。这是关联扩展广播集与周期性广播集的唯一纽带
    • 关键点:你必须先使用LE Set Extended Advertising Parameters命令创建一个具有相同Advertising_Handle的扩展广播集。周期性广播集是其附属。
  • Periodic_Advertising_Interval_Min/Max(最小/最大广播间隔)
    • 含义:定义广播事件之间的时间间隔范围,单位为0.625毫秒。
    • 关键约束Min必须 ≤Max。控制器会在此范围内选择一个最优值。对于音频等实时流,此值通常非常小(如 7.5 ms ~ 10 ms)。
  • Periodic_Advertising_Properties(广播属性)
    • 含义Include TxPower in the advertising PDU:如果第6位被设置(即值为1),则表示广播数据包中应包含传输功率值。传输功率值通常用于指示设备发送广播数据时的功率级别,这有助于接收方估计信号强度和可能的连接质量。

3. HCI_LE_Set_Extended_Advertising_Enable 指令介绍

该命令(Opcode0x0039)是蓝牙 5.0 引入的 HCI 命令,用于启用或禁用一个或多个扩展广告集(Extended Advertising Sets)。通过该命令,可以同时控制多个广告实例的启动/停止,并且可以为每个广告实例指定运行时长(Duration)和最大发送事件数。

参数

长度

说明

Enable

1 octet

启用或禁用广告:
0x00:禁用广告集(根据后续指定的句柄列表停止)
0x01:启用广告集(根据后续指定的句柄列表启动)
• 其他值保留。

Num_Sets

1 octet

指定本次操作的广告集数量,即后续参数中Advertising_Handle

数组的长度。取值范围0x010x80

(最多 128 个集)。当Enable = 0x00(禁用)时,可以设为0x00

表示停止所有正在进行的广告(忽略后续数组)。

Advertising_Handle[i]

1 octet × N

广告集句柄数组(长度为Num_Sets)。每个句柄由LE_Set_Extended_Advertising_Parameters命令分配或指定(有效范围0x00–0xEF)。

Duration[i]

2 octets × N

每个广告集的运行时长,单位10 ms。取值范围:0x0001

0xFFFF(即 10 ms ~ 655.35 s)。
• 当Duration = 0x0000时,表示无限期运行,直到被禁用。
• 控制器会在广告集启动后持续发送广告,直到达到Duration时间;超时后自动停止该广告集。
• 如果同时启用多个广告集,它们的计时器独立运行。

Max_Extended_Advertising_Events[i]

1 octet × N

每个广告集在Duration时间内最多可发送的扩展广告事件数
0x00:无限制(只要时间未到,就一直发送)。
0x01~0xFF:限制发送的事件数量。控制器会在达到数量或超时(两者先到者)后停止广告。
• 该参数适用于精细控制广告广播的频次(例如只发送固定次数的定向广告后自动停止)。
• 若Duration = 0x0000Max_Events = 0,广告无限运行。

4. LE Set Periodic Advertising Enable

  • Enable(使能标志)
    • 0x00:Disable(禁用):停止该广播集的周期性广播。
    • 0x01:Enable(启用):开始周期性广播。
    • 这是指令的核心开关,直接决定周期性广播是否活跃。
  • Advertising Handle(广播句柄)
    • 范围:0x00 到 0xEF(与扩展广播集一致)。
    • 标识要启用或禁用的具体广播集
    • 必须与之前使用LE Set Extended Advertising Parameters创建的广播集句柄匹配。

5.LE Set Periodic Advertising Data

  • Advertising Handle(广播句柄)
    • 这是一个8位的标识符(0x00 - 0xEF)。
    • 在启用扩展广播时,一个控制器可以同时管理多个“广播集”。每个广播集都有一个唯一的Advertising Handle
    • 这个指令通过指定Advertising Handle来明确操作的是哪一个广播集的数据。
  • Operation(操作)
    • 指定此次指令要执行的操作。
    • 0x00:保留
    • 0x01:Intermediate Fragment(中间片段):表示本次设置的数据不是完整的广播数据,而是一个片段。用于数据长度超过单个HCI指令容量时的分片传输。
    • 0x02:First Fragment(第一个片段):表示这是分片传输的第一个数据块。
    • 0x03:Last Fragment(最后一个片段):表示这是分片传输的最后一个数据块。
    • 0x04:Complete Data(完整数据):表示本次传输的数据就是完整的广播数据,无需分片。这是最常用的操作。
  • Advertising Data(广播数据)
    • 这就是你想要通过周期性广播发送出去的实际数据内容。
    • 数据的格式遵循AD Structure的规则。每个AD Structure由一个长度字节、一个AD Type(数据类型)字节实际数据组成。
    • 例如,可以包含:
      • 本地名称(AD Type: 0x090x08)
      • 广播标志(AD Type: 0x01)
      • 16位服务UUID列表(AD Type: 0x03)
      • 制造商自定义数据(AD Type: 0xFF) —— Beacon常用
      • 发射功率(AD Type: 0x0A)
    • 数据总长度不能超过控制器支持的最大值(对于扩展广播,最多251字节)。

二. BIG/BIS流程

1. HCI_LE_Create_BIG

HCI_LE_Create_BIG命令是蓝牙5.2核心规范为支持 LE Audio 而引入的关键命令。它负责创建一个广播等时流(Broadcast Isochronous Group, BIG),这也是实现蓝牙广播音频(Auracast™)的基础。

BIG 由一个或多个广播等时流(Broadcast Isochronous Stream, BIS)组成,可以将音频数据以一对多的方式广播给无数个接收者,是公共场合(如机场、健身房、餐厅)音频共享的核心技术。

该命令是主机端(Host)用来配置和控制控制器端(Controller)的,建立广播音频所需的所有参数都在这里指定。

参数

大小

描述

BIG_Handle

1 octet

BIG的唯一标识符,由主机(Host)自行分配和管理-2

,用于后续控制该BIG。取值范围:0x000xEF

Advertising_Handle

1 octet

关键:关联到一个已配置好的周期性广播(Periodic Advertising)的句柄。广播数据将搭载在这个周期性广播的通道里发送出去。

Num_BIS

1 octet

该BIG中包含的BIS(音频流)总数。一个BIG最多可包含31个BIS。

SDU_Interval

3 octets

服务数据单元(SDU)的间隔,单位为微秒(μs)。它决定了发送一个SDU(通常是编码后的音频帧)的时间频率。

Max_SDU

2 octets

单个SDU的最大大小,单位为字节(Octets)。例如,LC3音频编码在48kHz下可能设置为 ~155字节。

Max_Transport_Latency

2 octets

最大传输延迟,单位为毫秒(ms)。这定义了从数据准备好发送到接收端成功接收到的最长时间。

RTN (Retransmission Number)

1 octet

每条PDU的重传次数这是一个建议值,控制器(Controller)可能根据信号质量调整。

PHY

1 octet

BIS使用的物理层(PHY)模式,是位掩码,支持设定多种模式:0x01= LE 1M,0x02= LE 2M,0x04= LE Coded。

Packing

1 octet

BIS子事件的排列方式,当BIG中包含多个BIS时生效

0x00=顺序0x01=交错这是一个建议值

Framing

1 octet

BIS数据PDU的格式和模式0x00=未分帧0x01=分帧这是一个建议值

Encryption

1 octet

加密开关:0x00=不加密,0x01=加密。启用加密后,BIG的数据会被保护。

Broadcast_Code

16 octets

广播密码。与Encryption配合使用,当Encryption

启用时,接收端必须提供完全一致的密码才能解密和收听

2.HCI_LE_Setup_ISO_Data_Path

是蓝牙核心规范(Bluetooth Core Specification)中用于 LE Audio(低功耗音频) 场景的关键 HCI 命令。

它的作用是:在已经建立好的等时信道(ISO Channel,即 CIS 或 BIS)上,为主机(Host)和控制器(Controller)之间建立一条等时数据路径,同时可以指定路径所用的编解码器(Codec)及详细配置。

可以理解为:先建好“管道”(等时连接),再用这个命令为管道铺设“数据线”并决定“怎么编码”。

Connection_Handle(2 字节)

  • 含义:指定目标等时信道(CIS 或 BIS)的连接句柄。
  • 取值范围0x00000x0EFF(有效句柄范围)
  • 要求:该连接必须已经建立完成,否则命令会失败。

Data_Path_Direction(1 字节)

  • 含义:数据路径的方向(从控制器的角度定义)。
  • 取值
    • 0x00输入方向(Input)– 数据从主机 → 控制器(通常用于发送 / TX)
    • 0x01输出方向(Output)– 数据从控制器 → 主机(通常用于接收 / RX)
  • 约束:同一个连接句柄的同一个方向,只能建立一条数据路径。重复执行会失败。

Data_Path_ID(1 字节)

  • 含义:指定数据在主机与控制器之间传输所使用的物理接口。
  • 取值
    • 0x00:标准 HCI 传输层(最常用)
    • 0x010xFE:厂商自定义路径(如 PCM、I2S 等)
    • 0xFF:保留

Codec_ID(5 字节)

  • 含义:标识要使用的编解码器。
  • 结构
    • 第 1 字节:编解码器类型
    • 第 2-3 字节:公司 ID(Company ID,小端序)
    • 第 4-5 字节:厂商自定义编解码器 ID

Controller_Delay(3 字节)

  • 含义:控制器端的固定处理延迟,单位是微秒 (μs)
  • 解释:数据从控制器接口到达空中(或反向)的固定延时。
  • 类型:24 位无符号整数。不确定时可填0

Codec_Configuration_Length(1 字节)

  • 含义:紧跟在后面的Codec_Configuration数据的字节长度。
  • 取值范围0x000xFF
  • 注意:如果没有额外配置,填0x00

Codec_Configuration(可变长度,长度由上一字段决定)

  • 含义:编解码器的具体配置参数(OCTETS)。
  • 内容格式:由Codec_ID指定的编解码器决定。例如 LC3 编码可以配置采样率、帧时长等。
  • 长度要求:必须等于Codec_Configuration_Length

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 18:03:52

Everything:基于USN日志的Windows极速文件名搜索工具原理与实战

1. 项目概述:为什么你需要一个“秒搜”工具?如果你在Windows上找文件,还在忍受资源管理器那慢吞吞的搜索速度,每次等进度条都等到心焦,那今天这个工具绝对能改变你的工作习惯。我说的就是Everything,一个由…

作者头像 李华
网站建设 2026/6/17 21:27:51

AI+Python驱动的高光谱遥感全链路解析与典型案例

覆盖了从数据获取到行业应用的全流程核心技术,包括卫星、航空、地面数据的获取与处理,辐射定标与大气校正的完整流程,基于Scikit-learn的机器学习分类与回归,以及基于PyTorch的深度学习模型构建与训练。第一部分:高光谱…

作者头像 李华
网站建设 2026/6/17 16:31:14

RuoYi-Vue:42k Star 的 Java 快速开发框架,别再从零搭后台了

引言:企业级快速开发的市场需求根据 2026 年中国开发者生态报告,超过 85% 的企业级 Java 项目采用开源快速开发框架,其中 Spring Boot 生态占据主导地位。在传统开发模式下,一个完整的企业级后台管理系统需要 2-4 周 的基础搭建时…

作者头像 李华
网站建设 2026/6/16 5:06:01

MPC860 SMC串口控制器:从原理到实战的深度配置指南

1. MPC860 SMC串口控制器:从手册到实战的深度解析在嵌入式系统开发,尤其是网络通信设备领域,MPC860 PowerQUICC系列处理器是一个绕不开的经典。其内部集成的通信处理器模块(CPM)功能强大,而串行管理控制器&…

作者头像 李华