SoC Capabilities
This section lists definitions of the ESP32’s SoC hardware capabilities. These definitions are commonly used in IDF to control which hardware dependent features are supported and thus compiled into the binary.
Note
These defines are currently not considered to be part of the public API, and may be changed at any time.
API Reference
Header File
Macros
-
SOC_CAPS_ECO_VER_MAX
-
SOC_ADC_SUPPORTED
-
SOC_DAC_SUPPORTED
-
SOC_UART_SUPPORTED
-
SOC_MCPWM_SUPPORTED
-
SOC_GPTIMER_SUPPORTED
-
SOC_SDMMC_HOST_SUPPORTED
-
SOC_BT_SUPPORTED
-
SOC_PCNT_SUPPORTED
-
SOC_WIFI_SUPPORTED
-
SOC_SDIO_SLAVE_SUPPORTED
-
SOC_TWAI_SUPPORTED
-
SOC_EMAC_SUPPORTED
-
SOC_ULP_SUPPORTED
-
SOC_CCOMP_TIMER_SUPPORTED
-
SOC_RTC_FAST_MEM_SUPPORTED
-
SOC_RTC_SLOW_MEM_SUPPORTED
-
SOC_RTC_MEM_SUPPORTED
-
SOC_I2S_SUPPORTED
-
SOC_RMT_SUPPORTED
-
SOC_SDM_SUPPORTED
-
SOC_GPSPI_SUPPORTED
-
SOC_LEDC_SUPPORTED
-
SOC_I2C_SUPPORTED
-
SOC_SUPPORT_COEXISTENCE
-
SOC_AES_SUPPORTED
-
SOC_MPI_SUPPORTED
-
SOC_SHA_SUPPORTED
-
SOC_FLASH_ENC_SUPPORTED
-
SOC_SECURE_BOOT_SUPPORTED
-
SOC_TOUCH_SENSOR_SUPPORTED
-
SOC_BOD_SUPPORTED
-
SOC_ULP_FSM_SUPPORTED
-
SOC_DPORT_WORKAROUND
-
SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL
-
SOC_XTAL_SUPPORT_26M
-
SOC_XTAL_SUPPORT_40M
-
SOC_XTAL_SUPPORT_AUTO_DETECT
-
SOC_ADC_RTC_CTRL_SUPPORTED
< SAR ADC Module
-
SOC_ADC_DIG_CTRL_SUPPORTED
-
SOC_ADC_DMA_SUPPORTED
-
SOC_ADC_DIG_SUPPORTED_UNIT(UNIT)
-
SOC_ADC_PERIPH_NUM
-
SOC_ADC_CHANNEL_NUM(PERIPH_NUM)
-
SOC_ADC_MAX_CHANNEL_NUM
-
SOC_ADC_ATTEN_NUM
Digital
-
SOC_ADC_DIGI_CONTROLLER_NUM
-
SOC_ADC_PATT_LEN_MAX
-
SOC_ADC_DIGI_MIN_BITWIDTH
-
SOC_ADC_DIGI_MAX_BITWIDTH
-
SOC_ADC_DIGI_RESULT_BYTES
-
SOC_ADC_DIGI_DATA_BYTES_PER_CONV
-
SOC_ADC_SAMPLE_FREQ_THRES_HIGH
-
SOC_ADC_SAMPLE_FREQ_THRES_LOW
RTC
-
SOC_ADC_RTC_MIN_BITWIDTH
-
SOC_ADC_RTC_MAX_BITWIDTH
-
SOC_SHARED_IDCACHE_SUPPORTED
-
SOC_IDCACHE_PER_CORE
-
SOC_CPU_CORES_NUM
-
SOC_CPU_INTR_NUM
-
SOC_CPU_HAS_FPU
-
SOC_CPU_BREAKPOINTS_NUM
-
SOC_CPU_WATCHPOINTS_NUM
-
SOC_CPU_WATCHPOINT_SIZE
-
SOC_DAC_CHAN_NUM
-
SOC_DAC_RESOLUTION
-
SOC_DAC_DMA_16BIT_ALIGN
-
SOC_GPIO_PORT
-
SOC_GPIO_PIN_COUNT
-
SOC_GPIO_VALID_GPIO_MASK
-
SOC_GPIO_VALID_OUTPUT_GPIO_MASK
-
SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK
-
SOC_I2C_NUM
-
SOC_I2C_FIFO_LEN
I2C hardware FIFO depth
-
SOC_I2C_CMD_REG_NUM
Number of I2C command registers
-
SOC_I2C_SUPPORT_SLAVE
-
SOC_I2C_SUPPORT_APB
-
SOC_I2S_NUM
-
SOC_I2S_HW_VERSION_1
-
SOC_I2S_SUPPORTS_APLL
-
SOC_I2S_SUPPORTS_PLL_F160M
-
SOC_I2S_SUPPORTS_PDM
-
SOC_I2S_SUPPORTS_PDM_TX
-
SOC_I2S_PDM_MAX_TX_LINES
-
SOC_I2S_SUPPORTS_PDM_RX
-
SOC_I2S_PDM_MAX_RX_LINES
-
SOC_I2S_SUPPORTS_ADC_DAC
-
SOC_I2S_SUPPORTS_ADC
-
SOC_I2S_SUPPORTS_DAC
-
SOC_I2S_SUPPORTS_LCD_CAMERA
-
SOC_I2S_TRANS_SIZE_ALIGN_WORD
-
SOC_I2S_LCD_I80_VARIANT
-
SOC_LCD_I80_SUPPORTED
Intel 8080 LCD is supported
-
SOC_LCD_I80_BUSES
Both I2S0/1 have LCD mode
-
SOC_LCD_I80_BUS_WIDTH
Intel 8080 bus width
-
SOC_LEDC_HAS_TIMER_SPECIFIC_MUX
-
SOC_LEDC_SUPPORT_APB_CLOCK
-
SOC_LEDC_SUPPORT_REF_TICK
-
SOC_LEDC_SUPPORT_HS_MODE
-
SOC_LEDC_CHANNEL_NUM
-
SOC_LEDC_TIMER_BIT_WIDTH
-
SOC_MCPWM_GROUPS
2 MCPWM groups on the chip (i.e., the number of independent MCPWM peripherals)
-
SOC_MCPWM_TIMERS_PER_GROUP
The number of timers that each group has.
-
SOC_MCPWM_OPERATORS_PER_GROUP
The number of operators that each group has.
-
SOC_MCPWM_COMPARATORS_PER_OPERATOR
The number of comparators that each operator has.
-
SOC_MCPWM_GENERATORS_PER_OPERATOR
The number of generators that each operator has.
-
SOC_MCPWM_TRIGGERS_PER_OPERATOR
The number of triggers that each operator has.
-
SOC_MCPWM_GPIO_FAULTS_PER_GROUP
The number of GPIO fault signals that each group has.
-
SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP
The number of capture timers that each group has.
-
SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER
The number of capture channels that each capture timer has.
-
SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP
The number of GPIO synchros that each group has.
-
SOC_MMU_PERIPH_NUM
-
SOC_MMU_LINEAR_ADDRESS_REGION_NUM
-
SOC_MPU_CONFIGURABLE_REGIONS_SUPPORTED
-
SOC_MPU_MIN_REGION_SIZE
-
SOC_MPU_REGIONS_MAX_NUM
-
SOC_MPU_REGION_RO_SUPPORTED
-
SOC_MPU_REGION_WO_SUPPORTED
-
SOC_PCNT_GROUPS
-
SOC_PCNT_UNITS_PER_GROUP
-
SOC_PCNT_CHANNELS_PER_UNIT
-
SOC_PCNT_THRES_POINT_PER_UNIT
-
SOC_RMT_GROUPS
One RMT group
-
SOC_RMT_TX_CANDIDATES_PER_GROUP
Number of channels that capable of Transmit in each group
-
SOC_RMT_RX_CANDIDATES_PER_GROUP
Number of channels that capable of Receive in each group
-
SOC_RMT_CHANNELS_PER_GROUP
Total 8 channels
-
SOC_RMT_MEM_WORDS_PER_CHANNEL
Each channel owns 64 words memory
-
SOC_RMT_SUPPORT_REF_TICK
Support set REF_TICK as the RMT clock source
-
SOC_RMT_SUPPORT_APB
Support set APB as the RMT clock source
-
SOC_RMT_CHANNEL_CLK_INDEPENDENT
Can select different source clock for each channel
-
SOC_RTCIO_PIN_COUNT
-
SOC_RTCIO_INPUT_OUTPUT_SUPPORTED
-
SOC_RTCIO_HOLD_SUPPORTED
-
SOC_RTCIO_WAKE_SUPPORTED
-
SOC_SDM_GROUPS
-
SOC_SDM_CHANNELS_PER_GROUP
-
SOC_SDM_CLK_SUPPORT_APB
-
SOC_SPI_HD_BOTH_INOUT_SUPPORTED
-
SOC_SPI_AS_CS_SUPPORTED
-
SOC_SPI_PERIPH_NUM
-
SOC_SPI_DMA_CHAN_NUM
-
SOC_SPI_PERIPH_CS_NUM(i)
-
SOC_SPI_MAX_CS_NUM
-
SOC_SPI_SUPPORT_CLK_APB
-
SOC_SPI_MAXIMUM_BUFFER_SIZE
-
SOC_SPI_MAX_PRE_DIVIDER
-
SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED
-
SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED
-
SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED
-
SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED
-
SOC_SPI_PERIPH_SUPPORT_MULTILINE_MODE(spi_host)
-
SOC_TIMER_GROUPS
-
SOC_TIMER_GROUP_TIMERS_PER_GROUP
-
SOC_TIMER_GROUP_COUNTER_BIT_WIDTH
-
SOC_TIMER_GROUP_TOTAL_TIMERS
-
SOC_TIMER_GROUP_SUPPORT_APB
-
SOC_TOUCH_VERSION_1
Hardware version of touch sensor
-
SOC_TOUCH_SENSOR_NUM
-
SOC_TOUCH_PAD_MEASURE_WAIT_MAX
The timer frequency is 8Mhz, the max value is 0xff
-
SOC_TOUCH_PAD_THRESHOLD_MAX
If set touch threshold max value, The touch sensor can’t be in touched status
-
SOC_TWAI_CONTROLLER_NUM
-
SOC_TWAI_BRP_MIN
-
SOC_TWAI_BRP_MAX
-
SOC_TWAI_CLK_SUPPORT_APB
-
SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT
-
SOC_UART_NUM
-
SOC_UART_SUPPORT_APB_CLK
Support APB as the clock source
-
SOC_UART_SUPPORT_REF_TICK
Support REF_TICK as the clock source
-
SOC_UART_FIFO_LEN
The UART hardware FIFO length
-
SOC_UART_BITRATE_MAX
Max bit rate supported by UART
-
SOC_SPIRAM_SUPPORTED
-
SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE
-
SOC_SHA_SUPPORT_PARALLEL_ENG
-
SOC_SHA_SUPPORT_SHA1
-
SOC_SHA_SUPPORT_SHA256
-
SOC_SHA_SUPPORT_SHA384
-
SOC_SHA_SUPPORT_SHA512
-
SOC_RSA_MAX_BIT_LEN
-
SOC_AES_SUPPORT_AES_128
-
SOC_AES_SUPPORT_AES_192
-
SOC_AES_SUPPORT_AES_256
-
SOC_SECURE_BOOT_V1
-
SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS
-
SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX
-
SOC_PHY_DIG_REGS_MEM_SIZE
-
SOC_PM_SUPPORT_EXT0_WAKEUP
-
SOC_PM_SUPPORT_EXT1_WAKEUP
-
SOC_PM_SUPPORT_EXT_WAKEUP
Compatible to the old version of IDF
-
SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP
Supports waking up from touch pad trigger
-
SOC_PM_SUPPORT_RTC_PERIPH_PD
-
SOC_PM_SUPPORT_RTC_FAST_MEM_PD
-
SOC_PM_SUPPORT_RTC_SLOW_MEM_PD
-
SOC_PM_SUPPORT_RC_FAST_PD
-
SOC_PM_SUPPORT_VDDSDIO_PD
-
SOC_PM_SUPPORT_MODEM_PD
Modem here includes wifi and btdm
-
SOC_CONFIGURABLE_VDDSDIO_SUPPORTED
-
SOC_CLK_APLL_SUPPORTED
-
SOC_APLL_MULTIPLIER_OUT_MIN_HZ
-
SOC_APLL_MULTIPLIER_OUT_MAX_HZ
-
SOC_APLL_MIN_HZ
-
SOC_APLL_MAX_HZ
-
SOC_CLK_RC_FAST_D256_SUPPORTED
-
SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256
-
SOC_CLK_RC_FAST_SUPPORT_CALIBRATION
-
SOC_CLK_XTAL32K_SUPPORTED
Support to connect an external low frequency crystal
-
SOC_SDMMC_USE_IOMUX
-
SOC_SDMMC_NUM_SLOTS
-
SOC_WIFI_WAPI_SUPPORT
Support WAPI
-
SOC_WIFI_CSI_SUPPORT
Support CSI
-
SOC_WIFI_MESH_SUPPORT
Support WIFI MESH
-
SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW
Support delta early time for rf phy on/off
-
SOC_WIFI_NAN_SUPPORT
Support WIFI Aware (NAN)
-
SOC_BLE_SUPPORTED
Support Bluetooth Low Energy hardware
-
SOC_BLE_MESH_SUPPORTED
Support BLE MESH
-
SOC_BT_CLASSIC_SUPPORTED
Support Bluetooth Classic hardware
-
SOC_BLE_DEVICE_PRIVACY_SUPPORTED
Support BLE device privacy mode
-
SOC_BLUFI_SUPPORTED
Support BLUFI
-
SOC_ULP_HAS_ADC
-
SOC_PHY_COMBO_MODULE
Support Wi-Fi, BT and BLE