蓝牙基础(二):蓝牙核心系统架构是什么?

摘要:liwen01 2025.05.01 前言 Bluetooth core system architecture 查看蓝牙核心规范文档,都会看到一个复杂的核心系统架构图,蓝牙核心系统架构图概括了蓝牙的基本工作原理。 对于初学者,初看这图,不
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:主要用于数据传输,涉及音频、文件传输、串口通信等用户数据流。 (三) L2CAP 、Link Manager 与 Link Manager 如果要对数据流进一步细分,就可以看到下图的数据流。白色表示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 就是蓝牙协议栈中的适配器和路由器,帮你分发数据、组包、拆包,还能控制多个协议通道共享一条蓝牙连接。 (2) Link Manager(LM,链路管理器) 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 连接参数 (3) Link Controller(LC,链路控制器) 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 ControllerLE Controller PHY 类型 BR/EDR Radio(79 个 1MHz 信道) LE Radio(40 个 2MHz 信道) 调制方式 GFSK(BR)、π/4-DQPSK(EDR) GFSK(可选编码,支持远距/低速) (2)Link Controller 与 Link Manager 功能区域BR/EDRBLE 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公众号