24#ifndef PERIPH_CONF_COMMON_H
25#define PERIPH_CONF_COMMON_H
27#if defined(CPU_FAM_ESP32)
29#elif defined(CPU_FAM_ESP32C3)
31#elif defined(CPU_FAM_ESP32S2)
33#elif defined(CPU_FAM_ESP32S3)
36#error "ESP32x SoC family not supported"
40#include "periph_cpu.h"
76#define ADC_NUMOF ARRAY_SIZE(adc_channels)
108#define DAC_NUMOF ARRAY_SIZE(dac_channels)
116#if defined(I2C0_SCL) && !defined(I2C0_SCL_PULLUP)
118#define I2C0_SCL_PULLUP true
121#if defined(I2C0_SDA) && !defined(I2C0_SDA_PULLUP)
123#define I2C0_SDA_PULLUP true
126#if (SOC_I2C_NUM > 1) && defined(I2C1_SCL) && !defined(I2C1_SCL_PULLUP)
128#define I2C1_SCL_PULLUP true
131#if (SOC_I2C_NUM > 1) && defined(I2C1_SDA) && !defined(I2C1_SDA_PULLUP)
133#define I2C1_SDA_PULLUP true
140#if defined(I2C0_SCL) && defined(I2C0_SDA) && defined(I2C0_SPEED)
142 .module = PERIPH_I2C0_MODULE,
146 .scl_pullup = I2C0_SCL_PULLUP,
147 .sda_pullup = I2C0_SCL_PULLUP,
150#if (SOC_I2C_NUM > 1) && defined(I2C1_SCL) && defined(I2C1_SDA) && defined(I2C1_SPEED)
152 .module = PERIPH_I2C1_MODULE,
156 .scl_pullup = I2C1_SCL_PULLUP,
157 .sda_pullup = I2C1_SCL_PULLUP,
170#define I2C_NUMOF ARRAY_SIZE(i2c_config)
183static const gpio_t pwm0_gpios[] = PWM0_GPIOS;
197static const gpio_t pwm2_gpios[] = PWM2_GPIOS;
204static const gpio_t pwm3_gpios[] = PWM3_GPIOS;
214 .module = PERIPH_LEDC_MODULE,
215 .
group = LEDC_LOW_SPEED_MODE,
216 .timer = LEDC_TIMER_0,
223 .module = PERIPH_LEDC_MODULE,
224#ifdef SOC_LEDC_SUPPORT_HS_MODE
225 .group = LEDC_HIGH_SPEED_MODE,
227 .group = LEDC_LOW_SPEED_MODE,
229 .timer = LEDC_TIMER_1,
236 .module = PERIPH_LEDC_MODULE,
237 .group = LEDC_LOW_SPEED_MODE,
238 .timer = LEDC_TIMER_2,
245 .module = PERIPH_LEDC_MODULE,
246#ifdef SOC_LEDC_SUPPORT_HS_MODE
247 .group = LEDC_HIGH_SPEED_MODE,
249 .group = LEDC_LOW_SPEED_MODE,
251 .timer = LEDC_TIMER_3,
265#define PWM_NUMOF ARRAY_SIZE(pwm_config)
285#ifndef HAVE_RMT_CHANNEL_CONFIG
287#ifdef WS281X_PARAM_PIN
299#define RMT_CH_NUMOF ARRAY_SIZE(rmt_channel_config)
312#if defined(SPI0_CTRL)
321#if defined(SPI1_CTRL) && (SOC_SPI_PERIPH_NUM > 2)
340#define SPI_NUMOF ARRAY_SIZE(spi_config)
342#if IS_USED(MODULE_PERIPH_SPI)
343static_assert(
SPI_NUMOF != 0,
"No SPI devices defined");
360#if (SOC_UART_NUM > 1) && defined(UART1_TXD) && defined(UART1_RXD)
366#if (SOC_UART_NUM > 2) && defined(UART2_TXD) && defined(UART2_RXD)
382#define UART_NUMOF ARRAY_SIZE(uart_config)
385#ifdef SOC_USB_OTG_SUPPORTED
391#include "usbdev_esp32.h"
398 .
periph = USB_OTG_FS_PERIPH_BASE,
407#define USBDEV_NUMOF ARRAY_SIZE(dwc2_usb_otg_fshs_config)
#define WS281X_PARAM_PIN
GPIO pin connected to the data pin.
#define I2C0_SPEED
I2C bus speed of I2C_DEV(0)
#define I2C0_SCL
SCL signal of I2C_DEV(0)
#define I2C0_SDA
SDA signal of I2C_DEV(0)
#define PWM1_GPIOS
PWM_DEV(1) is not used.
#define SPI1_MOSI
HSPI MOSI.
#define SPI1_SCK
HSPI SCK.
#define SPI1_MISO
HSPI MISO.
#define SPI1_CS0
HSPI CS0.
#define SPI1_CTRL
HSPI is used as SPI_DEV(1)
#define ARRAY_SIZE(a)
Calculate the number of elements in a static array.
static const uart_conf_t uart_config[]
Static array with configuration for declared UART devices.
#define DAC_GPIOS
Declaration of GPIOs that can be used as DAC channels.
static const pwm_config_t pwm_config[]
GPIOs used as channels for the according PWM device.
static const gpio_t dac_channels[]
Static array with declared DAC channels.
static const spi_conf_t spi_config[]
Static array with configuration for declared SPI devices.
static const rmt_channel_config_t rmt_channel_config[]
RMT channel configuration.
static const gpio_t adc_channels[]
Static array with declared ADC channels.
static const i2c_conf_t i2c_config[]
Static array with configuration for declared I2C devices.
#define SPI_NUMOF
Number of SPI interfaces.
#define ADC_GPIOS
Declaration of GPIOs that can be used as ADC channels.
#define SPI0_MOSI
HSPI / SPI_DEV(0) MOSI pin.
#define UART1_TXD
TxD pin of UART_DEV(1)
#define SPI0_CTRL
HSPI / SPI_DEV(0) controller.
#define SPI0_CS0
HSPI / SPI_DEV(0) CS default pin, only used when cs parameter in spi_acquire is GPIO_UNDEF.
#define SPI0_SCK
HSPI / SPI_DEV(0) SCK pin.
#define UART1_RXD
RxD pin of UART_DEV(1)
#define SPI0_MISO
HSPI / SPI_DEV(0) MISO pin.
static const dwc2_usb_otg_fshs_config_t dwc2_usb_otg_fshs_config[]
Common USB OTG FS configuration.
Common macros and compiler attributes/pragmas configuration.
Common declarations of ESP32 periphery for all ESP32 boards.
#define UART0_RXD
RxD of UART_DEV(0) used on all ESP32 boards.
#define UART0_TXD
TxD of UART_DEV(0) used on all ESP32 boards.
Common peripheral configurations for ESP32-C3 boards.
Common peripheral configurations for ESP32-S2 boards.
Common peripheral configurations for ESP32-S3 boards.
uintptr_t periph
USB peripheral base address.
I2C configuration structure.
i2c_speed_t speed
Configured bus speed, actual speed may be lower but never higher.
PWM configuration structure type.
uint8_t ledc_mode_t group
< LEDC module identifier
RMT channel configuration.
SPI device configuration.
spi_ctrl_t ctrl
SPI controller used for the interface.
UART device configuration.
gpio_t txd
GPIO used as TxD pin.
@ DWC2_USB_OTG_PHY_BUILTIN
on-chip FS PHY
@ DWC2_USB_OTG_FS
Full speed peripheral.