Résoudre les problèmes d'extension E/S des microcontrôleurs en appliquant des périphériques externes
Avec la contribution de Rédacteurs nord-américains de DigiKey
2019-02-20
Les concepteurs sont généralement confrontés à deux problèmes en ce qui concerne les E/S d'un microcontrôleur. Le premier touche les microcontrôleurs qui sont le mieux adaptés à une application, mais dont les capacités E/S ne correspondent pas. Le deuxième survient lorsqu'une ligne de produits déjà lancée nécessite des E/S supplémentaires.
Dans le premier cas, les développeurs doivent souvent acheter un microcontrôleur plus cher et plus performant. Dans le deuxième cas, le coût de remplacement du microcontrôleur et le portage des logiciels associés peuvent être exorbitants et lents.
Une solution potentielle à ces deux problèmes serait d'utiliser des dispositifs d'extension E/S externes, sont souvent connectés au bus I2C ou SPI du microcontrôleur. Ils évitent d'avoir à sur-spécifier le microcontrôleur en termes de brochage et éventuellement de performances et d'empreinte. Parallèlement, cette approche garantit l'évolutivité de la conception du produit par rapport à un fluage de fonctionnalités, à une extension du marché cible, aux demandes de fonctionnalités des clients et à une mauvaise sélection de microcontrôleur (cela arrive).
Cet article traite des exigences E/S typiques d'un microcontrôleur et présente quelques dispositifs d'extension externes adaptés. Il explique ensuite le mode d'emploi de ces ressources hors puce pouvant fournir des fonctionnalités supplémentaires d'E/S à usage général, de mémoire de stockage, de modulation de largeur d'impulsion (PWM) et même d'horloge de surveillance.
Sélection d'une interface d'extension
Les microcontrôleurs présentent plusieurs interfaces intégrées différentes pour communiquer avec des dispositifs externes. En fonction du microcontrôleur, ces interfaces peuvent être les suivantes, pour n'en citer que quelques-unes :
- Interface périphérique série (SPI)
- Bus I2C (circuit inter-intégré)
- USB (bus série universel)
- Émetteur-récepteur universel asynchrone (UART)
- CAN (Controller Area Network)
- Wi-Fi
Les interfaces les mieux adaptées pour communiquer avec des dispositifs d'extension externes sont les types I2C et SPI.
I2C est un bus à deux fils fonctionnant traditionnellement à 100 kbps ou 400 kbps, même si certains dispositifs haute vitesse prennent en charge 1 Mbps ou plus. L'un des fils est dédié à la broche d'horloge et l'autre à la communication bidirectionnelle maître-esclave. Généralement, le microcontrôleur sert de maître et les dispositifs externes d'esclaves. Les esclaves sont adressables à l'aide d'un schéma d'adressage de 7 bits ou 10 bits.
SPI est une interface de bus à trois fils fonctionnant entre 1 Mbps et 12 Mbps. Le bus SPI présente une ligne de données de sortie maître, une ligne de données de sortie esclave et une horloge. Le microcontrôleur est toujours configuré comme dispositif maître, en communiquant avec les dispositifs esclaves via une ligne de « sélection d'esclave ». Chaque dispositif esclave connecté au microcontrôleur nécessite une broche de sortie dédiée pour lancer la communication. Il est très facile de s'imaginer qu'un développeur souhaitant connecter de nombreux dispositifs externes sera rapidement à court de lignes E/S pour la sélection des dispositifs esclaves.
Par exemple, si un développeur utilise le STM32L011D4P7 de STMicroelectronics, il aura 11 lignes E/S disponibles (Figure 1). Trois lignes E/S sont réservées aux données SPI et à l'horloge et les huit lignes restantes à la communication avec les dispositifs esclaves et à l'exécution des fonctionnalités supplémentaires requises par le système. Cette configuration est adaptée à de nombreuses applications, mais à un moment donné, le concepteur devra peut-être étendre les E/S.

Figure 1 : Le STM32L011D4P7 est un processeur Arm® Cortex®-M0+ avec un brochage limité à 11 E/S. (Source de l'image : STMicroelectronics)
En général, la règle empirique est très simple : utiliser le bus I2C pour ajouter les fonctionnalités suivantes :
- E/S
- PWM
- EEPROM
- Horloge de surveillance
Le bus SPI doit être utilisé pour ajouter des fonctionnalités comme un accès à la mémoire haut débit sur une carte SD.
Extension des E/S à usage général
Plusieurs circuits intégrés prennent en charge une extension d'entrée et de sortie via une interface I2C. Voici quelques exemples intéressants :
Le PCA8574 est particulièrement intéressant parce qu'il comprend un seul registre d'exécution pour l'entrée et la sortie. Un registre unique réduit considérablement le nombre de logiciels nécessaires à la configuration du dispositif et à la lecture et l'écriture des broches (Figure 2). Le microcontrôleur communique avec le PCA8574 via I2C et définit l'adresse du dispositif en fonction de la configuration des broches A0 à A2. Cela augmente la flexibilité de la conception et permet au développeur de choisir l'adresse esclave du PCA8574 et d'en avoir plusieurs dans une seule conception.

Figure 2 : Le PCA8574 de NXP est un expanseur I2C E/S 8 bits quasi bidirectionnel. Il s'agit d'un dispositif très simple et convivial avec un seul registre I2C de lecture et d'écriture pour l'exécution des fonctions E/S des broches. (Source de l'image : NXP Semiconductors)
Les broches P0 à P7 sont configurées par défaut comme entrées à la mise sous tension. La lecture du registre interne unique génère l'état de chaque broche du dispositif, qu'elle soit configurée en entrée ou en sortie. Le PCA8574 permet aux broches de servir simultanément d'entrée et de sortie, et une écriture dans le registre définira également la sortie du bit correspondant.
La commande de sortie passe en excursion haute par une faible résistance interne facilement neutralisée par une valeur d'entrée. En cas de changement d'un état d'entrée, la broche INT bascule à l'état bas pour avertir le microcontrôleur du changement d'état d'entrée. Le microcontrôleur peut ensuite lancer un appel I2C pour lire les nouvelles valeurs.
Extension PWM
L'expanseur PWM est un dispositif d'extension très utile. Ce dispositif est particulièrement utile pour commander des LED. Un microcontrôleur inactif peut être mis en veille et l'expanseur PWM peut être responsable de la commande d'un état LED.
Un exemple parfait de l'utilisation de l'expanseur PWM est fréquent dans les circuits de bouton-poussoir RVB utilisant le bouton-poussoir RVB PV6F240SSG d'E-Switch ou le bouton-poussoir SPST RVB 3-101-399 de Schurter Electronic Components (Figure 3).

Figure 3 : Le bouton-poussoir RVB de Schurter contient des LED rouge, verte et bleue autour d'un bouton-poussoir pour permettre au développeur de créer un motif couleur lumineux. Ces types de dispositifs conviennent parfaitement à une commande par une puce d'extension PWM. (Source de l'image : Schurter)
Le bouton-poussoir RVB de Schurter présente des LED rouge, verte et bleue autour d'un bouton-poussoir SPST pour permettre au développeur de créer un motif couleur lumineux. Ces types d'applications conviennent parfaitement à une puce d'extension PWM.
Le MAX7315 de Maxim Integrated est une puce d'extension PWM adaptée à une utilisation sur I2C. Le MAX7315 fournit huit ports PWM et inclut une fonctionnalité de contrôle de l'intensité LED. Cela couvre les trois canaux nécessaires à la commande d'un commutateur RVB, permettant à un seul dispositif de commander deux commutateurs et quelques LED autonomes. Un 9e port peut également être utilisé pour la fonction d'interruption de détection de transition ou comme sortie à usage général.
L'interface I2C MAX7315 est légèrement plus complexe que le PCA8574 de NXP, car elle contient plusieurs registres. Les développeurs doivent ainsi définir l'adresse du dispositif esclave, fournir l'adresse mémoire à lire ou à écrire, puis exécuter l'écriture ou la lecture. La carte mémoire du MAX7315 est illustrée à la Figure 4.
|
Figure 4 : Le contrôleur PWM MAX7315 est doté de huit ports de sortie incluant une fonctionnalité d'intensité LED. La carte de registre du dispositif est simple et permet l'accès aisé aux fonctionnalités PWM avancées. (Source de l'image : Maxim Integrated)
La carte de registre du MAX7315 est simple et permet l'accès aisé aux fonctionnalités PWM avancées.
Expanseurs combinés avec horloge de surveillance, EEPROM et PWM
Comme illustré, les expanseurs E/S à bus I2C peuvent être très puissants en tant que dispositifs autonomes. Plus précisément, ils contiennent uniquement des fonctions spécifiques comme E/S ou PWM. Les expanseurs comme le l'expanseur E/S multiport CY8C9520A de Cypress Semiconductor incluent plusieurs extensions périphériques dans un seul boîtier de circuit intégré. Le CY8C9520A est disponible en trois types : extension de 20 bits, 40 bits ou 60 bits. Ces broches peuvent être configurées pour une utilisation comme entrée, sortie ou PWM (Figure 5).

Figure 5 : Le CY8C9520 de Cypress Semiconductor est un expanseur E/S de 20 bits, 40 bits ou 60 bits avec EEPROM. Il permet la configuration des broches d'extension comme entrée, sortie ou PWM. (Source de l'image : Cypress Semiconductor)
Outre l'extension E/S, le CY8C9520 inclut également une EEPROM pouvant être utilisée pour stocker les paramètres d'application importants, comme le numéro de série, ainsi que d'autres paramètres de configuration.
Une vue rapprochée de la Figure 5 montre que la broche WD6 se trouve sur GPort 2. Il s'agit d'une broche de sortie de l'horloge de surveillance qui peut être utilisée pour réinitialiser le microcontrôleur en cas d'échec de communication et contrôler l'horloge de surveillance. Les paramètres de l'horloge de surveillance sont entièrement configurables et peuvent être utilisés pour améliorer le niveau de résistance du code d'application.
Conseils et astuces pour étendre les capacités du microcontrôleur
De nombreuses techniques permettent d'étendre la capacité d'un microcontrôleur. Voici quelques conseils et astuces utiles :
- Utilisez un bus I2C pour interfacer des dispositifs externes. Cette interface nécessite uniquement deux broches et peut prendre en charge plusieurs dispositifs esclaves.
- Avant d'intégrer une pièce dans le matériel, achetez une carte de développement ou soudez la puce sur une carte d'extension pour vérifier qu'elle répond à tous les besoins de votre système.
- Utilisez un outil de bus I2C à interfacer avec le dispositif d'extension et observez son fonctionnement. Cela permettra de considérablement accélérer le développement logiciel.
- Utilisez un analyseur de bus pour surveiller la communication avec le dispositif externe pendant le développement logiciel afin de réduire le temps de débogage.
- Si possible, sélectionnez un dispositif doté d'un temporisateur d'horloge de surveillance externe. Il peut s'agir d'un outil permettant d'ajouter de la robustesse à la conception du système.
- Lors de l'interfaçage avec une mémoire hors puce pour des données autres que les données de configuration, utilisez une interface haute vitesse comme SPI.
- Assurez-vous que le pilote I2C du microcontrôleur peut prendre en charge un renvoi d'accusé de réception négatif (NAK) du dispositif ou une lenteur de bus. Il n'est pas rare que ces pilotes ignorent les erreurs et entrent dans une boucle infinie si une réponse inattendue est reçue.
Conclusion
Pour une conception dans laquelle les E/S du microcontrôleur sont saturées, les développeurs n'ont pas à démonter leur conception pour tout recommencer. Ils peuvent utiliser des puces périphériques externes qui leur permettent d'ajouter des fonctionnalités supplémentaires à leur système.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




