esp32/include/periph_cpu.h

CPU specific definitions and functions for peripheral handling.

PROVIDES_PM_SET_LOWEST
PROVIDES_PM_RESTART
PROVIDES_PM_OFF
PORT_GPIO

Available ports on the ESP32.

1
0

port GPIO

GPIO_PIN_NUMOF

Define CPU specific number of GPIO pins.

1
40
GPIO_PIN_COUNT
1
GPIO_PIN_NUMOF
GPIO0
1
(GPIO_PIN(PORT_GPIO,0))
GPIO1
1
(GPIO_PIN(PORT_GPIO,1))
GPIO2
1
(GPIO_PIN(PORT_GPIO,2))
GPIO3
1
(GPIO_PIN(PORT_GPIO,3))
GPIO4
1
(GPIO_PIN(PORT_GPIO,4))
GPIO5
1
(GPIO_PIN(PORT_GPIO,5))
GPIO6
1
(GPIO_PIN(PORT_GPIO,6))
GPIO7
1
(GPIO_PIN(PORT_GPIO,7))
GPIO8
1
(GPIO_PIN(PORT_GPIO,8))
GPIO9
1
(GPIO_PIN(PORT_GPIO,9))
GPIO10
1
(GPIO_PIN(PORT_GPIO,10))
GPIO11
1
(GPIO_PIN(PORT_GPIO,11))
GPIO12
1
(GPIO_PIN(PORT_GPIO,12))
GPIO13
1
(GPIO_PIN(PORT_GPIO,13))
GPIO14
1
(GPIO_PIN(PORT_GPIO,14))
GPIO15
1
(GPIO_PIN(PORT_GPIO,15))
GPIO16
1
(GPIO_PIN(PORT_GPIO,16))
GPIO17
1
(GPIO_PIN(PORT_GPIO,17))
GPIO18
1
(GPIO_PIN(PORT_GPIO,18))
GPIO19
1
(GPIO_PIN(PORT_GPIO,19))
GPIO21
1
(GPIO_PIN(PORT_GPIO,21))
GPIO22
1
(GPIO_PIN(PORT_GPIO,22))
GPIO23
1
(GPIO_PIN(PORT_GPIO,23))
GPIO25
1
(GPIO_PIN(PORT_GPIO,25))
GPIO26
1
(GPIO_PIN(PORT_GPIO,26))
GPIO27
1
(GPIO_PIN(PORT_GPIO,27))
GPIO32
1
(GPIO_PIN(PORT_GPIO,32))
GPIO33
1
(GPIO_PIN(PORT_GPIO,33))
GPIO34
1
(GPIO_PIN(PORT_GPIO,34))
GPIO35
1
(GPIO_PIN(PORT_GPIO,35))
GPIO36
1
(GPIO_PIN(PORT_GPIO,36))
GPIO37
1
(GPIO_PIN(PORT_GPIO,37))
GPIO38
1
(GPIO_PIN(PORT_GPIO,38))
GPIO39
1
(GPIO_PIN(PORT_GPIO,39))
HAVE_GPIO_FLANK_T

Override mode flank selection values.

enum gpio_flank_t
GPIO_NONE = 0
GPIO_LOW
emit interrupt when pin low
GPIO_HIGH = 5
emit interrupt on low level
GPIO_FALLING
emit interrupt on falling flank
GPIO_RISING
emit interrupt on rising flank
GPIO_BOTH
emit interrupt on both flanks
HAVE_GPIO_MODE_T

Override GPIO modes.

enum gpio_mode_t
GPIO_IN_ANALOG = ((uint8_t)OVERRIDE_ANALOG)
input, analog
GPIO_IN_OUT
input and output
GPIO_IN_OD
input and open-drain output
GPIO_IN_OD_PU
input and open-drain output
GPIO_IN = ((uint8_t)OVERRIDE_DISABLE)
input, no pull
GPIO_IN_PD = ((uint8_t)OVERRIDE_PULLDOWN)
input, pull-down
GPIO_IN_PU = ((uint8_t)OVERRIDE_PULLUP)
input, pull-up
GPIO_OUT = ((uint8_t)OVERRIDE_ENABLE)
output
GPIO_OD = (0xff)
not supported
GPIO_OD_PU = (0xff)
not supported
HAVE_ADC_RES_T

Possible ADC resolution settings.

enum adc_res_t
ADC_RES_7BIT =             (0 << 4)
ADC resolution: 7 bit.
ADC_RES_9BIT =             (1 << 4)
ADC resolution: 9 bit.
ADC_RES_11BIT
ADC resolution: 11 bit.
ADC_RES_6BIT =             (0xa00)
not supported by hardware
ADC_RES_8BIT =             (0xb00)
not supported by hardware
ADC_RES_10BIT =             (2 << 4)
ADC resolution: 10 bit.
ADC_RES_12BIT =             (3 << 4)
ADC resolution: 12 bit.
ADC_RES_14BIT =             (0xc00)
not supported by hardware
ADC_RES_16BIT =             (0xd00)
not supported by hardware
DAC_NUMOF_MAX

Number of DAC cahnnels that could be used at maximum.

1
2
const unsigned dac_chn_num

Number of DAC channels determined from DAC_GPIOS.

PERIPH_I2C_NEED_READ_REG

i2c_read_reg required

PERIPH_I2C_NEED_READ_REGS

i2c_read_regs required

PERIPH_I2C_NEED_WRITE_REG

i2c_write_reg required

PERIPH_I2C_NEED_WRITE_REGS

i2c_write_regs required

const unsigned i2c_bus_num

Number of I2C interfaces determined from I2Cn_* definitions.

PWM_CHANNEL_NUM_DEV_MAX

Maximum number of channels per PWM device.

1
(6)
const unsigned pwm_dev_num

Number of PWM devices determined from PWM0_GPIOS and PWM1_GPIOS.

PERIPH_SPI_NEEDS_TRANSFER_BYTE

requires function spi_transfer_byte

PERIPH_SPI_NEEDS_TRANSFER_REG

requires function spi_transfer_reg

PERIPH_SPI_NEEDS_TRANSFER_REGS

requires function spi_transfer_regs

const unsigned spi_bus_num

Number of SPI interfaces determined from SPI_* definitions.

TIMER_NUMOF

hardware timer modules are used for timer implementation (default)

1
(3)
TIMER_CHANNELS
1
(1)
TIMER_SYSTEM

Timer used for system time.

1
TIMERG0.hw_timer[0]
CPUID_LEN

Length of the CPU_ID in octets.

1
(7U)
GPIO_UNDEF

Definition of a fitting UNDEF value.

1
(0xff)
GPIO_PIN( x, y)

Define CPU specific GPIO pin generator macro.

1
((x << 4) | y)
ADC_NUMOF_MAX

Number of ADC cahnnels that could be used at maximum.

1
16

Note

GPIO37 and GPIO38 are usually not broken out on ESP32 modules and are therefore not usable. The maximum number of ADC channels (ADC_NUMOF_MAX) is therefore set to 16.

const unsigned adc_chn_num

Number of ADC channels determined from ADC_GPIOS.