警告

This document is not updated for ESP32H21 yet, so some of the content may not be correct.

This warning was automatically inserted due to the source file being in the add_warnings_pages list.

介绍

[English]

此文档概述了 ESP-IDF 中低功耗蓝牙协议栈的架构,并提供了一些相关文档和应用示例的快速链接。

ESP32-H21 支持蓝牙 5.0 (LE),并且已经通过低功耗蓝牙 5.3 认证。

ESP-IDF 中的低功耗蓝牙协议栈是一个分层架构,可在 ESP32-H21 系列芯片上实现低功耗蓝牙功能,详见下图。

ESP32-H21 蓝牙协议栈架构

ESP32-H21 蓝牙协议栈架构

参考下表可知特定芯片是否支持低功耗蓝牙模块。

芯片系列

控制器

ESP-Bluedroid

ESP-NimBLE

ESP-BLE-MESH

ESP-BLE-ISO

ESP-BLE-AUDIO

BluFi

ESP32

Y

Y

Y

Y

Y

ESP32-S3

Y

Y

Y

Y

Y

ESP32-C2

Y

Y

Y

Y

ESP32-C3

Y

Y

Y

Y

Y

ESP32-C5

Y

Y

Y

Y

Y

ESP32-C6

Y

Y

Y

Y

Y

ESP32-C61

Y

Y

Y

Y

Y

ESP32-H2

Y

Y

Y

Y

ESP32-H4

Y

Y

Y

Y

Y

Y

以下各节简要介绍了每个层,并提供了相关文档和应用示例的快速链接。

ESP 蓝牙控制器

底层为 ESP 蓝牙控制器,包含 PHY、基带、链路控制器、链路管理器、设备管理器和 HCI 等各种模块。该层管理硬件接口和链路,以库的形式提供功能,并通过 API 访问,且直接与硬件和低级别蓝牙协议交互。

ESP 蓝牙主机

有 ESP-Bluedroid 和 ESP-NimBLE 两个主机,其主要区别如下:

  • 虽然两者都支持低功耗蓝牙,但 ESP-NimBLE 需要的堆和 flash 空间更少。

ESP-Bluedroid

ESP-Bluedroid 是原生 Android 蓝牙协议栈 Bluedroid 的修改版,由两层组成:蓝牙上层 (BTU) 和蓝牙传输控制器层 (BTC)。BTU 层负责处理 L2CAP、GATT/ATT、SMP、GAP 等底层蓝牙协议以及其他配置文件,提供以 "bta" 为前缀的接口。BTC 层主要负责向应用层提供以 "esp" 为前缀的支持接口,并处理基于 GATT 的配置文件以及其他任务。所有的 API 都位于 ESP_API 层,开发者应使用以 "esp" 为前缀的低功耗蓝牙 API。

ESP32-H21 的 ESP-Bluedroid 仅支持低功耗蓝牙,不支持经典蓝牙。

ESP-NimBLE

ESP-NimBLE 是建立在 Apache Mynewt 开发的 NimBLE 主机协议栈之上的主机协议栈,已经为 ESP32-H21 系列芯片和 FreeRTOS 进行了移植。通过维持现有 NimBLE API,并添加一个单独的 ESP-NimBLE API 进行初始化,使端口层保持简洁,也便于开发者操作。

ESP-NimBLE 仅支持低功耗蓝牙,不支持经典蓝牙。

蓝牙规范

主机协议层之上是 Espressif 的蓝牙规范和一些常见的蓝牙规范。根据具体配置,这些规范可以在 ESP-Bluedroid 或 ESP-NimBLE 上运行。

ESP-BLE-MESH

ESP-BLE-MESH 基于 Zephyr 蓝牙 Mesh 协议栈,其实现支持设备配网和节点控制,还支持代理、中继、低功耗和朋友等节点功能。

应用

最上层是应用层。利用上述 API 和蓝牙规范,可以在 ESP-Bluedroid 和 ESP-NimBLE 协议栈之上创建特定用例的低功耗蓝牙应用程序。


此文档对您有帮助吗?