Transcription of ESP32 Bluetooth Architecture CN - Espressif
1 ESP32 2019 ESP32 ESP-IDF 1. 1 .. 1 .. 1 .. 2 .. 3 .. 4 .. 4 .. 4 .. 4 .. 6 .. 6 ..2. 9 .. 9 .. 10 .. 10 .. 10 .. 10 .. AVRCP 11 ..3. 13 .. 13 .. 13 .. 14 .. 15.
2 Public 15 .. 16 .. 17 .. 18 .. 18 .. 18 .. 19 .. 19 .. 19 .. 20 .. GAP 20 .. 20 .. 20 .. 22 .. ESP32 IDF GATT GATT 24 .. ESP32 IDF GATT 25 .. 26 .. 26 .. 26 .. 26 .. 29 .. !1. 1. ESP32 (Classic Bluetooth ) ( Bluetooth Low Energy) ESP32 (Controller) (Host) PHY Baseband Link Controller Link Manager Device Manager HCI L2 CAP SMP SDP ATT GATT GAP ESP32 !
3 1-1. ESP32 ESP-IDF ESP32 BLUEDROID VHCI HCI BLUEDROID ESP32 PC ESP32 BluedroidBluetooth ControllerPC 3 KRQH 3 DGLinux/AndroidPCTest Tool(BQB)VHCIUARTUART/SDIOE spressif! !1. ESP32 BlueZ Linux PC BLUEDROID Android PAD PC BQB ESP32 DUT UART IO PC ESP32 HCI IO UART VHCI SDIO IO ESP-IDF menuconfig HCI IO VHCI UART !
4 1-2. HCI IO Bluedroid Bluetooth stack enabled VHCI IO HCI use UART as IO (NEW) HCI use UART as IO (NEW) UART IO ESP-IDF IO SPI SPI-VHCI bridge Bluedroid Bluetooth stack enabled ! 1-3. VHCI Espressif ! !1. Bluetooth event (callback to application) task stack size BTC Task Bluedroid memory debug BLUEDROID Classic Bluetooth Release DRAM from Classic BT Controller DRAM Include GATT server module (GATTS) GATTS Include GATT client module (GATTC) GATTC Include BLE security module (SMP) SMP Close the bluedroid bt stack log print BLUEDROID BT/BLE MAX ACL CONNECTIONS (1~7)
5 ACL HCI use UART as IO ! 1-4. UART UART Number for HCI (NEW) UART UART Baudrate for HCI (NEW) UART UART (CTS/RTS) ESP-IDF FreeRTOS ESP32 (task) FreeRTOS IPC IPC CPU BLUEDROID ESP-IDF 4 BTC BTU HCI UPWARD HCI DOWNWARD Espressif ! !1. ESP32 Classic BT BLE H4 HCI Link Manager Link Controller Device Manager HW Interface API readthedocs !
6 1-5. Classic BT & BLE SIG BT ESP-IDF BLUEDROID (Classic BT + BLE) BLUEDROID BLUEDROID BTA BTIF BTC Misc BLUEDROID Espressif ! !1. ! 1-6. ESP32 BLUEDROID ESP_APIBLEPROFILESSDPGAPGATTBTPROFILESBT A_APIBT PROFILESSDPGAPGAPBTCTASKUSERTASKBTUTASKB LE PROFILE *$77 %DVHG APP PROCEDUREBT LOW-LAYER & BT STACKL2 ACAPSDPSMPGATT/ATTGAPH4 HCI TRANSPORT LAYER (Include HCI Task) Espressif Bluedroid Coarse InterfaceBLEPROFILESBLE LOW-LAYER HCI TASK Espressif !
7 !1. BLUEDROID 2 BTU BTC HCI BTU L2 CAP GATT/ATT SMP GAP bta BTC GATT esp API ESP_API esp API HCI HCI 2 ESP-IDF Downward Upward BTC (User Task) RFCOMM A2DP BTU ESP-API BTC 6 LowPan Dynamic L2 CAP Channel BTU BTC ESP-API BLUEDROID OSI Timer (Alarm) Task (Thread) Future Await/Ready (Semphore) Allocator/GKI (malloc/free)
8 BLUEDROID FreeRTOS Timer Alarm BLUEDROID Linux Thread FreeRTOS FreeRTOS Queue BLUEDROID Future Await/Ready Future Lock FreeRTOS xSemphoreTake future_await xSemphoreGive future_ready future_await future_ready BLUEDROID malloc/free Allocator / GKI malloc/free GKI_getbuf/GKI_freebuf ESP-IDF component/bt Espressif !
9 !1. ! 1-7. ESP-IDF component/bt 1-1. ESP-IDF component/bt Kconfig bluedroidBLUEDROID apiAPI API Controller bta btc btcore feature/bdaddr btif BTA call out device HCI CMD external SBC codec gkiBLUEDROID buffer queue Espressif !
10 !1. hciHCI includeBLUEDROID main osiOS semphore/timer/thread stack GAP/ATT/GATT/SDP/SMP utils include API lib LICENSEL icense Espressif ! !2. 2. ESP-IDF ESP-IDF BLUEDROID HCI API (Protocol) (Profile) PHY L2 CAP GAP A2DP (SNK) AVRCP (CT) L2 CAP SDP AVDTP AVCTP 2-1 !