IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

f-leb

PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5

Noter ce billet
par , 04/05/2020 à 09h43 (295 Affichages)
Partie 5 – Établir la communication I2C Raspberry Pi – PSoC 4 avec les outils i2c-tools

Dans cette partie, on vous montre comment communiquer avec un composant I2C esclave depuis la carte Raspberry Pi en passant par les outils Debian i2c-tools en ligne de commande :

Nom : 20200429_170308.jpg
Affichages : 1375
Taille : 107,3 Ko
Démonstration : les composantes RVB sont bien transmises en ligne de commande depuis le Pi, et la LED s'allume bien avec la couleur choisie.

Ma configuration sur Raspberry Pi 3 est tout ce qu’il y a de plus classique :


J’accède à l’environnement de bureau du Pi à distance depuis mon PC sous Windows 10 grâce à VNC Viewer.

Nom : i2c-rpi1.png
Affichages : 73
Taille : 259,7 Ko
Environnement de bureau LXDE du Raspberry Pi depuis une fenêtre VNC Viewer sur un PC sous Windows 10

Une fois la carte PSoC 4 reliée au Pi (broches SDA, SCL et GND) et alimentée, on commence par voir si la carte est bien reconnue comme un périphérique esclave sur le bus I2C.

Nom : pinout-i2c.PNG
Affichages : 69
Taille : 15,8 Ko
Broches SDA (Data) et SCL (Clock) sur la Rasperry Pi
Source : https://pinout.xyz/pinout/i2c

La commande i2cdetect permet de détecter les périphériques connectés sur le bus I2C :

Nom : i2c-rpi2.png
Affichages : 71
Taille : 58,3 Ko

La carte PSoC 4 a été définie à l’adresse 0x08 (voir Partie 3), et l’adresse apparaît bien sur la première ligne en réponse à la commande i2cdetect -y 1. La carte est bien reconnue sur le bus. Pour vous en convaincre, débranchez la carte PSoC et relancez la commande.

Un dump des registres avec la commande i2cdump permet de voir l’état du buffer.

Nom : i2c-rpi3.png
Affichages : 74
Taille : 64,4 Ko

Là aussi, les trois premiers octets 0x00 0xff et 0x00 montrent la configuration de la LED avec les composantes Rouge=0x00, Vert=0xFF et Bleu=0x00 par défaut. Ceci est bien conforme à la programmation de la carte PSoC (voir Partie 4) avec la LED illuminée en vert au démarrage de la carte.

Pour modifier la couleur de la LED, on utilise la commande i2cset.

Nom : i2c-rpi4.png
Affichages : 68
Taille : 54,5 Ko

i2cset -y 1 0x08 0x01 0xFF : sur le bus 1, le périphérique à l’adresse 0x08, on requiert la couleur rouge (code couleur=0x01, voir Partie 4) avec l’intensité maximale (0xFF). A ce moment-là, comme le vert était déjà activé, la LED devient jaune (rouge+vert=jaune).
On active ensuite le bleu (code couleur=0x03) avec l’intensité 0x80, et on modifie la composante verte (code couleur=0x02) avec l’intensité 0x40. Le résultat final, comme attendu, est la LED colorée en magenta.

Si on dump les registres une dernière fois :

Nom : i2c-rpi5.png
Affichages : 70
Taille : 87,8 Ko

on constate que les trois composantes RVB sont bien définies.

Une première conclusion : même si la norme I2C date de près de 40 ans, ce bus informatique est toujours un standard efficace d’échange de données et est implémenté dans tout microcontrôleur ou carte embarquée qui se respecte.
Si vous avez déjà communiqué avec un capteur I2C du commerce sur Raspbery Pi (voir par exemple l’article de Michel Semal et son capteur de température et d’humidité), vous avez pu voir au cours de ces cinq premières parties comment on pouvait faire de sa carte à microcontrôleur un périphérique esclave pour le protocole I2C. Votre périphérique est dès lors configurable à souhait, et pouvant être construit comme une centrale de capteurs personnalisée où vous définirez votre propre structure des données échangées entre le maître et l’esclave.
Si votre carte à microcontrôleur préférée est une Arduino, il est également possible de la configurer comme esclave pour le protocole I2C (voir par exemple sur le site officiel le tutoriel Master Writer/Slave Receiver pour une démonstration de communication entre deux Arduino).

Dans la partie suivante, nous allons voir comment accéder au bus par la programmation à travers une petite application graphique pour faire varier la couleur de la LED RVB.

Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Viadeo Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Twitter Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Google Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Facebook Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Digg Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Delicious Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog MySpace Envoyer le billet « PSoC 4 : ma carte configurée en esclave I2C, et pilotée par une Raspberry Pi - Partie 5 » dans le blog Yahoo

Mis à jour 15/12/2020 à 14h47 par f-leb

Catégories
Raspberry Pi

Commentaires