1 ESP32 蓝牙架构学习
1.1 蓝牙
-
蓝牙是一种短距通信系统。
-
蓝牙系统分为两种不同的技术(ESP32都支持):
- 经典蓝牙(Classic Bluetooth)
- 蓝牙低功耗(Bluetooth Low Energy)
-
整体结构:

分为控制器(Controller)和主机(Host)两大部分。
- 控制器
- 组成:包括PHY、 Baseband、 Link Controller、 Link Manager、 Device Manager、 HCI 等模块。
- 功能:硬件接口管理、链路管理等。
- 主机
- 组成:包括了了 L2CAP、 SMP、 SDP、 ATT、 GATT、 GAP 以及各种规范。
- 功能:构建了了向应⽤用层提供接⼝口的基础,⽅方便便应⽤用层对蓝⽛牙系统的访问。
- 特征:可以与控制器在同一宿主或不同宿主。
- 控制器
-
由于主机的特征,ESP32 有几种典型应用场景:
- 1 宿主相同(ESP-IDF默认):控制器(ESP32 Bluetooth Controller)与主机(ESP32 BLUEDROID )。
- 2 宿主不同:控制器(ESP32 Bluetooth Controller)与主机(PC/Phone/Pad )。
- 3 宿主不同:与2类似,但是用于BQB(或其它认证)的控制器器测试。
1.1.1 HCI 接口选择
Host与Bluetooth Controller连接的HCI(主机控制接口, Host Controller Interface), 在ESP32中只能同时使用以下IO接口中的一个:
- UART
- VHCI
- SDIO
在ESP-IDF中,可以在 menuconfig 中配置蓝牙的 HCI IO接口方式。
1.1.2 蓝牙运行环境
ESP-IDF 的默认运行环境为双核 FreeRTOS, ESP32 的蓝牙可按照功能分为多个任务(task)运行,不同任务的优先级也有不同,其中优先级最⾼的为运⾏控制器的任务。控制器任务对实时性要求高,在FreeRTOS系统中的优先级仅次于IPC任务(IPC任务用于CPU的进程间通信)。BLUEDROID(ESP-IDF默认的蓝牙主机)共包含4个任务:
- BTC
- BTU
- HCI UPWARD
- HCI DOWNWARD
1.1.3 框架
1.1.3.1 控制器
ESP32 同时支持 Classic BT 和 BLE,蓝牙版本4.2 。集成了H4 协议、 HCI、 Link Manager、 Link Controller、 Device Manager、 HW Interface 等功能。这些功能以库的形式提供给开发者。

1.1.3.2 BLUEDROID
BLUEDROID蓝牙主机内部分为两层:
- BTU层
- 功能:负责蓝⽛主机底层协议栈的处理,包括 L2CAP、 GATT/ATT、 SMP、 GAP 以及部分规范等。
- BTC层(除去HCI)
- 功能:负责向应用层提供接口支持、处理基于 GATT 的规范、处理杂项等 。
所有的API都在ESP_API层,开发者应当使用“esp”为前缀的蓝牙API。
1.2 经典蓝牙
ESP-ID

本文详细介绍了ESP32的蓝牙架构,包括经典蓝牙和低功耗蓝牙(BLE)。内容涵盖蓝牙系统结构、ESP32的控制器与主机、HCI接口选择、蓝牙运行环境以及BLUEDROID框架。此外,还提供了经典蓝牙的代码实现,展示了如何使用ESP-IDF进行SPP通信。对于BLE,讲解了GAP和GATT的概念,并阐述了广播和扫描流程。关键词涉及ESP32、蓝牙、经典蓝牙、低功耗蓝牙、GATT、GAP。
最低0.47元/天 解锁文章
9250





