蓝牙基础(二):蓝牙核心系统架构

liwen01 2025.05.01

前言

Bluetooth core system architecture

查看蓝牙核心规范文档,都会看到一个复杂的核心系统架构图,蓝牙核心系统架构图概括了蓝牙的基本工作原理。

对于初学者,初看这图,不可避免有点令人望而却步,这未免太过于晦涩?

本文我们将尝试对它进行拆开分解,以便于能更好地理解蓝牙的基本工作原理。

(一) Host、Controller 与 HCI

在《蓝牙基础(一):蓝牙协议栈与硬件架构方案》中我们有介绍单模与双模蓝牙。其实不管是单模还是双模蓝牙,它们的协议栈都是采用了分层架构的设计。

蓝牙分层架构涉及的核心结构是:

  • Host(主机)
  • Controller(控制器)
  • HCI(Host Controller Interface,主机控制器接口)

(1) 蓝牙 Host(主机)

Host 运行在主处理器上(如 MCU、Linux、Windows 等),主要负责上层协议和应用逻辑。

(2) 蓝牙 Controller(控制器)

Controller 通常集成在一个蓝牙芯片中(有时称为 Bluetooth SoC),负责底层无线通信功能。

(3) HCI(Host Controller Interface)

HCI 是 Host 和 Controller 之间的 标准接口协议 ,它定义了Host 、Controller 两者之间如何交换命令、事件和数据。

常见的通信方式有:UART、USB、SPI、SDIO 等

(4) Host、Controller、HCI 之间的关系

Host、Controller、HCI 之间的关系、可以简单理解为:

Host 是 大脑 ,Controller 是 身体 ,HCI 是它们之间的 通信通道

在蓝牙鼠标中,插入电脑的那个蓝牙USB适配器是Controller,PC机系统是Host,它们通过USB HCI协议进行通信。

(二) Resource Manager

在蓝牙协议栈的层次结构中,HCI 是主机 Host 和控制器 Controller 之间的通信通道。

这里有语音数据(实时性要求高),也有数据传输(文件、通知、控制命令等)。

数据类型主要有:SCO、ACL、C/E 等

  • HCI Command Packet(Host → Controller)
  • HCI Event Packet(Controller → Host)
  • HCI ACL Data Packet(数据传输)
  • HCI SCO Packet(用于语音)

有这么多数据要进行收发控制,那又是谁来做数据收发的优先级、流量、拥塞控制呢?

这就引入了主机的 Resource Manager (资源管理器)与控制器中的Baseband Resource Manager(基带资源管理器)。

(1) Resource Manager (资源管理器)

Resource Manager 是蓝牙协议栈中用于整体资源协调与管理的模块,负责在协议栈的不同层之间协调有限的系统资源。

  • 所在层级:主机协议栈层(Host)或控制器接口层
  • 管理对象:高层资源,如连接、内存、协议模块调度
  • 作用范围:跨模块调度、资源分配、策略控制
  • 典型用途:多连接管理、Host Controller接口管理、QoS管理

(2) Baseband Resource Manager (基带资源管理器)

Baseband Resource Manager 是蓝牙控制器中专门用于管理基带层资源的模块。基带是蓝牙协议栈的底层部分,直接控制无线链路的建立与维护。

  • 所在层级:控制器内部(Controller)
  • 管理对象:低层资源,如跳频、时间片、基带硬件
  • 作用范围:精细控制蓝牙物理层时序与硬件调度
  • 典型用途:多个基带活动时的时隙调度、链路维持

(3) 应用举例

假设一个蓝牙设备既要进行语音传输(SCO连接,实时性要求高),又在做数据同步(ACL连接,如文件或通知)。

Resource Manager

  • 从全局角度分配资源:决定哪些连接可以共存、各自的优先级
  • 管理协议栈内的共享资源:如内存缓冲区、连接控制块等
  • 做策略级决策:比如为了语音清晰度,优先保障SCO连接,限制ACL带宽

Baseband Resource Manager

  • 负责底层时间调度与频率控制:在微秒级别分配SCO和ACL的时隙
  • 解决时间冲突:协调不同连接在物理层的发送/接收时机,避免碰撞
  • 控制基带硬件资源使用:如跳频、同步窗口、接收缓冲区等

(4) C-plane 与 U-plane

在蓝牙核心规范中,蓝牙各层次间的数据分为两种:

  • C-plane(Control Plane)
  • U-plane(User Plane)

C-plane: 主要用于处理蓝牙协议栈中的控制信息,包括设备管理、链路管理、信道控制、流量调度、功率控制、设备发现等。

U-plane: 主要用于数据传输,涉及音频、文件传输、串口通信等用户数据流。

如果要对数据流进一步细分,就可以看到下图的数据流。白色表示C-plane,红色表示U-plane。

这就出现了 Link Manager、 Link Controller 与 L2CAP 模块

(1) L2CAP

L2CAP(Logical Link Control and Adaptation Protocol,逻辑链路控制与适配协议) 主要起到适配和复用的作用。

它工作在 Host 层,用于不同高层协议(如 ATT、SDP、RFCOMM)与底层控制器之间的数据传输。

它的主要功能有:

(a) 协议多路复用

L2CAP 支持多个协议共用一个物理连接(Logical Link Multiplexing)

比如:ATT 和 SDP 可以在同一连接上传输数据,L2CAP 负责区分这些数据流。

(b) 数据分片与重组(Segmentation & Reassembly, SAR)

蓝牙底层控制器只能处理较小的数据包(如 27字节 MTU)

L2CAP 允许上层发送大数据(如 512字节),并负责:

  • 发送端 将其分片(Segmentation)
  • 接收端 将其重组(Reassembly)

(c) 协议适配

将高层协议的数据适配到底层连接类型,比如:

  • 基于 ACL(Asynchronous Connection-Less)链路
  • LE(低功耗蓝牙)使用的是 LE-U(LE-U Logical Link)

(d) QoS 支持(BR/EDR 模式)

提供服务质量(Quality of Service)参数(在经典蓝牙中用得多)

简而言之:L2CAP 就是蓝牙协议栈中的适配器和路由器,帮你分发数据、组包、拆包,还能控制多个协议通道共享一条蓝牙连接。

Link Manager 主要负责 蓝牙链路的建立、维护和管理 ,它通过 Link Manager Protocol(LMP) 与远程设备的 Link Manager 进行交互,控制链路的状态和特性。

LM 主要功能及工作原理

LM 通过 LMP(Link Manager Protocol) 交换控制命令,完成各种蓝牙连接管理任务。

(a)连接建立

  • 设备 A(主机)向设备 B(从机)发送 LMP_connection_request 请求。
  • 设备 B 确认连接,返回 LMP_accepted ,然后进入Paging(寻呼)过程完成连接。
  • 如果设备之前配对过,还需要进行身份认证(Authentication)。

(b)身份认证与加密

  • 设备 A 发送 LMP_authentication_request 进行身份验证。
  • 使用 E1/E3 密钥生成函数 计算认证密钥。
  • 设备 B 返回认证结果(通过或失败)。
  • 如果启用了加密,则使用 E0 加密算法 对数据进行加密。

(c)角色切换 蓝牙网络支持主从角色切换

  • 主设备(Master)控制通信时序。
  • 从设备(Slave)按照主设备分配的时隙接收/发送数据。

设备可以通过 LMP_switch_request 请求角色交换。

(d)功耗控制LM 提供了 3 种低功耗模式:

  • Hold Mode:暂停数据传输,但保持连接。
  • Sniff Mode:设备在特定时间间隔内监听数据,减少功耗。
  • Park Mode:设备释放活动状态,但仍然保持同步。

(e)SCO/eSCO 链路管理

LM 负责 SCO(同步连接) 的分配,如蓝牙语音通话(HFP)。 使用 LMP_setup_synchronous_connection 配置 SCO 连接参数

Link Controller(LC)直接与 基带(Baseband) 和 物理层(RF) 交互,负责执行 LM 发送的指令,并处理实际的数据包交换。

LC 主要功能及工作原理

(a)跳频同步

蓝牙采用 FHSS(跳频扩频) 技术,每 625μs 进行一次跳频,避免干扰。

LC 负责计算频率跳变序列,并确保所有连接设备在相同的频率上进行通信。

(b)数据传输

LC 负责封装数据包,并通过基带层发送到 RF。 支持两种数据链路:

  • ACL(异步连接链路):用于数据传输(如文件传输)。
  • SCO(同步连接链路):用于语音数据传输(如蓝牙通话)。

(c)数据校验

LC 负责数据包的错误检测与纠正,使用:

  • CRC(循环冗余校验):检测数据包是否损坏。
  • FEC(前向纠错码):提高数据可靠性。
  • ARQ(自动重传请求):如果数据包丢失,则请求重传。

(d)低功耗模式

LC 负责执行 LMP 指令,让设备进入 Sniff、Hold 或 Park Mode,减少能耗.

(4) LM 与 LC 的区别

  • LM 负责高级链路管理,如身份验证、配对、角色切换。
  • LC 负责低级数据传输,如数据封装、跳频、错误校验。
  • LM 通过 LMP 协议 进行控制,而 LC 依赖 基带协议 完成数据交换。

(四) Device Manager 与 GAP

(1) Device Manager (设备管理)

Device Manager 是控制器中的关键控制模块,负责连接控制、配对协助、设备发现等核心操作,是 HCI 与底层链路管理之间的桥梁。

Device Manager 的主要功能(基于 Controller 架构)

(a) 管理设备连接(Connection Management)

  • 处理来自 Host 的连接请求(Connect、Disconnect)
  • 发起连接或接受连接请求
  • 管理多个连接的状态(连接、断开、重新连接)

(b) 执行蓝牙发现与名称获取流程

  • 执行 Inquiry(发现)流程,找到周围的蓝牙设备
  • 执行 Remote Name Request 获取设备名称
  • 把结果通过 HCI 上报给 Host 层(例如 GAP 模块)

(c) 配对和认证触发控制虽然安全管理(SMP)主要在 Host 层,但 Controller 层的 Device Manager 负责:

  • 启动配对流程(Pin Code Request、IO Capability Request)
  • 管理 Link Key(密钥)缓存、保存与恢复

与 Link Manager 协作完成加密启动、身份验证等过程

(d) Host 层的接口桥梁(HCI)

  • 接收 Host 层发来的 HCI 命令(如创建连接、断开连接)
  • 将 Controller 中的事件上报给 Host(如连接完成事件、配对完成事件)

(2) GAP(Generic Access Profile 通用访问规范)

GAP(Generic Access Profile) 是蓝牙协议栈中的一种通用访问规范 ,它不属于某一个独立的协议,而是定义了蓝牙设备之间如何互相看到连上彼此的通用流程和规则。

GAP 的主要功能有:

(a) 设备角色定义

GAP 定义设备在通信过程中的4种角色

角色 用途说明
Broadcaster 主动广播数据,不接受连接(如 iBeacon)
Observer 被动监听广播,不发起连接
Peripheral 可被连接设备,广播自身信息
Central 发起连接的设备(如手机、网关)

常见工作模式是:Peripheral 与 Central ,比如我们手机与蓝牙耳机。

(b) 设备发现(Discovery)

  • 扫描周围广播(advertising)设备
  • 过滤、解析广播数据(如设备名、UUID、服务)
  • 提供扫描结果给上层应用

GAP 负责调用控制器执行 BLE 扫描命令,然后通过 HCI 返回扫描结果。

(c) 广播与扫描(Advertising & Scanning)

GAP 控制以下两个重要过程:广播与扫描

Advertising(广播)

  • Peripheral/Broadcaster 发送广播包
  • GAP 负责配置广播参数,如:广播间隔、内容、类型

Scanning(扫描)

  • Central/Observer 接收广播
  • GAP 负责配置扫描行为,如:扫描窗口、间隔、主动扫描、被动扫描、过滤策略

(d) 连接管理(Connection Establishment)

  • Central 向 Peripheral 发起连接请求(通过 GAP 接口发出连接命令)
  • GAP 维护连接状态(连接中、已连接、断开)

GAP 不执行连接过程本身,而是通过 HCI 让 Controller 中的 Device Manager、Link Manager 去处理。

(e) 配对模式与安全级别设置

  • 决定是否允许配对、是否需要加密
  • 设置 I/O 能力(无输入、数字键盘、显示器等)
  • 选择配对模式(Just Works、Passkey、OOB 等)
  • GAP 会协同 Security Manager(SMP)工作来完成配对流程

(f) 本地设备属性管理

GAP 还提供接口设置和读取本地设备信息:

  • 本地设备名称(Device Name)
  • 外观(Appearance)
  • 连接参数(Interval、Latency、Timeout)
  • 角色切换、白名单管理等

GAP 是蓝牙通信中的"前台经理",负责发现设备、建立连接、定义角色、管理广播和扫描行为,是最核心的 Host 层模块之一。

(五) BR/EDR 、BLE 双模架构

在上面介绍的蓝牙数据流和蓝牙协议栈模块中,有些属于经典蓝牙模块,有些属于BLE 。

(1) 物理层(PHY)

模块 BR/EDR Controller LE Controller
PHY 类型 BR/EDR Radio(79 个 1MHz 信道) LE Radio(40 个 2MHz 信道)
调制方式 GFSK(BR)、π/4-DQPSK(EDR) GFSK(可选编码,支持远距/低速)

(2)Link Controller 与 Link Manager

功能区域 BR/EDR BLE
Link Controller 处理同步(SCO/eSCO)与异步(ACL)链路 处理 LE 连接和广播/扫描链路
Link Manager 支持多种链路管理命令(角色切换、加密等) 专为低功耗优化,简化链路管理操作

(3) 数据通道的区别

通道类型 BR/EDR 支持 BLE 支持
ACL 支持 支持
SCO / eSCO 支持(用于音频) 不支持(用 ISO 替代)
ISO(ISOC 通道) 不支持(传统协议) 支持(BLE Audio/LE Audio)

(4) BLE 中的ISO/AL 模块

BLE 控制器新增了 ISO/AL(Isochronous Adaptation Layer) ,是 BLE Audio 所必需的:

  • 提供面向音频的低延迟、可预测传输
  • 支持广播音频(BIS)和连接音频(CIS)
  • 是 5.2 BLE Audio 架构中新引入的专用模块

介绍到这里,再回头看最开头提的 Bluetooth core system architecture 就清晰很多了。

结尾

这里主要介绍了蓝牙核心系统架构的各层次结构、数据流、工作原理。下一章将详细介绍蓝牙控制器部分的工作原理。

------------------End------------------ 如需获取更多内容 请关注 liwen01 公众号