Le microcontrôleur RP2040 équipant la Pico est une petite merveille et malgré l'absence de connectivité wifi ou Bluetooth, l'étendue des fonctionnalités intégrées reste très impressionnante. Nous avons abordé le sujet du sous-système PIO dans un précédent article [1], mais celui-ci n'était qu'une découverte de la fonctionnalité. Il est temps à présent de pousser plus loin nos expérimentations en mêlant plusieurs ressources à notre disposition : PIO, DMA et accès à la flash QSPI.
Comme nous l'avons vu dans un article précédent, le sous-système PIO intégré au RP2040 est constitué de deux instances PIO disposant chacune de quatre machines à états. Celles-ci peuvent exécuter un programme, placé dans une mémoire spécifique de 32 instructions pour chaque instance, et ont pour tâche principale de contrôler les GPIO. La raison d'être primaire de ce sous-système est d'éliminer totalement la nécessité d'avoir recours au bit-banging ou, en d'autres termes, d'implémenter de façon logicielle des protocoles de communication ou de signalement.
Il en résulte la possibilité de créer de nouveaux périphériques, au cœur même du composant, sans surcharger le code ARM inutilement, celui-ci se contentant de configurer la ou les machines à états et de communiquer avec elles via des buffers FIFO. Le programme exécuté par une machine à états est écrit dans un langage assembleur basique utilisant une dizaine d'instructions. Ce code est...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première