ESP-IDF

Introduction

Cette fiche résume l’ensemble des fonctions ESP-IDF permettant de manipuler les périphériques internes de l’ESP32-WROOM-32 via l’API native (non via Arduino).


GPIO – Entrées/Sorties

Fonctionnalité Fonctions ESP-IDF
Configuration gpio_config
Écriture gpio_set_level
Lecture gpio_get_level
Interruption gpio_install_isr_service, gpio_isr_handler_add


UART

Fonctionnalité Fonctions ESP-IDF
Initialisation uart_driver_install, uart_param_config
Transmission uart_write_bytes
Réception uart_read_bytes


SPI

Fonctionnalité Fonctions ESP-IDF
Initialisation du bus spi_bus_initialize
Ajout périphérique spi_bus_add_device
Transfert de données spi_device_transmit


I2C

Fonctionnalité Fonctions ESP-IDF
Configuration i2c_param_config, i2c_driver_install
Communication maître i2c_master_write_read_device


I2S

Fonctionnalité Fonctions ESP-IDF
Initialisation i2s_driver_install, i2s_set_pin
Transmission / Réception i2s_write, i2s_read


PWM (LEDC)

Fonctionnalité Fonctions ESP-IDF
Configuration timer & canal ledc_timer_config, ledc_channel_config
Mise à jour du duty cycle ledc_set_duty, ledc_update_duty

Exemple PWM

#include "driver/ledc.h"

// Configuration des timers et canaux PWM
void pwm_init(gpio_num_t gpio_num, ledc_channel_t channel, uint32_t freq_hz, uint8_t resolution_bits) {
    // Configuration du timer PWM
    ledc_timer_config_t ledc_timer = {
        .speed_mode       = LEDC_HIGH_SPEED_MODE,
        .timer_num        = LEDC_TIMER_0,
        .duty_resolution  = resolution_bits,  // Résolution (ex: 13 bits)
        .freq_hz          = freq_hz,           // Fréquence du PWM (en Hz)
        .clk_cfg          = LEDC_APB_CLK_SRC
    };
    ledc_timer_config(&ledc_timer);

    // Configuration du canal PWM
    ledc_channel_config_t ledc_channel = {
        .gpio_num       = gpio_num,           // GPIO spécifié par l'utilisateur
        .speed_mode     = LEDC_HIGH_SPEED_MODE,
        .channel        = channel,            // Canal PWM
        .intr_type      = LEDC_INTR_DISABLE,
        .timer_sel      = LEDC_TIMER_0,
        .duty           = 0,                  // Initialisation avec un duty cycle de 0
        .hpoint         = 0
    };
    ledc_channel_config(&ledc_channel);
}

// Configure le canal PWM pour un périphérique spécifique.
static void set_pwm_device(ledc_channel_t channel, uint8_t brightness) {
    uint32_t duty = (LEDC_TIMER_MAX_DUTY * (100 - brightness)) / 100;
    ledc_set_duty(LEDC_HIGH_SPEED_MODE, channel, duty);
    ledc_update_duty(LEDC_HIGH_SPEED_MODE, channel);
}

// Exemple du réglage d'une LED rouge
void red_led(uint8_t brightness) {
    set_pwm_device(LEDC_CHANNEL_0, brightness);
}


ADC (12 bits)

Fonctionnalité Fonctions ESP-IDF
Configuration adc1_config_width, adc1_config_channel_atten
Lecture brute adc1_get_raw


DAC (8 bits)

Fonctionnalité Fonctions ESP-IDF
Activation / sortie dac_output_enable, dac_output_voltage


Touch Pad

Fonctionnalité Fonctions ESP-IDF
Initialisation touch_pad_init, touch_pad_config
Lecture touch_pad_read


CAN (TWAI)

Fonctionnalité Fonctions ESP-IDF
Installation pilote twai_driver_install
Transmission twai_transmit
Réception twai_receive


Timers matériels

Fonctionnalité Fonctions ESP-IDF
Configuration & démarrage timer_config, timer_init, timer_start
Lecture du compteur timer_get_counter_value


RTC & Deep Sleep

Fonctionnalité Fonctions ESP-IDF
Wakeup timer / GPIO esp_sleep_enable_timer_wakeup, esp_sleep_enable_ext0_wakeup
Entrer en deep sleep esp_deep_sleep_start


Watchdog

Fonctionnalité Fonctions ESP-IDF
Configuration globale esp_task_wdt_init
Surveiller une tâche esp_task_wdt_add, esp_task_wdt_reset


Wi-Fi

Fonctionnalité Fonctions ESP-IDF
Initialisation esp_wifi_init, esp_wifi_set_mode, esp_wifi_start
Connexion esp_wifi_set_config, esp_wifi_connect


Bluetooth (Classic & BLE)

Fonctionnalité Fonctions ESP-IDF
Init contrôleur esp_bt_controller_init, esp_bt_controller_enable
BLE GAP / GATT esp_ble_gap_*, esp_ble_gatt_*


Cryptographie & RNG

Fonctionnalité Fonctions ESP-IDF
Générateur aléatoire esp_random
Chiffrement AES esp_aes_encrypt, mbedtls_aes_*
Hash SHA / RSA / ECC mbedtls_sha256_*, esp_ecdsa_sign, mbedtls_rsa_*


Secure Boot / Flash Encryption

Fonctionnalité Fonctions ESP-IDF
Configuration via menuconfig CONFIG_SECURE_BOOT, CONFIG_FLASH_ENCRYPTION_ENABLED
Fonctions internes / OTA esp_secure_boot_*, esp_flash_encrypt_*


Capteurs internes

Fonctionnalité Fonctions ESP-IDF
Capteur Hall hall_sensor_read
Température (via ADC, pas directement exposé)

Source