« Microcontrôleur » : différence entre les versions

Clementin.granier1 (discussion | contributions)
Ajout ressources
Clementin.granier1 (discussion | contributions)
Ajout source ESP32 et prog STM32
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 11 : Ligne 11 :


=== STM32 ===
=== STM32 ===
Très bons MCU mais très peu pratiques à utiliser. '''Recommandés car gratuits'''
Très bons MCU mais peu pratiques à utiliser. '''Recommandés car gratuits/vraiment pas chers'''


=== Raspberry Pi Pico ===
=== Raspberry Pi Pico ===
Ligne 69 : Ligne 69 :


=== Pinout d'un ESP32 classique et pins à éviter ===
=== Pinout d'un ESP32 classique et pins à éviter ===
Tous les pins sont capables du PWM.
Tous les pins sont capables du PWM. Voir ici pour plus de détails : https://lastminuteengineers.com/esp32-pinout-reference/
{| class="wikitable"
{| class="wikitable"
|+Classification des pins d'un ESP32
|+Classification des pins d'un ESP32
Ligne 208 : Ligne 208 :
== nRF ==
== nRF ==
Il existe des cartes de devs nRF52840 qui coûtent pas cher (3€) et sont très performantes et complètes, dans une footprint identique à celle d'un arduino pro micro, chercher '''Supermini nRF52840''' sur aliexpress.
Il existe des cartes de devs nRF52840 qui coûtent pas cher (3€) et sont très performantes et complètes, dans une footprint identique à celle d'un arduino pro micro, chercher '''Supermini nRF52840''' sur aliexpress.
== STM32 ==
Les MCU de chez ST se divisent en deux parties principales : les STM8 qui ont des bus de données 8 bits, et les STM32 qui sont des 32 bits. D'un point de vue programmation, les STM8 sont plus complexes car moins de flash, moins de puissance de calcul etc. Par contre, ils sont encore moins chers !! Vous pouvez en trouver pour 20 centimes pièce sur LCSC. Je vais me concentrer sur les STM32 dans ce guide.
Les STM32Wx sont en wireless, les STM32Lx et Ux sont en basse consommation, les Cx, F1, F3 et F0 sont les plus classiques et les autres Fx et Hx sont en haut de gamme.<ref>www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html</ref>
Je conseille souvent les F3, ils sont plutôt solides.
=== Setup de programmation ===
Pour bien dev chez ST, il vous faudra plusieurs logiciels :
* STM32CubeMX<ref>https://www.st.com/en/development-tools/stm32cubemx.html</ref> : Très recommandé, il vous génèrera les fichiers de base (pinout, périphériques, clock...)
* STM32CubeIDE<ref>https://www.st.com/en/development-tools/stm32cubeide.html</ref> : Il permettra de compiler plus facilement votre code.
* STM32CubeProgrammer<ref>https://www.st.com/en/development-tools/stm32cubeprog.html</ref> : Pour flash les MCU avec les fichiers compilés.
=== Overview du process de programmation classique ===
Vous pouvez ouvrir STM32CubeMX, choisir votre mcu et configurer les périphériques. Il faudra sélectionner les pins que vous voulez utiliser, par exemple en tant qu'ADC, les mettre sur le bon périphérique, puis aller dans le menu à gauche et chercher le périphérique que vous voulez pour terminer de le configurer (baud rate sur l'UART, source des clocks, ...).
Votre pin devra passer de orange à vert lorsqu'il est bien configuré.
Une fois tout bien configuré, vous pouvez cliquer sur suivant puis générer le code.
Une fois cela fait, vous pouvez éditer le code situé dans /[dossier]/src/main.c avec votre IDE préféré, puis le compiler à l'aide STM32CubeIDE (il vous faut importer le projet d'abord).
Une fois votre fichier .elf généré, vous pouvez ouvrir STM32CubeProgrammer, sélectionner votre méthode de programmation (UART, STLink, JTAG), puis cliquez sur Connect et attendez que votre board se connecte. Une fois la connection réussie, allez dans l'onglet Upload, choississez votre .elf et cliquez sur Upload. Une fois que c'est terminé, il ne vous reste plus qu'à reset le mcu en mode normal et tout devrait marcher !
=== Tips & Tricks ===
==== État du pin BOOT0 ====
C'est rarement précisé dans les datasheet, mais si le pin BOOT0 est à l'état haut le MCU sera en mode bootloader, à l'état bas il sera en mode normal
{{Warning}}C'est l'inverse des ESP32 !
==== GPIO_Analog ====
Beaucoup de pins sont capables de passer en mode "GPIO_Analog". Mais aucun rapport avec l'ADC ! Cela veut simplement dire qu'ils sont déconnectés du circuit numérique qui est derrière. Une option dans STM32CubeMX passe tous les pins non utilisés en GPIO_Analog afin de réduire la consommation.
==== UART et bootloader ====
Les pins d'UART1 peuvent être rebind une fois le MCU démarré, mais ces modifications ne s'appliquent pas dans le bootloader ! Il faudra flasher la carte avec les pins par défaut...


== Ressources ==
== Ressources ==
https://github.com/yellobyte/ESP32-DevBoards-Getting-Started
https://github.com/yellobyte/ESP32-DevBoards-Getting-Started
[[Catégorie:Articles techniques d'électronique]]
[[Catégorie:Articles techniques d'électronique]]