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 3

Noter ce billet
par , 27/04/2020 à 10h52 (408 Affichages)
Partie 3 - Préparer la connexion I2C et configuration en mode esclave

Quelques considérations physiques sont à prendre en compte dans un premier temps quand il s’agit de relier un maître et un esclave en I2C. Sur mon schéma, j’ai relié directement les broches SDA et SCL du Pi aux connecteurs dédiés de la carte PSoC (carte qui reprend d’ailleurs la disposition des connecteurs au format Arduino Uno) :

Nom : psoc4-i2c-rpi.png
Affichages : 431
Taille : 369,7 Ko

Pour autant, il faut être prudent dans ce genre d’opérations. Dans la liaison I2C, le composant qui assume le rôle de maître (le Rapsberry Pi ici) détermine les niveaux logiques sur les lignes SDA et SCL, avec des niveaux de tension qui seront donc : HIGH=3,3V et LOW=0V. Le Raspberry Pi 3 a en effet des résistances internes de pull-up sur ses sorties SDA et SCL qui tirent les lignes sur le bus I2C à 3,3V. Tant qu’aucun autre composant sur le bus ne tire les lignes à 5V, tout va bien. Même si le composant esclave en face fonctionne à des niveaux de tension 0-5V, il n’y aura pas de danger tant que leurs sorties à collecteur ouvert ne sont pas tirées elles-mêmes au 5V avec des résistances pull-up.

Nom : pullup-i2c-rpi.png
Affichages : 103
Taille : 33,2 Ko
Pull-up 1,8K intégrées sur les GPIO 2 et 3 (resp. SDA et SCL) d'après les schémas du Raspberry PI 3
voir https://www.raspberrypi.org/document...tics/README.md

Note de dernière minute : je ne retrouve pas ces résistances de pull-up 1,8K sur les schémas du Raspberry Pi 4 (https://www.raspberrypi.org/document...tics/README.md). S’il est confirmé que ces résistances ont été retirées « en loucedé » (je n’ai pas de Raspberry Pi 4 pour au moins tester le fonctionnement du bus), sans doute faudrait-il rajouter ces résistances dans le montage. A confirmer, mais ce serait un peu embêtant…

Il se trouve que les connecteurs I2C de la carte PSoC 4 ont des résistances de pull-up 2,2K désactivées par défaut.

Nom : psoc4-i2c-schematic.PNG
Affichages : 85
Taille : 20,8 Ko
D'après CY8CKIT-044 Schematic.pdf
Les résistances pull-up 2,2K sont désactivées par défaut.

De plus, un cavalier bien pratique sur la carte permet de sélectionner le fonctionnement en 3,3V ou 5V. Par sécurité, je l’ai évidemment positionné sur 3,3V.

Nom : jumper5-3point3v.PNG
Affichages : 69
Taille : 18,7 Ko

Les conditions sont donc réunies pour relier directement les sorties I2C des deux cartes Raspberry Pi 3 et PSoC 4 (en plus des masses qui doivent être communes).
Plus tard, j’espère pouvoir profiter du header 26 broches de la carte PSoC, et compatible avec le port GPIO du Raspberry Pi, pour transformer ma carte en HAT.

Nom : psoc4-header-rpi.png
Affichages : 91
Taille : 457,4 Ko
PSoC 4 CY8CKIT-044 avec header 26 broches pour Raspberry Pi

Nom : psoc4_as_hatRpi.png
Affichages : 99
Taille : 175,0 Ko
Carte PSoC 4 transformée en HAT pour Raspberry Pi

Pour préparer la configuration de la carte PSoC 4 en esclave pour la communication I2C, il suffit de compléter le design en faisant glisser le bloc SCB (Serial Communication Block) correspondant dans la fenêtre de design de l’EDI :

Nom : i2c-scb-block.png
Affichages : 72
Taille : 2,9 Ko

Un double-clic sur la fenêtre permet d’accéder aux paramètres de la communication :

Nom : config_I2CS.PNG
Affichages : 93
Taille : 19,1 Ko

On laisse la vitesse de transmission par défaut : Data rate = 100 kbps. La fréquence sur la ligne SCL est bien déterminée par l’horloge du composant maître, mais les signaux sur les deux lignes SDA et SCL sont suréchantillonnés (oversampling) avec l’horloge interne du composant SCB. Pour que le composant SCB règle son horloge interne à une fréquence supérieure à la fréquence de la ligne SCL déterminée par le maître, il faut renseigner ici la vitesse maximale jusqu’à laquelle le composant esclave pourra opérer correctement.
On laisse aussi l’adresse par défaut, codée sur 7 bits : Slave address = 0x08

Il faut maintenant voir la partie applicative pour la réception et la transmission des données côté esclave (PSoC 4)...

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

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

Catégories
Raspberry Pi

Commentaires