理解蓝牙技术及其协议栈结构
介绍
在物联网(IoT)领域,蓝牙技术因其低功耗和易用性而成为连接设备的首选无线通信协议之一。ESP32 支持双模蓝牙 4.2,并且已经获得双模蓝牙 4.2 认证和蓝牙 LE 5.0 认证
一、蓝牙技术概述
什么是蓝牙?
蓝牙是一种用于短距离数据交换的无线技术标准。它在 2.4GHz ISM(工业、科学和医疗)频段上工作,使用跳频技术以提高抗干扰能力。蓝牙协议分为以下两种类型:
- 经典蓝牙(Bluetooth Classic):适用于大数据传输,例如音频流传输。
- 蓝牙低功耗(Bluetooth Low Energy, BLE):适用于小数据包传输,强调低功耗,是物联网设备的首选技术。
够同时支持经典蓝牙(Bluetooth BR/EDR)和低功耗蓝牙(Bluetooth LE)即双蓝牙模式
二、蓝牙协议栈简介
蓝牙技术通过 协议栈 实现其复杂的功能,协议栈是一组分层的软件框架,涵盖了从底层硬件通信到高层应用的所有功能。以下是 ESP32 提供的蓝牙协议栈结构:
ESP32 蓝牙协议栈结构图
ESP32 的蓝牙协议栈分为四层:应用层(Applications)、配置文件层(Profiles)、主机层(Hosts) 和 控制器层(Controller)。其中最主要的是 主机(Host) 和控制器(Controller) 这两大板块。这两大部分通过HCI(Host Controller Interface)相互通信。控制器负责处理底层硬件相关的任务,如物理链路管理、基带处理等;而主机则负责上层协议的实现,比如逻辑链路控制、服务发现等与软件相关。
控制器(Controller)
这张图展示了蓝牙控制器的架构及其各个组成部分,
-
物理层 (PHY, Physical Layer) 主要负责在物理信道上收发蓝牙数据包
-
链路控制 (LC, Link Controller) 根据当前物理通道、逻辑通道以及逻辑传输的参数将数据有效载荷组装成蓝牙包,实现流控、应答、重传等机制。
-
基带资源管理 (BRM, Baseband Resource Manager) 管理射频资源,确保资源的有效分配和使用。
-
设备管理 (DM, Device Manager) 控制蓝牙设备的通用行为,包括搜索和连接到其他蓝牙设备,控制本地蓝牙设备的连接发现模式(可连接、可发现),控制本地蓝牙设备属性(如设备名称、连接密钥等)。
-
链路管理 (LM, Link Manager) 负责创建、修改、释放蓝牙逻辑连接,维护蓝牙设备之间物理连接的参数,通过链路管理协议(LMP)和链路层协议(LL)完成。
-
主机控制器接口 (HCI, Host Controller Interface) 作为主机与控制器之间的桥梁,使主机能够向控制器发送命令并接收来自控制器的信息。支持的硬件通信协议:包括USB、UART、SDIO等。
主机(Host)
这张图展示了蓝牙主机(Host)的软件实现架构,特别是针对低功耗蓝牙(BLE)的协议栈。
-
L2CAP (Logical Link Control and Adaptation Protocol) 负责创建、管理、释放通道,统一管理调度通道上传递的分组数据单元(PDU),提高服务质量(QoS),对HCI层进行传输流控、重传等机制。
-
SDP (Service Discovery Protocol) 发现其他蓝牙设备提供的profile以及profile特性,对自己感兴趣的蓝牙profile发起连接动作。
-
SMP (Security Manager Protocol) 基于专用的L2CAP通道,用于生成加密和识别用的密钥。
-
ATT 设备的数据库,由属性句柄(属性表下标索引),属性类型(由UUID定义),属性值以及访问权限组成
-
GAP (Generic Access Profile) 控制本地蓝牙设备的连接发现模式(可连接、可发现),控制本地蓝牙设备属性(如设备名称、连接密钥等)。
-
GATT (Generic Attribute Profile) 定义了两个角色:服务器(GATTS)和客户端(GATTC)。服务器提供数据,客户端访问数据。
总结
参考:
【ESP32_8266_BT篇(一)】蓝牙基础