ESP-FAQ Choose version... Instruction Development environment Application solution Software framework Hardware related Test verification Commercial FAQ ESP-FAQ » ESP-FAQ Edit on GitHub ESP-FAQ [中文] ESP-FAQ is a summary document of frequently asked questions released by Espressif. This repository aims to help our users to quickly locate those questions and get answers through simple explanations. The current categories of FAQ cover: development environment, application solution, software framework, hardware related and test verification. Instruction Development environment Application solution Software framework Hardware related Test verification Suggestion on this document? Provide feedback No answer found? Check issues on GitHub Ask the ESP community Contact technical support Next © Copyright 2020 - 2026, Espressif Systems (Shanghai) Co., Ltd.. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download PDF
ESP-FAQ Choose version... Instruction Development environment IDE plugins How to add ESP32 development board on Arduino IDE? When using the Arduino IDE development platform, how to read the MAC address of the Wi-Fi that comes with ESP32? How to use the flash download tool to flash the bin file generated by Arduino to ESP32? How to update the esp32-arduino library version? Can ESP32-SOLO-1 be developed using the Arduino software? Debugging Environment setup Firmware update Application solution Software framework Hardware related Test verification Commercial FAQ ESP-FAQ » Development environment » IDE plugins Edit on GitHub IDE plugins [中文] How to add ESP32 development board on Arduino IDE? For installation instructions of Arduino-ESP32, please refer to arduino-ide getting started. For instructions on how to add development boards on Arduino IDE, please refer to arduino Cores. When using the Arduino IDE development platform, how to read the MAC address of the Wi-Fi that comes with ESP32? Please refer to the Arduino-ESP32 Development Framework. Use “WiFi.macAddress()” to obtain the MAC address of ESP32’s Wi-Fi. Please also refer to the WiFiClientStaticIP example. How to use the flash download tool to flash the bin file generated by Arduino to ESP32? Please navigate to File > Preferences > Show verbose output during, and check compilation. After compilation succeeded, a Python flashing command will be printed with the bin file to be flashed and the corresponding flashing address. For details, please refer to Arduino IDE Software Compilation Environment. Download the flash download tool, select the bin file when using the tool to flash, and enter the corresponding flashing address. For more information, please refer to Flash DownLoad Tool User Guide. How to update the esp32-arduino library version? Under the path Tool > Board > BoardManager, search for ESP32 to select and install the desired version of the esp32-arduino library. For more details, please refer to Installing ESP32 Arduino Software Development Environment on Windows. Can ESP32-SOLO-1 be developed using the Arduino software? Currently, the Arduino software development environment only supports the operation of ESP32 dual-core chips and does not support the operation of ESP32 single-core chips. Therefore, ESP32-SOLO-1 is not yet supported for development on Arduino software. If you prefer to use Arduino to build your code, you can use the arduino-esp32 library as an ESP-IDF component for development and testing. For more details, please refer to How to use the arduino-esp32 library as an ESP-IDF component?. Suggestion on this document? Provide feedback No answer found? Check issues on GitHub Ask the ESP community Contact technical support Previous Next © Copyright 2020 - 2026, Espressif Systems (Shanghai) Co., Ltd.. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download PDF
ESP-FAQ Choose version... Instruction Development environment Application solution Software framework Bluetooth Ethernet Coexistence Peripherals Analog-to-Digital Converter (ADC) Digital-to-Analog Converter (DAC) GPIO & RTC GPIO Inter-Integrated Circuit (I2C) Inter-IC Sound (I2S) LCD LED Control (LEDC) What is the frequency range for ESP8266 PWM? Are there any limits on outputting PWM via ESP32 GPIO pins? Can I distribute it to any I/O? The PWM of ESP8266 NonOS SDK changes slow. What could be the reasons? When the LEDC is in decremental fade mode, a duty overflow error can occur. How to solve the issue? When using ESP8266 to generate PWM by directly writing to the register of the hardware timer FRC1, I found there are error PWM outputs after Wi-Fi is initialized since it may disturb the interrupt of FRC1. Is it possible to use FRC2 instead to generate PWM? Or is it possible to set FRC1 higher priority than Wi-Fi? I’m using v3.3.3 version of ESP-IDF to test the ledc example on ESP32. The LED PWM outputs when Auto Light Sleep mode is disabled, but does not output when this mode is enabled. According the description of LED PWM in ESP-IDF programming guide, LED PWM should work in sleep modes. What is the reason? Does ESP32 PWM support complementary outputs with dead bands on two channels? Does LEDC support hardware gamma dimming? How to deinit or uninstall ESP32 LEDC pin for use by other peripherals? Motor Control Pulse Width Modulator (MCPWM) Pulse Counter (PCNT) Remote Control Transceiver (RMT) Secure Digital Input Output (SDIO) Serial Peripheral Interface (SPI) Timer Touch Sensor Two-Wire Automotive Interface (TWAI) Universal Asynchronous Receiver/Transmitter (UART) USB Other Peripherals Protocols Provisioning Security Storage System Thread Wi-Fi Zigbee Hardware related Test verification Commercial FAQ ESP-FAQ » Software framework » Peripherals » LED Control (LEDC) Edit on GitHub LED Control (LEDC) [中文] What is the frequency range for ESP8266 PWM? The PWM of ESP8266 is realized via software programming, so the maximum CLK value is 1 M limited by timer. It is recommended to set the frequency to 1 K. The PWM frequency can also be improved by decreasing the resolution of duty cycle. Are there any limits on outputting PWM via ESP32 GPIO pins? Can I distribute it to any I/O? The ESP32 can output PWM using any GPIO via IO Matrix. Theoretically, the PWM can be distributed to any I/O except for those that only have input functions (e.g., GPIO34 ~ GPIO39). In the actual use, this could also be affected by the limitations of chips and modules, the un-pinned I/Os, flash occupations and etc. The PWM of ESP8266 NonOS SDK changes slow. What could be the reasons? If you are using the gradient APIs in SDK example/IOT_demo, e.g., light_set_aim or light_set_aim_r, it will need a gradual process for PWM changes. If you need the PWM Duty to take effect immediately after configuration, please call API pwm_set_duty, and call pwm_start next to make this configuration take effect. When the LEDC is in decremental fade mode, a duty overflow error can occur. How to solve the issue? When using LEDC, avoid the concurrence of following three cases: The LEDC is in decremental fade mode; The scale register is set to 1; The duty is 2 LEDC_HSTIMERx_DUTY_RES or 2 LEDC_LSTIMERx_DUTY_RES. When using ESP8266 to generate PWM by directly writing to the register of the hardware timer FRC1, I found there are error PWM outputs after Wi-Fi is initialized since it may disturb the interrupt of FRC1. Is it possible to use FRC2 instead to generate PWM? Or is it possible to set FRC1 higher priority than Wi-Fi? FRC2 cannot be used as it is occupied by the system. Wi-Fi uses NMI interrupt, which have a higher priority than other ordinary interrupts. It is recommended to use the PWM library of ESP8266_RTOS_SDK. Please refer to ESP8266_RTOS_SDK/examples/peripherals/pwm example. I’m using v3.3.3 version of ESP-IDF to test the ledc example on ESP32. The LED PWM outputs when Auto Light Sleep mode is disabled, but does not output when this mode is enabled. According the description of LED PWM in ESP-IDF programming guide, LED PWM should work in sleep modes. What is the reason? v3.3.3 does not support LED PWM working in sleep modes. Please use the LEDC example under the new versions of ESP-IDF (v4.0 and later versions) to test, e.g., ESP-IDF release/v4.2 version of the SDK. Plus, it is also necessary to change the LED PWM clock source to the internal RTC_8M clock source. Please see below: ledc_timer_config_t ledc_timer = {
.duty_resolution = LEDC_TIMER_13_BIT,
.freq_hz = 5000,
.speed_mode = LEDC_LOW_SPEED_MODE,
.timer_num = LEDC_TIMER_0,
.clk_cfg = LEDC_USE_RTC8M_CLK,
};
Does ESP32 PWM support complementary outputs with dead bands on two channels? This feature is not supported by LEDC but by the MCPWM peripheral. By measurement, ESP32-S3 can generate complementary output waveforms with the frequency of 10 k, the duty cycle accuracy of 1 us and the dead band accuracy of 100 ns by MCPWM. Does LEDC support hardware gamma dimming? Chips that support the macro SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED can enable hardware gamma dimming by calling ledc_fill_multi_fade_param_list and ledc_set_multi_fade_and_start. How to deinit or uninstall ESP32 LEDC pin for use by other peripherals? To free up the LEDC pin for use by other peripherals, simply call the ledc_stop interface. No other AIPs are required. Suggestion on this document? Provide feedback No answer found? Check issues on GitHub Ask the ESP community Contact technical support Previous Next © Copyright 2020 - 2026, Espressif Systems (Shanghai) Co., Ltd.. Built with Sphinx using a theme based on Read the Docs Sphinx Theme. Download PDF
ESP-FAQ Choose version... Instruction Development environment Application solution Software framework Bluetooth Ethernet Coexistence Peripherals Protocols Provisioning Security Storage System Thread Wi-Fi Do ESP32 and ESP8266 support Chinese SSID for Wi-Fi? How much time does an ESP32 scan take? [Scan] Do Espressif’s products support boundary scans? What is the definition for Wi-Fi