蓝牙介绍
官网:https://www.bluetooth.com/zh-cn/。
wiki:蓝牙 - 维基百科,自由的百科全书。
分为经典蓝牙和低功耗蓝牙(BLE),前者支持传统的点对点通信,比如无线耳机,无线打印机等,后者支持低功耗,支持更多的拓扑结构,比如蓝牙广播,mesh等。BLE除了数据传输,还支持设备定位,比如蓝牙beacon技术。(参考链接:https://www.bluetooth.com/zh-cn/learn-about-bluetooth/tech-overview/)
蓝牙规范:https://www.bluetooth.com/zh-cn/specifications/specs/。
蓝牙协议栈
参考链接:
- https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/ble/overview.html
- https://www.espressif.com/sites/default/files/documentation/esp32_bluetooth_architecture_cn.pdf
有 ESP-Bluedroid 和 ESP-NimBLE 两个主机,其主要区别如下:
虽然两者都支持低功耗蓝牙,但 ESP-NimBLE 需要的堆和 flash 空间更少。
ESP-Bluedroid 支持经典蓝牙和低功耗蓝牙,而 ESP-NimBLE 仅支持低功耗蓝牙。
从整体结构上,蓝⽛可分为控制器 (Controller) 和 主机 (Host) 两⼤部分:控制器包括了PHY、 Baseband、 Link Controller、 Link Manager、 Device Manager、 HCI 等模块,⽤于硬件接⼝管理、链路管理等等;主机则包括了 L2CAP、 SMP、 SDP、 ATT、 GATT、 GAP 以及各种规范,构建了向应⽤层提供接⼝的基础,⽅便应⽤层对蓝⽛系统的访问。主机可以与控制器运⾏在同⼀个宿主上,也可以分布在不同的宿主上。
控制器提供蓝牙能力,比如射频,PHY,链路控制等,主机提供软件能力,比如蓝牙协议栈实现,两者通过总线解耦,方便将蓝牙能力拓展到不同的主机上。