Libraries
Here is where the Libraries API’s descriptions are located:
Supported Peripherals
Currently, the Arduino ESP32 supports the following peripherals with Arduino APIs.
Peripheral |
ESP32 |
C3 |
C6 |
H2 |
P4 |
S2 |
S3 |
Notes |
---|---|---|---|---|---|---|---|---|
ADC |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
BT Classic |
Yes |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
|
BLE |
Yes |
Yes |
Yes |
Yes |
No |
N/A |
Yes |
|
DAC |
Yes |
N/A |
N/A |
N/A |
Yes |
Yes |
N/A |
|
Ethernet |
Yes |
N/A |
N/A |
N/A |
Yes |
N/A |
N/A |
|
GPIO |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Hall Sensor |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
|
I2C |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
I2S |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
LEDC |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
MIPI |
N/A |
N/A |
N/A |
N/A |
No |
N/A |
N/A |
|
Motor PWM |
No |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
|
MSPI |
N/A |
N/A |
N/A |
N/A |
No |
N/A |
N/A |
|
Pulse Counter |
No |
No |
No |
No |
No |
No |
No |
|
RMT |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
SDIO |
No |
No |
No |
No |
No |
No |
No |
|
SDMMC |
Yes |
N/A |
N/A |
N/A |
N/A |
N/A |
Yes |
|
Timer |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Temp. Sensor |
N/A |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Touch |
Yes |
N/A |
N/A |
N/A |
Yes |
Yes |
Yes |
|
TWAI |
No |
No |
No |
No |
No |
No |
No |
|
UART |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
USB |
N/A |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
|
Wi-Fi |
Yes |
Yes |
Yes |
N/A |
Yes |
Yes |
Yes |
Notes
ESP32-P4 calibration schemes not supported yet in IDF and ADC Continuous also lacks IDF support.
SPI Ethernet is supported by all ESP32 families and RMII only for ESP32 and ESP32-P4.
ESP32-C3, C6, H2 only support USB CDC/JTAG
ESP32-P4 only supports Wi-Fi through another SoC by using
esp_hosted
.
Note
Some peripherals are not available for all ESP32 families. To see more details about it, see the corresponding SoC at Product Selector page.
Datasheet
APIs
The Arduino ESP32 offers some unique APIs, described in this section:
Note
Please be advised that we cannot ensure continuous compatibility between the Arduino Core ESP32 APIs and ESP8266 APIs, as well as Arduino-Core APIs (Arduino.cc). While our aim is to maintain harmony, the addition of new features may result in occasional divergence. We strive to achieve the best possible integration but acknowledge that perfect compatibility might not always be feasible. Please refer to the documentation for any specific considerations.