ESP32-S3 : Le projet
Dans cette série d'articles, nous allons :
- Découvrir la famille de processeurs Espressif ESP32-S3
- Déployer les différents outils pour programmer et debugger ces microcontrôleurs
- Tenter d'utiliser TinyGo pour compiler et exécuter notre premier programme
NB: A date, le support des ESP32-S3 sur TinyGo est encore en phase de developpement. Il est donc possible que nous n'arrivions pas jusqu'a cette étape 😄
Caractéristiques techniques ESP32-S3
Quelques informations sur les ESP32-S3 :
Caractéristique | Détail |
---|---|
CPU | Double cœur Xtensa® LX7 (cadencé jusqu'à 240 MHz) |
Architecture | 32 bits, optimisée pour l'efficacité énergétique |
Mémoire | 512 KB de SRAM interne, support pour PSRAM externe |
Wi-Fi | Wi-Fi 4 (802.11 b/g/n) |
Bluetooth | Bluetooth 5.0 (BLE + Bluetooth Mesh) |
Accélération IA | Instructions SIMD pour optimiser les algorithmes de Machine Learning (accélération IA légère) |
Cryptographie matérielle | AES, SHA, RSA, ECC, Random Number Generator (TRNG) |
Sécurité | Boot sécurisé, chiffrement de flash, signature numérique, HMAC, Secure Debug |
Interface USB | Contrôleur USB OTG intégré (peut agir comme périphérique ou hôte) |
Périphériques standards | SPI, I2C, I2S, UART, CAN, PWM, ADC, DAC, SD/MMC, Ethernet MAC |
Capacités de traitement parallèle | Deux cœurs indépendants pour tâches multitâches (FreeRTOS natif) |
GPIOs | Jusqu’à 45 broches GPIO (beaucoup multiplexées avec fonctions spéciales) |
DMA | Plusieurs canaux DMA pour des transferts rapides de données |
Mode Deep Sleep | Très basse consommation, idéal pour l'IoT sur batterie |
Mémoire Flash | Interface pour NOR/NAND Flash externe (via SPI) |
USB-JTAG intégré | Débogage sans matériel externe via le port USB |
Taille et Packaging | Disponibles en modules (ESP32-S3-WROOM, ESP32-S3-WROVER) et en puces individuelles |
Carte de développement
J'ai choisi une carte ESP32-S3 avec écran LCD 800x480:
Elle dispose de connecteurs USB, I2C, CAN Bus, UART, Chargeur de batterie, Sd Card, ce qui ouvre de nombreuses possibilités, le tout pour moins de 60 Euros.
Les premiers pas
Mes premiers objectifs ont été de :
- Comment alimenter électriquement la carte
- Comment programmer la carte
- Comment accéder à une interface série pour échanger des messages
La carte ESP32-S3-Touch-LCD-7 dispose de deux ports USB-C.
La commande linux "lsusb" nous donne des indications sur les deux ports USB:
// Port USB marqué "USB"
$ lsusb
Bus 001 Device 012: ID 303a:1001 Espressif USB JTAG/serial debug unit
// Port USB marqué "UART1"
$ lsusb
Bus 001 Device 013: ID 1a86:55d3 QinHeng Electronics USB Single Serial
On a bien un port USB pour un usage mixte JTAG et UART, et un second port pour accéder à une UART. Les deux ports USB permettent d'alimenter électriquement la carte et l'écran.
Pour le moment, nous n'avons pas besoin d'en savoir plus.
Flasher un firmware
Le programme "esptool.py" (package Arch esptool) permet (entre autres) de :
- Lire, écrire, effacer la mémoire et la flash.
- Lecture du chip_id, flash_id, mac from OTP Rom (One Time Programmable)
Plusieurs firmwares sont disponibles dans le package de sources/sdk de démonstration:
(https://files.waveshare.com/wiki/ESP32-S3-Touch-LCD-7/ESP32-S3-Touch-LCD-7-Demo.zip)
Exemple d'utilisation d'esptool pour flasher un des firmwares d'exemple:
$ esptool.py --chip=esp32s3 --port /dev/ttyACM0 write_flash 0x0000 ~/Downloads/tmp/ESP32-S3-Touch-LCD-7-Demo/Firmware/UART_Test.bin
Pour vérifier le bon fonctionnement du firmware flashé, on lance un terminal série et on reboote la carte avec le bouton RESET:
$ picocom /dev/ttyACM0 -b 115200
CPU0
SP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DOUT, clock div:1
load:0x3fce2820,len:0x1918
load:0x403c8700,len:0x4
load:0x403c8704,len:0xe5c
load:0x403cb700,len:0x303c
entry 0x403c893c <<<< Démarrage de l'application
*****************Fin des messages du bootloader *******************
*****************Début des messages de l'application **************
I (27) boot: ESP-IDF v5.3.1 2nd stage bootloader
I (27) boot: compile time Nov 15 2024 14:13:22
I (27) boot: Multicore bootloader
I (30) boot: chip revision: v0.2
I (34) qio_mode: Enabling default flash chip QIO
On peut voir ci dessus les 11 premieres lignes du bootloader, puis les messages de l'application.
Conclusions
Ces premiers tests nous ont permis de :
- Avoir un apperçu des possibilités de la plateforme ESP32S3
- Prendre en main la carte de développement
- Flash d'un firmware de démonstration avec l'outil esptool
- Recevoir des messages de l'application de démo .
- Visualiser les messages du bootloader avant le démarrage de l'application