ESP-IDFを使ってみる

周辺機器ドライバー


ESP-IDFには各種周辺機器を制御するための様々なドライバーが用意されています。
各種周辺機器はGPIOが固定(専用GPIO)の周辺機器と、任意のGPIOで使うことが出来る周辺機器が有ります。
周辺機器 GPIO
ADC 専用GPIO
DAC 専用GPIO
Touch Sensor 専用GPIO
JTAG 専用GPIO
SD/SDIO/MMC HostController 専用GPIO
MCPWM 任意のGPIO
SPI MasterController 任意のGPIO
SPI SlaveController 専用GPIO
UART 任意のGPIO
I2C 任意のGPIO
I2S 任意のGPIO
LEDC 任意のGPIO
RMT 任意のGPIO
GPIO 任意のGPIO
Parallel QSPI 専用GPIO
EMAC 専用GPIO
Pulse Counter 任意のGPIO
TWAI 任意のGPIO
USB 専用GPIO

任意のGPIOで使用できる周辺機器は、GPIO Mattrixと言う機能を使います。
これらドライバーのサンプルコードはこ ちらに公開されています。



これらのドライバーは特定のSoCだけで使用できる(使用できない)物も含まれています。
それぞれのSoCがどの周辺機器をサポートしているかどうかは、各SoCのsoc_caps.hを見れば分かります。
例えばESP32のsoc_caps.hはこ ちらに公開されていますが、以下の内容になっています。
#define SOC_ADC_SUPPORTED           1
#define SOC_DAC_SUPPORTED           1
#define SOC_UART_SUPPORTED          1
#define SOC_MCPWM_SUPPORTED         1
#define SOC_GPTIMER_SUPPORTED       1
#define SOC_SDMMC_HOST_SUPPORTED    1
#define SOC_BT_SUPPORTED            1
#define SOC_PCNT_SUPPORTED          1
#define SOC_PHY_SUPPORTED           1
#define SOC_WIFI_SUPPORTED          1
#define SOC_SDIO_SLAVE_SUPPORTED    1
#define SOC_TWAI_SUPPORTED          1
#define SOC_EFUSE_SUPPORTED         1
#define SOC_EMAC_SUPPORTED          1
#define SOC_ULP_SUPPORTED           1
#define SOC_CCOMP_TIMER_SUPPORTED   1
#define SOC_RTC_FAST_MEM_SUPPORTED  1
#define SOC_RTC_SLOW_MEM_SUPPORTED  1
#define SOC_RTC_MEM_SUPPORTED       1
#define SOC_I2S_SUPPORTED           1
#define SOC_RMT_SUPPORTED           1
#define SOC_SDM_SUPPORTED           1
#define SOC_GPSPI_SUPPORTED         1
#define SOC_LEDC_SUPPORTED          1
#define SOC_I2C_SUPPORTED           1
#define SOC_SUPPORT_COEXISTENCE     1
#define SOC_AES_SUPPORTED           1
#define SOC_MPI_SUPPORTED           1
#define SOC_SHA_SUPPORTED           1
#define SOC_FLASH_ENC_SUPPORTED     1
#define SOC_SECURE_BOOT_SUPPORTED   1
#define SOC_TOUCH_SENSOR_SUPPORTED  1
#define SOC_BOD_SUPPORTED           1
#define SOC_ULP_FSM_SUPPORTED       1
#define SOC_CLK_TREE_SUPPORTED      1
#define SOC_MPU_SUPPORTED           1
#define SOC_WDT_SUPPORTED           1
#define SOC_SPI_FLASH_SUPPORTED     1
#define SOC_RNG_SUPPORTED           1
#define SOC_LIGHT_SLEEP_SUPPORTED   1
#define SOC_DEEP_SLEEP_SUPPORTED    1
#define SOC_LP_PERIPH_SHARE_INTERRUPT   1   // LP peripherals sharing the same interrupt source
#define SOC_PM_SUPPORTED            1



こ ちらに各SoCの違いが公開されています。
URLから判断すると、日本の方が公開しているようです。
メチャクチャ力作です。

続く....