« Espressif ESP32-S3 DevKitC-1 » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :


= Présentation =
= Présentation =
L''''ESP32-S3-DevKitC-1''' est une carte de développement d''''entrée de gamme''' équipée d'un microcontrôleur ESP32-S3-WROOM-1, ESP32-S3-WROOM-1U ou ESP32-S3-WROOM-2 ''(selon le modèle)''. Ainsi que d'un module '''MCU Wi-Fi''' + '''Bluetooth® Low Energy ''(BLE)''''' intégrant des fonctions Wi-Fi et Bluetooth à faible consommation d'énergie.


== Schéma de la carte ==
== Schéma de la carte ==
Ligne 59 : Ligne 61 :
* Paramétrage de la partition :
* Paramétrage de la partition :


  Partition Scheme : Huge APP (3MB No OTA/1MB SPIFFS)
  Partition Scheme : 8M with spiffs (3MB APP/1.5MB SPIFFS)
 
= Requêtes d'interruption =
 
== Timers ==
 
=== Timer matériel ===
 
* Cet exemple illustre l'incrémentation à fréquence régulière ''(toutes les 1 secondes)'' de la variable '''watchdog_count''' à l'aide du timer matériel du microcontrôleur.
 
hw_timer_t *timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
# Fonction d'interruption
void IRAM_ATTR timer_isr(){
  portENTER_CRITICAL_ISR(&timerMux);          # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
  watchdog_count++;                            # Variable incrémentale
  portEXIT_CRITICAL_ISR(&timerMux);            # Libère le verrou
}
# Initialisation du timer dans la fonction setup()
setup () {
  timer = timerBegin(1000000);              # Limite du timer à 1 seconde
  timerAttachInterrupt(timer, &timer_isr);  # Exécution de la fonction timer_isr à l'expiration du timer
  timerAlarm(timer, 1000000, true, 0);      # Répétition du timer
}
loop() {
}
 
=== Timer logiciel FreeRTOS ===
 
* Cet exemple illustre l'incrémentation à fréquence régulière ''(toutes les 1 secondes)'' de la variable '''watchdog_count''' à l'aide du timer logiciel du microcontrôleur.
 
hw_timer_t * timer = NULL;
volatile SemaphoreHandle_t timerSemaphore;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
# Fonction d'interruption
void ARDUINO_ISR_ATTR onTimer() {
  portENTER_CRITICAL_ISR(&timerMux);          # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
  watchdog_count++;                            # Variable incrémentale
  portEXIT_CRITICAL_ISR(&timerMux);            # Libère le verrou
  xSemaphoreGiveFromISR(timerSemaphore, NULL); # Libération du sémaphore
}
# Initialisation du timer dans la fonction setup()
setup () {
  timerSemaphore = xSemaphoreCreateBinary(); # Création du sémaphore
  timer = timerBegin(1000000);              # Limite du timer à 1 seconde
  timerAttachInterrupt(timer, &onTimer);    # Exécution de la fonction onTimer à l'expiration du timer
  timerAlarm(timer, 1000000, true, 0);      # Répétition du timer
}
loop() {
}

Dernière version du 21 octobre 2026 à 17:27

— Electronique —

Capteur DS18B20 | Capteur SEN0562 | Capteur SEN0381 | Mémoire ADA563X | Chargeur/Alim Bat. Lipo

Microcontrôleur Espressif ESP32-S3 DevKitC-1

Présentation

L'ESP32-S3-DevKitC-1 est une carte de développement d'entrée de gamme équipée d'un microcontrôleur ESP32-S3-WROOM-1, ESP32-S3-WROOM-1U ou ESP32-S3-WROOM-2 (selon le modèle). Ainsi que d'un module MCU Wi-Fi + Bluetooth® Low Energy (BLE) intégrant des fonctions Wi-Fi et Bluetooth à faible consommation d'énergie.

Schéma de la carte

ESPRESSIF ESP32-S3 DevKitC-1 PINS.jpg

Broches spécifiques

.
Broches Etat Fonctions
GPIO0/36 flottant Bouton BOOT.
GPIO3/13 flottant Contrôle du BOOT mode JTAG
GPIO9/15 GPIO10/16 GPIO11/17 GPIO12/18 GPIO13/19 GPIO14/20 flottant Interface SPI et mémoire PSRAM.
GPIO35/32 GPIO36/33 GPIO37/34 GPIO38/35 flottant Interface JTAG (MTCK, MTDO, MTDI, MTMS)
GPIO40/29 GPIO41/30 flottant Interface JTAG
GPIO26 GPIO27 GPIO28 GPIO29 GPIO30 GPIO31 GPIO32 flottant Interfaces SPI Flash et PSRAM (SPICS1, SPIHD, SPIWP, SPICS0, SPICLK, SPIQ, SPID)
GPIO43 GPIO44 flottant Interface de debug UART (UART0 TX, UART0 RX)
.
Broches Etat Fonctions
GPIO19/42 GPIO20/43 - USB D- et USB D+
GPIO38/32 - LED RGB
GPIO43/24 GPIO44/25 - Interface UART0 (communication série via USB)

Configuration de l'IDE

IDE Arduino

  • Rediriger la sortie Serial sur le port COM :
USB CDC On Boot : Enable
  • Paramétrage de la taille de la mémoire flash :
Flash Size : 8M
  • Paramétrage de la taille de la mémoire RAM :
PSRAM : OPI PSRAM
  • Paramétrage de la partition :
Partition Scheme : 8M with spiffs (3MB APP/1.5MB SPIFFS)

Requêtes d'interruption

Timers

Timer matériel

  • Cet exemple illustre l'incrémentation à fréquence régulière (toutes les 1 secondes) de la variable watchdog_count à l'aide du timer matériel du microcontrôleur.
hw_timer_t *timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;

# Fonction d'interruption
void IRAM_ATTR timer_isr(){
  portENTER_CRITICAL_ISR(&timerMux);           # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
  watchdog_count++;                            # Variable incrémentale
  portEXIT_CRITICAL_ISR(&timerMux);            # Libère le verrou
}

# Initialisation du timer dans la fonction setup()
setup () {
  timer = timerBegin(1000000);               # Limite du timer à 1 seconde
  timerAttachInterrupt(timer, &timer_isr);   # Exécution de la fonction timer_isr à l'expiration du timer
  timerAlarm(timer, 1000000, true, 0);       # Répétition du timer
}

loop() {

}

Timer logiciel FreeRTOS

  • Cet exemple illustre l'incrémentation à fréquence régulière (toutes les 1 secondes) de la variable watchdog_count à l'aide du timer logiciel du microcontrôleur.
hw_timer_t * timer = NULL;
volatile SemaphoreHandle_t timerSemaphore;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;

# Fonction d'interruption
void ARDUINO_ISR_ATTR onTimer() {
  portENTER_CRITICAL_ISR(&timerMux);           # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
  watchdog_count++;                            # Variable incrémentale
  portEXIT_CRITICAL_ISR(&timerMux);            # Libère le verrou
  xSemaphoreGiveFromISR(timerSemaphore, NULL); # Libération du sémaphore
}

# Initialisation du timer dans la fonction setup()
setup () {
  timerSemaphore = xSemaphoreCreateBinary(); # Création du sémaphore
  timer = timerBegin(1000000);               # Limite du timer à 1 seconde
  timerAttachInterrupt(timer, &onTimer);     # Exécution de la fonction onTimer à l'expiration du timer
  timerAlarm(timer, 1000000, true, 0);       # Répétition du timer
}

loop() {

}