Home Notre microcontrôleur: le STM32F103
Post
Cancel

Notre microcontrôleur: le STM32F103

Pour gérer les actionneurs, moteurs et capteurs, nous utilisons des microcontrôleurs répartis dans tout le robot. Parmi ceux existant nous utilisons des STM32F103 comme dans les TPs de 4A à l’INSA.

Un microcontrôleur est un ”petit” maid qui ne possède pas de système d’exploitation, il est vide. Ainsi, c’est nous qui devons écrire le code qui va s’exécuter sur lui, le firmaware (entre soft et hardware) puis le transmettre à ce dernier. Cette action se nomme flasher le contrôleur. Une fois le contrôleur a été flashé il garde le programme à exécuter dans sa mémoire morte et une fois mis sur tension il s’exécutera.

Si vous observez les microcontrôleurs au Club, vous vous rendrez compte qu’ils possèdent un gran nombre de pins (48 dans notre cas). Chacun porte un nom spécial et a aussi des fonctions désignées. Nous avons des pins de GND, de source de tension, mais aussi des GPIOs (General Purpose Input Output) qui nous permettent de communiquer avec l’extérieur. Ces derniers peuvent être configurés par le programmeur pour répondre à ses besoins. Pour fixer cette configuration, nous devons affecter certaines valeurs spéciales aux registres de control de chacun de ses ports. Grâce à la librairie HAL (High Applicative Layer) nous n’aurons pas besoin de le faire directement, mais en appelant leurs méthodes. Regarder le code firmware commenté pour comprendre les étapes de configuration.

De plus, selon le périphérique que nous souhaitons utilisé ces ports vont devoir être configuré selon une configuration précise. Pour trouver toutes les configurations pour chaque périphérique il faut regarder dans le reference manual RM0008 à la page 166. Pour voir sur quels pins sont branchés tous les périphériques (USART, Timer, etc..) il faut voir la page 176.

Les différentes configurations des ports GPIO possibles sont :

Mode InputUtilisation
Floating InputMode standard, prend l’entrée tel quel sans tensions de référence
Input with pull-up/pull-downEntrée digital avec réference au GND ou à la tension de polarisation (Vcc) selon à quel potentiel on branche la résistance
Analog InputPour signaux analogiques (ADC ou CAN)
Mode OutputUtilisation
General purpose output push-pullLe composant sera alimenté par pin de sortie
General purpose output Open-drainComposant alimenté par nous. Besoin d’une résistance pull-up (au VCC) pour assurer le niveau logique ’1’
Alternate function output Push-pullConfiguration spéciale pour utiliser certains périphériques
Alternate function output Open-drainConfiguration spéciale pour utiliser certains périphériques. Vérifier le besoin d’un résistance pull-up

Dernier point important sur le clock. C’est le signal qui synchronise et fait marcher tout le système. Ainsi vous observerez dans le code qu’avant d’utiliser n’importe quel GPIO il faut alimenter leur branche par une clock pour les activer. Chaque périphérique est sur une des deux branches qui existent avec chacune une fréquence maximale différente de fonctionnement (ceci est important pour les protocoles de communication notamment de type USART).

This post is licensed under CC BY 4.0 by the author.