Hé! Vous semblez être en United States, souhaitez-vous utiliser notre site English ?
Switch to English site
Skip to main content

Didacticiel de présentation du PSoC 6

Le nouveau kit PSoC 6 BLE Pioneer  (136-7817)  – le plus récent modèle de Cypress Semiconductor dans le monde des microcontrôleurs 32 bits – est l'un des acquis qui me rappellent à quel point les choses ont évolué pour les développeurs de solutions embarquées. Vous pouvez regarder une présentation du PSoC 6 sur cette vidéo :

Le premier kit de développement spécial que j'ai eu l'occasion d'utiliser, en tant qu'étudiant à la fin des années 1980, a été conçu à partir d'un microcontrôleur Intel 8501 fourni avec une énorme ROM de 4 KiB et une RAM interne de 128 octets (comprenez bien les jeunes, il s'agit d'octets, pas de "K").

À cette époque déjà, le kit était un peu ancien, ayant été conçu par un de nos enseignants pour obliger l'utilisateur à s'habituer à la machine. Sa programmation nécessitait d'utiliser un clavier hexadécimal pour saisir manuellement les valeurs hexadécimales des codes opération et des opérandes du 8051 que vous vouliez exploiter.

Après avoir saisi ces données avec beaucoup de peine, il faudrait alors paramétrer l'exécution du 8051 pour faire clignoter les LED intégrées comme mandataires pour toutes les extrémités d'E/S qu'on simulait sur les quatre ports d'entrée/sortie de 8 bits bidirectionnels. Dans mon cas, je simulais des actionneurs et des moteurs sur une machine à laver dans le cadre d'un ensemble de cycles de lavage simples.  

Malgré cette introduction complexe, j'ai bien aimé le 8051 et j'ai continué à l'utiliser dans quelques conceptions que j'ai moi-même réalisées ultérieurement. Les avantages du kit de développement primitif résidaient dans le fait que la programmation subséquente en assembleur apparaissait comme une avancée majeure. Par ailleurs, la découverte de la programmation C intégrée vous donnait l'impression que les dieux vous avaient fait don de l'ambroisie.

Par contre, en regardant la liste des fonctionnalités du PSoC 6 de Cypress Semiconductor, il est difficile de ne pas être impressionné par le nombre de choses qu'on peut concentrer dans un minuscule circuit imprimé en silicium, mais plus encore sans doute, de savoir combien il est plus facile de configurer et de programmer tout cela.

Toutefois, si vous découvrez Cypress et ses outils de développement du "PSoC Creator", il est parfois difficile de s'y retrouver dans toutes les fonctionnalités et le support logiciel API fournis dans cet Environnement de développement intégré (IDE). Dans cet article, je vais m'efforcer d'être moins intimidant en parcourant le flux d'outils de la version embarquée d'un programme "Hello World !" – régler et faire alterner une LED embarquée.

Un bon départ

Lorsque vous utilisez PSoC Creator pour la première fois, une fenêtre similaire à celle ci-dessous apparaît. Pour ouvrir un nouvel espace de travail, cliquez sur Fichier > Nouveau > Projet…

01_open_project_2733deaa4bb38f4e6c03ca0eed0f8475838cc629.jpg

Sélectionnez maintenant l'appareil cible à partir des menus déroulants – PSoC 6, dans notre cas – et cliquez sur "Suivant" :

02_device_type_daa19193dff9d3c53b5c2cf2d5cca23ffe61a47c.jpg

Sélectionnez ensuite un "Schéma vide" pour notre modèle de projet, puis cliquez sur "Suivant" :

03_empty_sch_52008f4fb5989623b0bfe90f54a7c4cfc95f8a58.jpg

Il vous suffit de cliquer sur "Suivant" pour faire apparaître les IDE tiers :

04_third_parties_2e4c26ab000288e7582025f8affe12d8fcc50304.jpg

Enfin, nous pouvons attribuer à notre projet un nom un peu plus descriptif que le nom par défaut "Design01" et cliquer sur "Terminer" :

05_create_project_b4d30e90f4994b0635541ad30e1a50def2845213.jpg

Un espace de travail propre et magnifique apparaît :

06_Workspace_9f55bcc22cad91558c3ac8f022a9a762c95ae7f5.jpg

Remarque - si les détails sur les images de ces captures d'écran ne s'affichent pas correctement, il vous suffit de cliquer sur l'image et de sélectionner "Afficher image" en haut du menu contextuel pour voir l'image en pleine taille.

Bref, à gauche de cet espace de travail figure l'"Explorateur d'espace de travail" qui assure le suivi de tous les dossiers liés à votre projet.

À droite de l'espace de travail figure le "Catalogue des composants". Il contient un grand nombre (plus de 100) de composants configurables qui font partie de la structure du PSoC 6 et qui s'utilisent dans les conceptions de vos systèmes.

La fenêtre centrale portant le nom "TopDesign.cysch" par défaut affiche l'éditeur schématique dans lequel vous pouvez placer, configurer et relier les composants entre eux depuis le Catalogue des composants.

La fenêtre centrale inférieure est l'endroit où PSoC Creator vous permet de savoir ce qu'il fait. Il s'agit de la sortie du compilateur et de l'assembleur de système.

OK, mettons-nous à l'œuvre maintenant que tout est en place…

Notre premier système

Nous allons plus ou moins commencer par le système le plus simple possible pour une carte PSoC, car cela nous permet de parcourir le flux d'outils sans être gênés par une trop grande complexité.

Allez au Catalogue des composants et sélectionnez "Ports et broches". Vous devez ensuite glisser-déposer une Broche de sortie numérique dans la fenêtre de l'éditeur schématique :

07_digital_op_pin_bbde5f625edbcdc27fb5e8704e51db77f62c9e9b.jpg

Vous remarquerez probablement que la broche que nous faisons glisser est toute petite. Nous pouvons l'agrandir en effectuant quelques clics sur le signe "+" de la loupe (en haut à gauche), ou (je préfère cela) en appuyant sur la touche [Ctrl] et en utilisant le bouton gauche de la souris pour déplacer une case autour de la zone à agrandir.

08_select_for_zoom_6db8c2ac151983f09706380c5eecf012078187ee.jpg

Maintenant nous voyons clairement notre broche. Un seul clic sur le composant permet de le souligner en vert :

09_zoomed_96991b4515d787d4bc4302be55eb22da12b55b66.jpg

Cliquez deux fois sur la pièce (ou effectuez un clic droit et sélectionnez "Configurer" dans le menu contextuel) pour faire apparaître la fenêtre de configuration de la pièce :

10_configure_ae7e87f4442042ba6a67043ae776f23f1d4f857b.jpg

Nous pouvons maintenant configurer cette broche afin qu'elle commande la LED bleue de la carte de développement PSoC 6. Nous devons d'abord modifier le nom de la broche en "LED_Bleue". Nous allons utiliser la structure micrologicielle du PSoC pour commander la LED plutôt qu'une connexion matérielle directe. Pour cela, nous devons décocher cette case :

11_configured_b81debde27c7dd7533a0b008c26240bb56c3d4f3.jpg

En cliquant sur "OK", le nom de la broche et sa forme auront changé.

Si vous regardez maintenant le Catalogue des composants, vous verrez qu'il s'y trouve un second onglet nommé "Hors puce". Ces composants n'ont aucun effet physique sur le système que nous concevons. Ils nous permettent plutôt de mettre en exergue les éléments auxquels nos broches externes se connectent : un peu comme une version logicielle des commentaires fournis dans le code source d'un logiciel. Bien entendu, ceci est totalement facultatif, mais peut – à l'instar des commentaires fournis dans le code source - se révéler fort utile lorsqu'il faudra revenir modifier votre conception six mois plus tard.

Ajoutons donc ces composants externes dans notre système en faisant glisser-déposer une résistance à partir du menu Composants passifs, une LED à partir du menu Diodes, et une masse à partir du menu Mise sous tension :

12_off_chip_2c23fc690c261884e8284ae6f7ab67e6fee6e883.jpg

Nous pouvons maintenant utiliser l'outil de câblage (indiqué par la flèche ci-dessous ou utiliser la touche [W]) pour relier les composants entre eux.

13_OC_connected_88954e3ff6459f01472bac50fb4d39efed84b186.jpg

Maintenant que c'est chose faite, nous pouvons indiquer au système la broche à laquelle notre LED bleue est effectivement connectée dans le monde matériel. Si votre vue est très développée et/ou que vous avez une loupe, obtenez l'information en lisant la sérigraphie sur la carte, près de la LED RGB elle-même :

LEDs_a0a2e4ca5335c643ffe3359bf00376ccc0b71411.jpg

À partir de l'image, vous pouvez déduire que B (bleue) désigne 11.1 (port 11, broche 1). N'hésitez pas à faire des essais avec les LED rouges (port 0, broche 3) ou vertes (port 1, broche 1) tout au long de ce didacticiel. Vous pouvez naturellement obtenir les informations relatives à cette broche dans la documentation qui accompagne le PSoC 6.

Pour affecter cette broche à notre conception, ouvrez l'Explorateur d'espace de travail et cliquez deux fois sur "Broches", sous l'onglet Design Wide Resources (Ressources à l'échelle de la conception). Cette action fait apparaître la carte punaise du PSoC 6 :

14_pin_assign_a_25abd7ee326277b0e844d9e059becb68afaa539a.jpg

Vous pouvez voir que notre broche (LED_Bleue) figure déjà dans la liste et qu'il ne nous reste plus qu'à l'affecter. Utilisez le menu déroulant "Port" pour trouver P11[1] dans la liste et sélectionnez-le. Notre broche est maintenant surlignée dans la carte BGA et nous pouvons voir qu'elle correspond à la broche physique E5 de la grille matricielle à billes :

14_5_272e7048200be68e0ba3e72797a1c739106a7e14.jpg

Nous sommes maintenant prêts à concevoir notre système ! Cliquez sur Concevoir > Concevoir Hello World

La fenêtre de sortie fera entendre un certain ronronnement ou son. Au bout du compte, nous voulons simplement voir s'afficher "---- Conception terminée : date heure -----" où "date" et "heure" sont remplacés par la date et l'heure courantes.

Programmation du PSoC 6

Maintenant que nous avons terminé les définitions de notre système, il est temps de lui assigner une tâche.

Une petite programmation C est nécessaire. Lorsque je dis "petite", je parle en fait d'une faible quantité de codes, en raison du support logiciel complexe sur lequel repose l'interface de programmation d'application (API) du PSoC 6.

En ce qui nous concerne, nous allons utiliser le noyau ARM® Cortex® M0+ faible consommation. Nous pourrions tout aussi bien utiliser le noyau M4, mais peu importe l'option choisie, il n'est pas nécessaire de se préoccuper de l'autre noyau que nous n'utilisons pas – on a qu'à laisser ça de côté, sans aucun code.

Pour commencer, ouvrez l'Explorateur d'espace de travail et cliquez deux fois sur le fichier main_cm0p.c. Ce fichier s'ouvre dans notre fenêtre centrale et comporte une architecture de base pour notre programme :

15_empty_code_c8dc607de4de139c033275ddb39715dd896c68f7.jpg

Nous pouvons alors ajouter notre programme à cette structure de base :

16_code_e56acfecb8021f81579d88fcd4a9ec438e1dc4b5.jpg

Je reviendrai sur les fonctions API un peu plus tard, mais à présent, vous pouvez voir que notre programme utilise simplement une fonction d'écriture sur les GPIO pour écrire des valeurs d'entrée et de sortie sur notre broche à LED. Nous ajoutons 500 (millisecondes) de délai entre chaque commutation afin que l'alternance entre les LED soit suffisamment lente pour être visible à l'œil nu.

OK, lançons-nous ! Si vous n'avez pas encore connecté votre PSoC 6 à votre ordinateur au moyen du câble USB fourni dans le kit, faites-le maintenant.

Il n'y a plus qu'à sélectionner Déboguer > Programmer (ou à presser Ctrl+F5 ou utiliser l'icône du programme, selon ce qui vous convient) et à attendre la fin de la compilation et du téléchargement du programme. La compilation du programme pourra vous prendre un certain temps la première fois, car il y a pas mal de "code généré" à rassembler. Après ça, nous serons au septième ciel :

Bravo à nous !

Poussons les choses plus loin

Peut-être pensez-vous faire clignoter une LED sous un MCU basé sur un cœur ARM Cortex ? Bien, alors on va procéder autrement, en espérant découvrir quelques petites choses en plus.

Revenez à notre onglet TopDesign.cysch dans la fenêtre centrale. Nous allons faire clignoter notre LED en utilisant une modulation d'impulsions en largeur (PWM) plutôt qu'un cœur de processeur. Nous pouvons en trouver en saisissant "pwm" dans le champ de recherche (là où c'est écrit "Chercher...") en haut de la fenêtre Catalogue des composants. L'écran Numérique > Fonctions > PWM (TCPWM)[v1.0] apparaît

Faites glisser le PWM dans la conception. Il faudra également une horloge, faites donc glisser l'une d'elles aussi :

30_pwm_clk_1a68cae3280aaf886bea552fc6227e68c4c8b2bf.jpg

Vidage d'informations :

Le moment est venu d'ouvrir une parenthèse. Vous vous êtes peut-être demandé comment découvrir les fonctions API qui sont disponibles pour les composants figurant dans le Catalogue des composants. La solution la plus simple est juste sous notre nez.

Une fois le PWM sélectionné, un champ de description apparaît dans le coin inférieur droit, sous la fenêtre Catalogue des composants. Ce champ contient également un lien vers la fiche technique au format PDF du composant intitulé Ouvrir la fiche technique. Cette fiche technique renferme les détails habituels, à savoir les descriptions des connexions d'E/S, les paramètres fonctionnels et les caractéristiques des composants. Elle contient également une section intitulée Interface de programmation d'application, qui décrit les fonctions d'enveloppement de composant disponibles pour la pièce. Ces informations peuvent nous permettre de contrôler les fonctionnalités de nos pièces dans le logiciel.

Configuration de nos composants

Avant de pouvoir utiliser les nouvelles pièces que nous venons d'intégrer dans le schéma de conception, nous devons les configurer. Le premier composant à modifier est notre bonne broche de sortie numérique. Double-cliquez dessus pour faire apparaître la fenêtre de configuration.

31_pin_26cbd3822b3b9b65d8d1cbb7f70188147f947909.jpg

Nous devons à nouveau cocher la case "HW connection" (Connexion HW) afin de pouvoir connecter d'autres composants internes à la broche. Lorsque c'est fait et que vous cliquez sur OK, vous verrez que notre broche a été modifiée et qu'elle contient désormais une zone de saisie où nous pouvons relier des éléments.

Nous devons ensuite configurer notre PWM. Pour ce faire, double-cliquez dessus pour faire apparaître sa boîte de configuration. Comme nous n'avons qu'un seul PWM, nous pourrions également le renommer en tant que "PWM". Dans l'onglet "Basique", faites défiler l'écran jusqu'au bas et réglez la durée à 1 000 (ms). Pour rendre l'exercice un peu plus intéressant, notre LED a un cycle de service très court de 50 (ms), de sorte que notre clignotement a davantage un effet stroboscopique, qui peut le rendre plus visible en vision périphérique par l'œil humain.

32_pwm_set_a93f4d3d439f49dea75df29f41a78fa699dd7cf5.jpg

Nous allons ensuite configurer notre horloge à 1 kHz :

33_clk_set_fadc7720f8cefc567136995139a62441b9f1b326.jpg

Enfin, nous devons câbler notre petit schéma au moyen de l'outil de câblage, connecter notre horloge à l'entrée d'horloge et le pwm_n à la broche de sortie. Soulignons qu'ici, nos fils sont verts. Si vous devez raccorder des signaux analogiques dans vos conceptions, les fils seront orange.

34_connect_a8af258f4a319eefb632cc2a27ea66550ebed5b0.jpg

Nous sommes maintenant prêts à concevoir notre projet. Vous pouvez utiliser Concevoir > Concevoir Hello World ou appuyer simplement sur [shift]+[F6] (ou utiliser l'icône "Concevoir") – en général, il y a plein de façons de bien s'acquitter d'une tâche. Lors de la conception du projet, vous verrez les API de chacun de nos composants commencer à s'assembler entre eux sous le dossier "Code généré" de l'Explorateur d'espace de travail.

Il ne reste plus qu'à programmer notre appareil. À cause de tous les travaux de technique logicielle sous-jacents que Cypress a déjà réalisés pour nous, notre programme est une unique ligne de code C - un appel de la fonction PWM_start() :

35_built_aeb67b602f3c90c48e04eeccfb4571b932ebe3d0.jpg

Utilisez Déboguer > Programmer (ou [Ctrl] + [F5], ou l'icône "programmer" pour compiler et charger notre programme dans le PSoC 6.

Bravo à nous ! Nous avons une LED bleue qui clignote différemment !

Maintenant que l'IDE du PSoC Creator est moins intimidant, vous pouvez commencer à démanteler le logiciel utilisé comme exemple que Cypress a créé pour la carte. Au moment de la rédaction de cet article, il existe trois exemples de logiciels assez complets :

  1. CE218133 – Écran EINK avec CapSense® : explique comment créer une interface utilisateur à l'aide de l'écran EINK, des boutons de détection de capacité et du curseur de la carte.
  2. CE218134 – BLE avec CapSense® : explique comment transférer des données CapSense et de contrôle par le biais d'un réseau bluetooth de faible énergie, où PSoC 6 constitue un périphérique BLE et un serveur GATT.
  3. CE218135 – BLE avec Proximity : PSoC 6 constitue un périphérique BLE et un serveur GATT pour un service personnalisé de transfert d'informations pour la détection de proximité via CapSense.

Une grande partie des fonctionnalités de ces exemples de logiciel peut bien servir de base à de nombreux autres projets.

Le mot de la fin

Pour mener sa mission à bien, il convient d'utiliser le bon outil pour ce travail. Les microcontrôleurs sont ce qu'il faut pour les applications de commande numérique embarquées. Monter des choses avec un Raspberry Pi ou l'une des petites cartes de développement vendues sur le marché procure beaucoup de satisfaction, mais pour les conceptions commercialement viables où la taille, le coût, la consommation électrique et de (faibles) latences d'interruption prévisibles sont d'importants facteurs à considérer, les microcontrôleurs restent la meilleure stratégie d'attaque.

Manufacturers like Cypress are making it easier than it has ever been to quickly create system designs requiring a minimal amount of external components, while supplying full-featured (but low cost) development kits and software environments to speed up the development cycle. The barriers to entry for the embedded system market have never been lower.

So what are you waiting for? Get embedding microcontrollers in everything!

 

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.
DesignSpark Electrical Logolinkedin