🛠 Piloter les GPIO et lire l'IMU sur XIAO STM32C5
Objectifs
Ce tutoriel vise à comprendre la gestion des entrées-sorties numériques (GPIO) et l'interaction avec le capteur inertielle 6 axes LSM6DS3TR-C présent sur la carte XIAO STM32C5. Nous allons configurer une LED pour l'indicateur visuel et lire les données d'accélération via le bus I2C interne. Ce niveau intermédiaire suppose une familiarité avec la compilation de code embarqué.
Matériel nécessaire
- Carte Seeed Studio XIAO STM32C5
- Câble USB-C pour l'alimentation et la programmation
- Ordinateur avec STM32CubeIDE ou PlatformIO installé
- Aucun composant externe requis (le capteur est embarqué)
Étapes
- Préparez votre environnement de développement. Si vous utilisez STM32CubeIDE, créez un nouveau projet en sélectionnant le microcontrôleur STM32C5A3CG. Assurez-vous que la fréquence système est bien réglée sur 144 MHz pour exploiter la pleine puissance du cœur Arm Cortex-M33.
- Configurez les périphériques dans le CubeMX. Activez l'interface I2C connectée au LSM6DS3TR-C. Notez que ce capteur est directement câblé sur la carte, il n'y a pas de soudure à effectuer. Configurez également un GPIO en mode sortie pour une LED (par exemple, la LED utilisateur si disponible, ou une broche libre comme D0).
- Générez le code et ouvrez le fichier principal (main.c). Incluez les bibliothèques nécessaires pour le pilote du LSM6DS3TR-C. Si vous utilisez Zephyr RTOS via PlatformIO, ajoutez les dépendances du driver du capteur dans votre fichier
platformio.ini.
- Initialisez le système et le capteur. Dans la fonction
main, appelez la fonction d'initialisation du bus I2C, puis celle du capteur inertielle. Vérifiez que le capteur répond correctement en lisant son ID de périphérique.
- Implémentez la boucle de lecture. Lisez les valeurs d'accélération (X, Y, Z) en continu. Pour afficher ces données, configurez l'UART (via USB-C) en mode Full-Speed et envoyez les valeurs formatées sur le moniteur série.
- Ajoutez une logique de réaction GPIO. Par exemple, si la valeur d'accélération Z dépasse un seuil (simulant un choc ou une inclinaison), allumez la LED configurée à l'étape 2 en mettant la broche à l'état haut (
HAL_GPIO_WritePin). Éteignez-la sinon.
Vérification
Ouvrez le moniteur série de votre IDE à 115200 bauds. Vous devriez voir les valeurs d'accélération défiler. En inclinant ou tapotant légèrement la carte, observez la variation des chiffres et l'allumage instantané de la LED, confirmant que la liaison entre la lecture du capteur et la commande GPIO est fonctionnelle.
Pour aller plus loin
Explorez le circuit de chauffage programmable par PWM du LSM6DS3TR-C pour réduire la dérive thermique. Configurez un timer PWM pour activer le chauffage et observez la stabilisation des mesures après quelques minutes. Vous pouvez également explorer les deux contrôleurs CAN FD, en utilisant le FDCAN2 avec le transceiver embarqué pour communiquer avec d'autres nœuds CAN.