PCF 8591

Présentation du rôle du composant

Ce composant fait le lien entre des entrées ou des sorties de type logique, au niveau TTL et le transport des informations portées par ces entrées ou ces sorties, par un bus I²C

Le composant est dit quasi bidirectionnel car une broche TTL peut jouer soit le rôle d'une entrée soit le rôle d'une sortie alternativement mais pas les deux à la fois (c'est évident !)
Le composant réalise donc, suivant les cas :

Communication avec le composant

La communication se fait de maître à esclave par le bus I²C. Le composant ne peut jouer le rôle de maitre.
La communication s'opère à l'aide de l'envoi de deux octets sur la liaison I²C:

Octets de communication

le bit V dépend de la version du composant

Adresse L H V V A2 A1 A0 RW
Donnée P7 P6 P5 P4 P3 P2 P1 P0

Lorsque RW est à 0, la donnée sera écrite, lorsque RW est à 1, elle sera lue. Il faudra donc placer les instructions correctes dans le programme.
Les bits P0 à P7 portent l'état du port correspondant

Chronologie d'un échange en écriture

Terminologie
Start : condition de start
SelW : envoi de l'octet de sélection du composant, le bit de sens est en écriture
Ack : acquittement de la part du composant
OctetW : envoi de l'octet de donnée
Stop : condition de stop

Start SelW Ack OctetW Ack Stop

Chronologie d'un échange en lecture

Deux cas peuvent se présenter

Le principe général, valable pour tous les composants I²C, est le suivant : Toutes les lectures d'octet sont suivies par un Ack sauf la dernière de la série qui est suivie d'un Nack.

Chronologie pour la lecture d'un seul octet

Start SelW Ack OctetR Nack Stop

Chronologie pour la lecture de m octets

Start SelW Ack Start SelR Ack OctetR-1 Ack … OctetR-m Nack Stop
Remarquez la reprise de la condition de Start.

Particularité de la constitution de l'octet d'adresse dans un protocole I²C

L'octet d'adresse, le premier qui est envoyé, lors d'une communication, est constitué de deux parties :

L'adresse proprement dite est divisée, elle aussi en deux parties :
Ici on trouvera:
0 0 1 1 1 A2 A1 A0 pour le PCF8574 A
0 0 1 0 0 A2 A1 A0 pour le PCF8574

Introduction du bit de sens
Il faut décaler cet octet vers la gauche pour faire de la place pour le bit de sens.
Il suffit de multiplier par deux l'octet ci-dessus puis de lui ajouter le bit de sens souhaité.

Conserver l'adresse proprement dite comme constante et d'effectuer les manipulations pour insérer le bit de sens dans le sous-programme d'écriture de l'adresse. Cette astuce permet d'utiliser le même sous-programme d'écriture de l'adresse pour tous les composants I²C présents sur la ligne.

Adressage du PCF8574

L’adressage du PCF8574 est fait comme suit:

Schéma d'adressage du PCF8574

Schéma d'adressage du PCF8574A

Le PCF8574 a une plage d’adresse qui peut aller de 40 à 4E selon les niveaux des divers lignes d’adresses et le PCF8574A a une plage allant de 70 à 7E ce qui nous permet d’utiliser 8 adresses différentes sans que les interfaces se gênent entre eux.
Il ne faut pas oublier que l’adressage du Bus I2C se fait sur 7 bits et non 8, car le bit le plus à droite est le bit du choix de lecture ou d’écriture sur le bus.

les PCF8574 et PCF8574A disposent d'une adresse fixe (qu'on appelle adresse de base) et cette adresse fixe peut être décallée d'une certaine valeur grâce aux broches d'adresse A0 à A2. Les adresses de base sont celles qui doivent être utilisées quand les trois broches A0 à A2 sont portées à l'état logique bas. Si au moins une de ces broches d'adresse est portée à l'état logique haut, essayer de communiquer avec le composant avec l'adresse de base se soldera par un échec. Vous trouverez dans le tableau suivant les différentes adresses à utiliser selon l'état logique donné aux broches A0 à A2, pour les PCF8574 et PCF8574A.

A2A1A0PCF8574
Ecriture
PCF8574
Lecture
PCF8574A
Ecriture
PCF8574A
Lecture
000$40 (064d)$41 (065d)$70 (112d)$71 (113d)
001$42 (066d)$43 (067d)$72 (114d)$73 (115d)
010$44 (068d)$45 (069d)$74 (116d)$75 (117d)
011$46 (070d)$47 (071d)$76 (118d)$77 (119d)
100$48 (072d)$49 (073d)$78 (120d)$79 (121d)
101$4A (074d)$4B (075d)$7A (122d)$7B (123d)
110$4C (076d)$4D (077d)$7C (124d)$7D (125d)
111$4E (078d)$4F (079d)$7E (126d)$7F (127d)
Retourner en haut de la page