ESP-IDF Programming Guide Choose target... Choose version... Get Started API Reference Hardware Reference API Guides Security Guides Migration Guides Libraries and Frameworks Contributions Guide ESP-IDF Versions Resources Copyrights and Licenses About Switch Between Languages ESP-IDF Programming Guide ESP-IDF Programming Guide Edit on GitHub ESP-IDF Programming Guide [中文] This is the documentation for Espressif IoT Development Framework (esp-idf). ESP-IDF is the official development framework for the ESP32, ESP32-S, ESP32-C, ESP32-H and ESP32-P Series SoCs. This document describes using ESP-IDF with the ESP32-S31 SoC. To switch to a different SoC target, choose target from the dropdown in the upper left. Get Started API Reference API Guides Was this page helpful? Thank you! We received your feedback. If you have any comments, fill in Espressif Documentation Feedback Form. We value your feedback. Let us know how we can improve this page by filling in Espressif Documentation Feedback Form. Next © Copyright 2016 - 2026, Espressif Systems (Shanghai) Co., Ltd. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download HTML ESP-IDF Programming Guide Choose target... Choose version... Get Started API Reference Hardware Reference API Guides Security Guides Migration Guides Libraries and Frameworks Contributions Guide ESP-IDF Versions Resources Copyrights and Licenses About Switch Between Languages ESP-IDF Programming Guide ESP Host Major Feature Support Status Edit on GitHub ESP Host Major Feature Support Status [中文] The table below shows the support status of major features on ESP-Bluedroid and ESP-NimBLE Host. If you plan to run the Bluetooth LE Controller and Host on ESP32-S31 together, the functionality of the Host may be limited by the support status of the Controller, please check the ESP32-S31 Major Feature Support Status Table . This feature has completed development and internal testing. [1] This feature has been developed and is currently undergoing internal testing. You can explore these features for evaluation and feedback purposes but should be cautious of potential issues. The feature is currently being actively developed, and expected to be supported by the end of YYYY/MM. You should anticipate future updates regarding the progress and availability of these features. If you do have an urgent need, please contact our customer support team for a possible feature trial. This feature is not supported on this Host. If you have related requirements, please prioritize selecting other Espressif Bluetooth Host that support this feature. If none of our chip series meet your needs, please contact customer support team, and our R&D team will conduct an internal feasibility assessment for you. The feature with this label could be the following type: Controller-only Feature: The feature exists only below HCI, and cannot be configured/enabled via Host API, such as Advertising Channel Index. It does not require the support from the Host. Core Spec Major Features ESP-Bluedroid Host ESP-NimBLE Host 4.2 LE Data Packet Length Extension LE Secure Connections Link Layer Privacy Link Layer Extended Filter Policies 5.0 2 Msym/s PHY for LE LE Long Range (Coded PHY S=2/S=8) High Duty Cycle Non-Connectable Advertising LE Advertising Extensions LE Channel Selection Algorithm #2 5.1 Angle of Arrival (AoA)/Angle of Departure (AoD) GATT Caching Randomized Advertising Channel Indexing Periodic Advertising Sync Transfer 5.2 LE Isochronous Channels (BIS/CIS) Enhanced Attribute Protocol LE Power Control 5.3 AdvDataInfo in Periodic Advertising LE Enhanced Connection Update (Connection Subrating) LE Channel Classification 5.4 Advertising Coding Selection Encrypted Advertising Data LE GATT Security Levels Characteristic Periodic Advertising with Responses 6.0 Channel Sounding LL Extended Feature Set Decision-Based Advertising Filtering Enhancements for ISOAL Monitoring Advertisers Frame Space Update 6.1 Randomized Resolvable Private Address (RPA) Updates 6.2 HCI USB LE Isochronous Support LE Test Mode Enhancements Shorter Connection Intervals Channel Sounding Amplitude-based Attack Resilience 6.3 Channel Sounding Inline Phase Correction Term Transfer Channel Sounding PHY-specific RTT Accuracy Running Out of Bits [1] If you would like to know the Bluetooth SIG certification information for supported features, please consult SIG Bluetooth Product Database. It is important to clarify that this document is not a binding commitment to our customers. The above feature support status information is for general informational purposes only and is subject to change without notice. You are encouraged to consult with our customer support team for the most up-to-date information and to verify the suitability of features for your specific needs. Was this page helpful? Thank you! We received your feedback. If you have any comments, fill in Espressif Documentation Feedback Form. We value your feedback. Let us know how we can improve this page by filling in Espressif Documentation Feedback Form. © Copyright 2016 - 2026, Espressif Systems (Shanghai) Co., Ltd. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download HTML ESP-IDF Programming Guide Choose target... Choose version... Get Started API Reference Hardware Reference API Guides Application Startup Flow Bluetooth® Architecture Bluetooth® Classic Bluetooth® Low Energy ESP-BLE-MESH Bluetooth® LE Audio Bootloader Build System Build System v2 RF Coexistence C Support C++ Support Code Quality Core Dump Current Consumption Measurement of Modules Device Firmware Upgrade via USB Error Handling ESP-WIFI-MESH Support for External RAM Fatal Errors File System Considerations Hardware Abstraction JTAG Debugging Project Configuration Linker Script Generation Low Power Modes lwIP Memory Types OpenThread Partition Tables Performance Reproducible Builds RF Calibration Standard I/O and Console Output Thread Local Storage Tools Tracing Unit Testing in ESP32-S31 Running ESP-IDF Applications on Host USB Serial/JTAG Controller Console Wi-Fi Driver Wi-Fi Security Wi-Fi Expansion PHY Security Guides Migration Guides Libraries and Frameworks Contributions Guide ESP-IDF Versions Resources Copyrights and Licenses About Switch Between Languages ESP-IDF Programming Guide API Guides Edit on GitHub API Guides [中文] Application Startup Flow Bluetooth® Architecture Bluetooth® Classic Bluetooth® Low Energy ESP-BLE-MESH Bluetooth® LE Audio Bootloader Build System Build System v2 RF Coexistence C Support C++ Support Code Quality Core Dump Current Consumption Measurement of Modules Device Firmware Upgrade via USB Error Handling ESP-WIFI-MESH Support for External RAM Fatal Errors File System Considerations Hardware Abstraction JTAG Debugging Project Configuration Linker Script Generation Low Power Modes lwIP Memory Types OpenThread Partition Tables Performance Reproducible Builds RF Calibration Standard I/O and Console Output Thread Local Storage Tools Tracing Unit Testing in ESP32-S31 Running ESP-IDF Applications on Host USB Serial/JTAG Controller Console Wi-Fi Driver Wi-Fi Security Wi-Fi Expansion PHY Was this page helpful? Thank you! We received your feedback. If you have any comments, fill in Espressif Documentation Feedback Form. We value your feedback. Let us know how we can improve this page by filling in Espressif Documentation Feedback Form. Previous Next © Copyright 2016 - 2026, Espressif Systems (Shanghai) Co., Ltd. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download HTML ESP-IDF Programming Guide Choose target... Choose version... Get Started API Reference API Conventions Application Protocols Bluetooth® API Error Codes Reference Networking APIs Peripherals API Analog to Digital Converter (ADC) Analog Comparator Asynchronous Color Conversion Asynchronous Memory Copy BitScrambler Driver Clock Tree Coordinate Rotation Digital Computer (CORDIC) ECDSA Digital Signature Peripheral (ECDSA_DS) Event Task Matrix (ETM) GPIO & RTC GPIO General Purpose Timer (GPTimer) Dedicated GPIO Hash-Based Message Authentication Code (HMAC) RSA Digital Signature Peripheral (RSA_DS) Inter-Integrated Circuit (I2C) Inter-IC Sound (I2S) JPEG Encoder and Decoder LCD Low Dropout Voltage Regulator (LDO) LED Control (LEDC) Motor Control Pulse Width Modulator (MCPWM) Parallel IO Pulse Counter (PCNT) Pixel-Processing Accelerator (PPA) Remote Control Transceiver (RMT) SD Pull-up Requirements SDMMC Host Driver SD SPI Host Driver Sigma-Delta Modulation (SDM) SPI Flash API SPI Master Driver Terminology Driver Features SPI Transactions Driver Usage Transfer Speed Considerations Application Examples API Reference - SPI Common API Reference - SPI Master SPI Slave Driver SPI Slave Half Duplex Temperature Sensor Capacitive Touch Sensor Two-Wire Automotive Interface (TWAI) Universal Asynchronous Receiver/Transmitter (UART) USB Device Stack USB Host Provisioning API Storage API System API Configuration Options Reference Hardware Reference API Guides Security Guides Migration Guides Libraries and Frameworks Contributions Guide ESP-IDF Versions Resources Copyrights and Licenses About Switch Between Languages ESP-IDF Programming Guide API Reference Peripherals API SPI Flash API SPI Features Edit on GitHub SPI Features SPI Master SPI Bus Lock To realize the multiplexing of different devices from different drivers, including SPI Master, SPI Flash, etc., an SPI bus lock is applied on each SPI bus. Drivers can attach their devices to the bus with the arbitration of the lock. Each bus lock is initialized with a BG (background) service registered. All devices that request transactions on the bus should wait until the BG is successfully disabled. For the SPI1 bus, the BG is the cache. The bus lock disables the cache before device operations start, and enables it again after the device releases the lock. No devices on SPI1 are allowed to use ISR, since it is meaningless for the task to yield to other tasks wh