Les microcontrôleurs PSoC DENIS PENARD [1] Dans un nombre croissant d’applications industrielles et grand public, les systèmes électroniques ont subi des évolutions importantes ces dernières années. Les plus visibles relèvent de l’électronique numérique, dont la puissance de traitement s’accroît à mesure que les niveaux de consommation se réduisent (en téléphonie mobile par exemple). L’autre avancée technologique concerne l’électronique analogique, qui se fait discrète en s’intégrant désormais au cœur des microcontrôleurs PSoC (Programmable System on Chip, système programmable sur puce). L’auteur nous fait part de l’expérience qu’il a acquise en matière de mise en œuvre de composants PSoC, au travers d’activités conduites avec ses étudiants d’IUT. Il donne ici quelques exemples mettant en évidence la diversité des applications possibles à base de PSoC, ainsi qu’une démarche de projet de la réalisation de fonctions simples facilement implémentables dans ces microcontrôleurs. Les processeurs à signaux mixtes Cypress est l’un des leaders du marché des semi-conducteurs et propose des solutions pour les réseaux filaires ou non (USB, WirelessUSB), capteurs optiques CMOS, mémoires, et processeurs à signaux mixtes reconfigurables. Les processeurs à signaux mixtes (mixed signal arrays) sont des puces qui permettent de gérer des informations aussi bien numériques qu’analogiques. On sait depuis longtemps intégrer des convertisseurs analogiques-numériques au sein de microcontrôleurs, mais l’intégration de fonctions analogiques sur le silicium (gains programmables, filtres à capacités commutées, etc.) est relativement récente. Ces processeurs appartiennent à une nouvelle génération de puces déclinée par Cypress en familles : PSoC, Power PSoC (processeur de puissance), WirelessUSB. La dernière-née de ces familles, celle des Power PSoC, offre de nouvelles perspectives dans l’évolution des systèmes à la frontière de l’électronique et de l’électronique de puissance. En effet, les Power PSoC peuvent fonctionner sous des tensions variant de 2,5 V à 36 V. Ils sont ainsi capables de contrôler des transistors MOS directement. La famille PSoC est constituée des références CY8C21x34, CY8C24x23A, CY8C26xxx, CY8C27x43, CY8C29x66, qui diffèrent selon le nombre de blocs numériques et analogiques intégrés, la taille de la mémoire de programme (type Flash), celle de la mémoire de données (type SRAM), le nombre de broches d’entrée/sortie (de 6 pour les boîtiers 8 broches à 44 pour les boîtiers 48 broches). Certaines caractéristiques, comme la tension d’alimentation (de 3,3 V à 5 V), la fréquence de travail (de 93,7 kHz à 24 MHz) ou encore la température de fonctionnement, sont communes. [1] Professeur de génie électrique à l’université Paris-XI – IUT de Cachan (94). Courriel : [email protected] L’architecture interne d’un PSoC TECHNOLOGIE SEPTEMBRE-OCTOBRE 2006 Device Editor User Module Selection Placement and Parameterization Source Code Generator Generate Application dynamique peut être intéressante si on veut utiliser un seul transducteur à ultrasons. Ainsi, lors de l’émission du train d’impulsion, le microcontrôleur est configuré en émission (sorties numériques connectées directement sur le transducteur) ; une fois le train d’impulsion émis, il se reconfigure dynamiquement pour recevoir l’écho sur le même transducteur. Un exemple de fonctions mots-clés composant, logique, travaux pratiques Application Editor Project Manager Source Code Editor Build Manager Build All Debugger Interface to ICE Storage Inspector Event & Breakpoint Manager intégrées dans un PSoC La figure présente l’architecture interne d’un PSoC ; la figure , les différentes fonctions électroniques analogiques (amplifier, filter), numériques (counter, timer) et mixtes (ADC, DAC, PWM) intégrées au PSoC dans une application donnée. La reconfiguration dynamique La reconfiguration dynamique d’un PSoC est une caractéristique très intéressante pour des applications utilisant des ressources partagées. Ainsi, un distributeur de boissons délivre des boissons pendant toute une journée (23 h 59 min) moins une minute, pendant laquelle il transfère des données (statistiques comptables, demande de maintenance, etc.) par reconfiguration en modem. Les fonctions qui étaient utilisées pour l’application principale (métier) sont déchargées, et le composant se reconfigure avec la fonction de modem. Le télémètre à ultrasons est un autre exemple qui peut être mis en œuvre en STS. Ce système permet d’intégrer des fonctions numériques (compteurs) et analogiques (filtre et comparateur à seuil programmable). Dans ce télémètre, la reconfiguration CapSense ou la détection tactile capacitive CapSense est une technologique d’interface gagnant rapidement du terrain sur les boutons-poussoirs pour les applications nécessitant un panneau avant. Elle est présente sur les PSoC CY8C21x34 et CY8C24x94. L’intérêt est de supprimer tout élément mécanique d’interface homme-machine, ces éléments (boutons-poussoirs, curseurs…) étant remplacés par des solutions telles que des pistes de circuit imprimé ou des éléments conducteurs intégrés dans du verre (plaques de cuisson par induction). Pour réaliser la détection tactile capacitive, on utilise la technique de l’oscillateur à relaxation. Ce dernier comprend un capteur capacitif, une source de courant de charge, un comparateur, un commutateur de décharge, un modulateur PWM et un temporisateur. La tension sur le condensateur croît de manière linéaire jusqu’à ce que le seuil soit atteint, activant la sortie du comparateur. Celle-ci ferme le commutateur qui décharge alors le condensateur, et un nouveau cycle de charge peut démarrer (pour des exemples d’application, voir l’encadré « La documentation »). $ " Les différentes étapes de développement d’une application PSoC La méthode de développement par projet Le développement électronique autour d’un PSoC est un projet qui se traite de manière classique . Le contour du projet défini, les acteurs identifiés, l’analyse des besoins va faire apparaître des solutions technologiques réalisables à l’aide de fonctions électroniques intégrées dans le PSoC. Ces fonctions peuvent être analogiques ou numériques. Cette étape conduit au choix d’une famille de PSoC – nombre d’entrées/ sorties, de blocs analogiques et numériques disponibles permettant d’intégrer le système dans la puce. Cypress propose un outil de développement, PSoC Designer , qui va aider le développeur quant au choix des fonctions analogiques ou numériques répondant à ses besoins, et met à disposition les ressources utilisées par les fonctions selectionnées. On se rend vite compte si le PSoC choisi est adapté ou non. Dans le cas d’un nouveau projet, aucune configu- ! # /00* %" ! ,&-('),.+,&-- Le schéma d’un télémètre à ultrasons utilisant un seul transducteur SEPTEMBRE-OCTOBRE 2006 TECHNOLOGIE L’architecture de l’outil de développement PSoC Designer La documentation D émarrer avec les PSoC requiert l’aide des documents constructeur. Chaque fonction a son fichier d’aide associé. Le manuel de référence des PSoC en donne les caractéristiques hardware complètes : Technical_reference_manual.pdf (ou TRM) Pour chaque famille de PSoC, Cypress propose une datasheet moins détaillée que le TRM, donnant les caractéristiques électriques, les performances, le brochage, les types de boîtiers. Le côté applicatif est détaillé dans deux fichiers, qui présentent les jeux d’instructions du microcontrôleur, les fonctions assembleur ou C, la manière de traiter les interruptions en C, etc. : Assembly Language User Guide.pdf C Language Compiler User Guide.pdf Le site PSoCDeveloper et celui de Cypress donnent un nombre croissant de notes d’application, documents incontournables également : www.psocdeveloper.com www.cypress.com Enfin, ce dernier offre de nombreux exemples d’application de la technologie CapSense, à télécharger : http://www.cypress.com/publishedcontent/publish/ design_resources/more_resources/contents/ psoc_r__example_projects___cy3212_capsense_ training_14.zip TECHNOLOGIE ration ni développement n’ont encore été réalisés. Dans le cas d’une évolution d’un projet PSoC existant, le clonage de ce dernier est possible : on peut ainsi conserver son « patrimoine » (fonctions, code assembleur ou langage C, configuration du PSoC) et le transférer à un PSoC de n’importe quelle autre famille – en gardant à l’esprit que si celui-ci possède moins de ressources, PSoC Designer n’intégrera qu’une partie des fonctions du projet original. Un projet auquel il manquerait des fonctions peut évoluer simplement par clonage sur un PSoC ayant plus de ressources. À ce stade du projet, les concepteurs du système embarqué (carte électronique) et ceux de l’application (PSoC) voient leurs développements intimement liés. Tous ont des contraintes : les premiers en termes de routage de la carte, et les seconds, de ressources matérielles (broches d’entrée/sortie du microcontrôleur, routage interne du PSoC…). Si le système est flexible, toutes les configurations ne sont pas possibles ou permises, et il convient de soigner cette étape, notamment quand la réalisation de la carte et celle de l’application sont confiées à deux groupes d’étudiants distincts. Le déroulement du projet se poursuit par le codage de l’applicatif et les tests. Le modèle de développement adapté pour les projets PSoC est celui de la spirale : l’analyse des besoins conduit aux spécifications, vient ensuite le développement d’un prototype (configuration et code), et enfin la réalisation. Ce processus est réitéré en revenant à l’analyse des besoins. C’est l’occasion pour l’étudiant de maîtriser rapidement la démarche méthodologique. Il est fortement conseillé de la suivre pour valider successivement chacune des fonctions intégrées au PSoC (configuration, développement, tests, validation)… même si, compte tenu de leur abondance, le nombre d’itérations peut être élevé et la convergence vers les objectifs du projet (délais, produit fini) difficile à atteindre – d’où la nécessité d’un pilotage efficace par l’équipe pédagogique. SEPTEMBRE-OCTOBRE 2006 Dans le cadre d’activités en STS Systèmes électroniques, les PSoC constituent une solution très intéressante, aussi bien pour la création d’un nouveau système embarqué (« Élaborer une nouvelle maquette ») que pour l’évolution d’un système industriel existant (« Adapter le logiciel à un nouveau cahier des charges »). En effet, l’intégration des fonctions analogiques et numériques en fait un composant adapté à de nombreuses applications, telles que le pilotage de bases robotiques mobiles comportant plusieurs capteurs numériques et analogiques, une interface USB/IrDA, un contrôleur de machine brushless, une boussole électronique, un chargeur de batteries, etc. Si le développement d’applications PSoC avec le logiciel PSoC Designer ne requiert pas de connaître l’architecture des blocs analogiques et numériques (au sens hardware), la connaissance minimale des registres et du cœur du microcontrôleur est nécessaire pour l’utilisation de fonctions telles que les ports d’entrée/sortie. En effet, l’écriture ou la lecture d’un port se fait par l’utilisation directe du registre (PRTxDR, « x » étant le numéro du port). Ainsi, en faisant des parallèles entre le logiciel PSoC Designer masquant les registres et la documentation complète des PSoC, on montre à l’étudiant que rien n’est magique et que l’architecture, qui paraît souple (et qui l’est relativement), est en réalité « gravée » dans le silicium. La programmation de fonctions internes La mise en œuvre des fonctions internes au PSoC (CAN, I2C, LCD, timer, etc.) se réalise toujours selon le même schéma. L’environnement de développement PSoC Designer offre plusieurs vues du projet : la première concerne la bibliothèque de ressources (fonctions), la deuxième est relative au placement des fonctions dans le PSoC, à leur configuration et interconnexion, et la dernière permet le développement de l’application en langage assembleur ou en C. Le choix d’une fonction MLI L’interconnexion de la MLI dans le PSoC Le panneau de configuration de la fonction MLI Quelques exemples L Pour obtenir une MLI (Modulation par Largeur d’Impulsion), par exemple, on choisit le bloc PWM8 (pour PWM sur 8 bits) dans la section PWM de la bibliothèque. Dans cette première vue, le logiciel informe du nombre de ressources utilisées et du nombre de ressources restantes (blocs numériques et analogiques, RAM, ROM…). La vue d’interconnexion permet de configurer les fonctions choisies après les avoir placées dans le PSoC. Ici encore, PSoC Designer aide à la décision, en proposant par défaut un emplacement idoine. Une fonctionnalité du logiciel permet de demander le prochain emplacement possible. Ce dernier choisi, on valide le placement du bloc (de la fonction) , et on peut configurer le bloc MLI . Une MLI nécessite une horloge de base, un rapport cyclique, et d’être connectée sur une pin externe du PSoC. La configuration effectuée, il reste à générer l’application, au sens d’API (interface de programmation) : des fonctions préétablies pour utiliser la MLI sont ainsi disponibles pour le développeur , par exemple MLI_start() pour démarrer la MLI, MLI_WritePulseWidth (unsigned char rapport _ cyclique) pour changer le rapport cyclique, etc. Les fonctions de l’API étant construites à partir du nom du bloc configuré, il est conseillé de nommer la fonction de la façon le plus parlante possible, afin de favoriser la maintenance de l’application. Pour un bon usage des blocs-fonctions de PSoC Designer, il vaut mieux lire le document d’aide associé à la fonction, qui présente ses caractéristiques techniques ainsi que la manière de l’utiliser. Des exemples de codes en assembleur et en C pour l’implémentation dans l’application future sont également fournis. Le PSoC permet d’intégrer le filtrage, autre fonction essentielle en électronique analogique. Les filtres intégrés sont à capacités commutées . Pour obtenir un filtre analogique, PSoC Designer propose un assistant qui va se charger de calculer les paraL //---------------------------------------------------------------------------------------------------------// Exemple en langage C : création d’une MLI de fréquence VC1 et rapport cyclique 50% //---------------------------------------------------------------------------------------------------------#include <m8c.h> #include «PSoCAPI.h» // part specific constants and macros // PSoC API definitions for all User Modules void main() { MLI _ WritePulseWidth(50) ; //si le registre de période vaut 100, la MLI aura ici un rapport cyclique de 50 %. MLI _ Start() ; //démarrage de la MLI } Un exemple de code source de l’application SEPTEMBRE-OCTOBRE 2006 mètres du bloc à capacités commutées chargé de réaliser le filtrage. L’assistant est disponible au format Excel ou sous forme applicative dans PSoC Designer. Les paramètres à saisir sont le type de filtre (Butterworth, Tchebytcheff, Bessel), la fréquence de coupure et le gain du filtre. Puis l’assistant donne les valeurs des capacités C1, C2, C3, C4, CA et CB, ainsi que la fréquence d’horloge à appliquer au bloc à capacités commutées. Les paramètres calculés sont ensuite à saisir dans la vue d’interconnexion au niveau des caractéristiques du filtre. La génération de l’application prend en compte ces paramètres ; il ne reste plus qu’à démarrer le filtre (passe_bas_start() par exemple). Les filtres pouvant être mis en œuvre permettent un nombre important d’applications : filtrage de porteuses 40 kHz pour transducteurs à ultrasons, détecteur de synchronisation vidéo, modem, etc. Une application : le vélo électrique à alimentation hybride La gestion de l’énergie électrique et une de ses composantes, son stockage, sont des enjeux majeurs. Les solutions pour le stockage sont diverses. Pour les applications de transport, et plus particulièrement pour celles gourmandes en énergie transitoire, une solution commence à émerger : le supercondensateur. Le vélo électrique à alimentation hybride (batterie et supercondensateurs) est un exemple d’application susceptible de sensibiliser les TECHNOLOGIE Un exemple de filtre à capacités commutées intégré au PSoC Eléments de stockage d’énergie Convertisseur DC/DC étudiants à ces problématiques et facile à mettre en œuvre dans un établissement scolaire. Sa motorisation est réalisée avec une machine à courant continu (MCC1) intégrée dans la roue arrière. L’alimentation, ou le réglage du transfert d’énergie issue des éléments de stockage (accumulateur électrochimique au plomb dans la version commercialisée), se fait à l’aide d’un convertisseur DC/DC (hacheur série dans la version originale). La simulation de la résistance à l’avancement se fait à l’aide d’un home trainer constitué d’une machine à courant continu à aimants permanents (MCC2) alimentée par un convertisseur qui modifie le courant (iMCC2) en fonction d’une consigne qui peut être modifiée par l’utilisateur afin de simuler divers profils de route ainsi que des inerties . Dans l’alimentation hybride , les deux types d’éléments de stockage d’énergie sont connectés au bus continu (bus DC) par l’intermédiaire de deux hacheurs réversibles en courant (hacheur 1 et hacheur 2). La gestion des flux d’énergie est spécifique à chaque montage et est assurée par un PSoC. Ces deux convertisseurs ont pour rôle d’adapter les niveaux de tension MCC1 iMCC2 MCC2 Charge active programmable Le banc expérimental du vélo électrique TECHNOLOGIE SEPTEMBRE-OCTOBRE 2006 des éléments. Pour la batterie, cela permet d’utiliser des éléments de faible tension (12 V) par rapport à la tension du bus DC (z 50 V) ; pour les supercondensateurs, de s’adapter à la variation de tension inévitable, car la variation d’énergie est liée à celle-ci. Le principe de la commande est de pouvoir maintenir constante la tension du bus DC, en agissant sur les courants des éléments de stockage. Ils peuvent être positifs ou négatifs (charge ou décharge). Chaque hacheur est géré par un microcontrôleur PSoC qui mesure la tension des supercaps, la tension du bus DC et le courant dans l’inductance. Ces hacheurs peuvent recevoir des consignes de fonctionnement (marche, arrêt, consignes de tension et de courant, gestion des défauts) via un bus de terrain I2C. Ils peuvent également fournir toutes ces données à la demande du système de gestion maître. La commande des transistors MOS (15 V) est isolée du PSoC afin de s’affranchir des perturbations que pourraient occasionner l’ouverture et la fermeture des transistors. Pour ce faire, on utilise des optocoupleurs rapides et des alimentations à découpage de type Traco Power. Les flux d’énergie de l’alimentation hybride sont pilotés par un PSoC maître dont le rôle est d’assurer une gestion haut niveau. Ainsi, en fonction d’une stratégie de fonctionnement qui revient à assister le cycliste au démarrage, en montée, et à le laisser pédaler sur du plat ou en descente, le système va piloter les consignes de tension de chaque alimentation (hacheur alimenté par les supercondensateurs et hacheur alimenté par les batteries). La détection d’un démarrage (détection de la rotation du pédalier) et la mesure du courant dans la MCC entraîne une consigne de tension plus importante sur le hacheur à supercondensateurs. La batterie peut alors éventuellement être rechargée par les supercondensateurs ou bien être découplée. L’inverse est possible, et le cycliste va charger les supercondensateurs pendant le pédalage. Cet exemple illustre une évolution intéressante des hacheurs dans lesquels la commande réalisée traditionnellement avec des composants analogiques (comparateurs, gains) est intégrée dans une puce unique gérant seule le fonctionnement du système (asservissement de courant et de tension, protection en tension des supercondensateurs, communication avec l’extérieur…). Les outils d’aide au développement Les ateliers de génie applicatifs En informatique d’une manière générale et en informatique industrielle en particulier, les éditeurs de logiciels, outre qu’ils mettent à disposition une documentation (en encadré), développent des ateliers de génie logiciels capables de générer tout ou partie du code de l’application embarquée. Si des outils d’UML comme Eclipse, Together, Rational Rose peuvent produire un squelette de code, PSoC Express, disponible gratuitement sur le site internet de Cypress Microsystems, permet quant à lui la génération non pas du squelette mais de toute l’application. Cet outil est particulièrement intéressant pour développer de petites applications de manière très rapide, par exemple la mise en œuvre d’une liaison I2C ou la gestion de la mémoire EEPROM. PSoC Express permet également la réalisation d’applications plus complexes (un contrôle de moteur par exemple), mais, d’un point de vue pédagogique, on peut douter de l’intérêt de développer avec un système qui ne permet pas de maîtri- Les points clés Un circuit innovateur qui réduit le nombre de composant dédiés sur la carte L Un circuit reconfigurable pendant le fonctionnement L La flexibilité de configuration des fonctions grâce aux blocs numériques et analogiques L Une programmation in situ L La possibilité d’optimisation des composants externes L Le coût du système L Hacheur 1 Batterie Hacheur 2 Supercondensateurs Bus DC L’alimentation hybride ser le code généré, son occupation en mémoire, etc. PSoC Designer luimême masque déjà une grosse partie de l’application – mais il s’agit de la configuration du composant, qui, sans son aide, serait fastidieuse. Notons qu’il existe un outil du même genre chez le concurrent Microchip : Application Maestro. Cette tendance à la simplification est bienvenue, mais rien ne remplace la maîtrise hardware et software pour la conception et le développement d’applications embarquées où un haut niveau de fiabilité et de disponibilité sont requis. Le kit de développement CY3210 Le kit PSoC Pour démarrer avec les PSoC, il est conseillé d’utiliser un kit de développement tel que le CY3210 . Pour ceux qui connaissent les PIC de Microchip, il ressemble au kit PicDem2plus. Sur une carte de petit format (75 s 100 mm), on trouve les fonctions de base, une alimentation par jack 9-12 V, pile 9 V (régulateur 7805), un driver max232 avec le connecteur femelle DB9. Côté microcontrôleur et expérimentation, la carte possède un emplacement pour un PSoC 28 broches avec un PSoC CY8-2946624PXI, une minicarte type Labdec, quatre leds CMS, un potentiomètre, SEPTEMBRE-OCTOBRE 2006 un bouton-poussoir et un connecteur pour l’afficheur LCD livré avec le kit. À noter, les ports d’entrée/sortie sont accessibles par des connecteurs femelles, ce qui rend aisée la connexion avec le bouton-poussoir, les leds, le max232. Le programmateur Miniprog est également fourni et permet, outre la programmation, d’alimenter la carte (sous réserve de la limitation en courant du port USB). Le kit est distribué en France par la société Avnet France à Palaiseau. Son coût se situe en dessous de 50 (kit complet, avec un programmateur Miniprog, un PSoC CY829466, un afficheur LCD). Il est possible d’obtenir des échantillons de PSoC auprès d’Avnet ou sur le site de Cypress. Une nouvelle étape L’arrivée des PSoC sur le marché entraîne des changements dans le métier de l’électronicien, qui devient intégrateur de fonctions de haut niveau. Les entreprises sont aussi bénéficiaires de cette avancée : elle leur permet de gagner sur les temps de conception et de développement, et d’assurer un retour sur investissement rapide. La technologie PSoC arrive désormais à maturité. Après le passage de la logique câblée au microprocesseur, puis du microprocesseur au microcontrôleur, l’ère de l’intégration massive de fonctions analogiques sur silicium est annoncée. La cohabitation cœur de microprocesseur et réseaux analogiques programmables est désormais assurée. N TECHNOLOGIE