TotalPhase-Blog-Erlebniswelten

Adressage de l'esclave I2C avec 7 bits, 8 bits et 10 bits

Il y a souvent une grande incertitude quant aux adresses esclaves à utiliser pour communiquer avec un appareil esclave I2C. Malheureusement, une grande partie de cette confusion est due au fait que les différents fournisseurs suivent des conventions d'adresses esclaves différentes. 

L'objectif de cet article est de clarifier la norme d'adresse esclave utilisée par tous les produits Total Phase et d'aider les développeurs à déterminer l'adresse esclave qu'ils doivent utiliser.

La spécification I2C de NXP (anciennement Philips) est spécifiée  pour différents schémas d'adressage esclave. Le mode standard du bus I2C utilise l'adressage 7 bits. L'adressage 10 bits a été ajouté plus tard comme extension du mode standard.

adressage 7 bits

Avec l'adressage 7 bits, l'adresse de l'esclave est transmise dans le premier octet après la condition de départ. Les sept premiers bits de l'octet comprennent l'adresse de l'esclave. Le huitième bit est le drapeau de lecture/écriture, où 0 indique une écriture et 1 une lecture.

slave-address-with-totalphase-figure1

adressage sur 7 bits : la spécification du bus I2C spécifie que dans le mode standard I2C, l'adresse est de 7 bits
l'adresse de l'esclave est de 7 bits, suivie du bit de lecture/écriture.

Tous les produits I2C de Total Phase suivent cette convention standard. L'adresse esclave utilisée ne devrait être longue que des sept bits supérieurs. Le logiciel de l'adaptateur hôte Aardvark I2C/SPI ajoute automatiquement le bit de lecture/écriture correct en fonction de la transaction à effectuer. Dans l'analyseur de protocole I2C/SPI de Beagle, l'adresse de l'esclave et le type de transaction sont affichés dans deux colonnes différentes.

Adresses réservées

La spécification I2C a réservé deux ensembles d'adresses de 8 bits, 1111XXX et 0000XXX. Ces adresses sont utilisées à des fins spécifiques. Le tableau suivant est tiré des spécifications I2C (2000).

Adresse de l'esclaveBit de lecture/écritureBit Description
000 00000Adresse de requête générale
000 00001START byte (*1)
000 0001XAdresse CBUS (*2) 
000 0010XRéservé pour différents formats de bus(*3)
000 0011XRéservé pour une utilisation future
000 01XXXMode Hs code maître
111 10XXXadressage de l'esclave 10 bits
111 11XXXRéservé pour une utilisation future

(*1) Aucun appareil ne doit acquitter à la réception de l'octet START.

(*2) L'adresse CBUS a été réservée pour permettre de mélanger les appareils compatibles avec le CBUS et ceux compatibles avec le bus I2C dans le même système. Les appareils compatibles avec le bus I2C ne doivent pas répondre à la réception de cette adresse.

(*3) L'adresse réservée à un autre format de bus est incluse pour mélanger I2C et d'autres protocoles. Seuls les appareils compatibles avec le bus I2C, qui peuvent travailler avec de tels formats et protocoles, peuvent répondre à cette adresse.

adresses 8 bits

Certains fournisseurs fournissent des adresses 8 bits incorrectes qui contiennent le bit de lecture/écriture. Tu peux voir si c'est le cas lorsqu'une adresse est fournie pour l'écriture à l'appareil esclave et une autre pour la lecture de l'esclave. Dans ce cas, n'utilise que les sept bits supérieurs de l'adresse.

Totalphase-slave-address-fig2

Certains fournisseurs proposent deux fausses adresses esclaves de 8 bits pour leur appareil, une pour écrire sur l'appareil et une pour lire depuis l'appareil. Cependant, ce nombre de 8 bits encode l'adresse esclave de 7 bits et le bit de lecture / écriture. Comme les produits Total Phase utilisent l'adressage 7 bits, il est important de n'utiliser que les 7 bits supérieurs de l'adresse comme adresse esclave.

 

Une autre façon de déterminer si un fabricant utilise des adresses de 8 bits au lieu de 7 bits est de déterminer si l'adresse esclave se situe dans la bonne plage. Toutes les adresses de 7 bits devraient être supérieures à 0x07 et inférieures à 0x78 (120). Si ton adresse esclave se trouve en dehors de cette plage, le fournisseur a probablement indiqué une adresse de 8 bits. 

totalphase-slave-address-fig3

Plage d'adresses esclaves 7 bits valides. La plage d'adresses esclaves 7 bits valides est liée par deux blocs d'adresses réservées à chaque extrémité de la plage. Les adresses esclaves valides sont supérieures à 0x07 et inférieures à 0x78.

adressage 10 bits

L'une des raisons pour lesquelles Total Phase a décidé d'utiliser l'adressage 7 bits pour tous ses produits était de s'assurer que l'adressage 10 bits puisse être géré correctement. L'adressage 10 bits a été développé pour être compatible avec l'adressage 7 bits, de sorte que les développeurs peuvent combiner deux types d'appareils sur un seul bus. Lors de la communication avec un appareil 10 bits adressé, l'adresse spécialement réservée est utilisée pour indiquer si l'adressage 10 bits est utilisé.

Totalphase-slave-address-10-bit

adressage sur 10 bits. Avec l'adressage 10 bits, l'adresse de l'esclave est envoyée dans les deux premiers octets. Le premier octet commence par l'adresse spéciale réservée 1111 0XX, qui indique que l'adressage 10 bits est utilisé. Les 10 bits de l'adresse sont codés dans les 2 derniers bits du premier octet et dans les 8 bits entiers du deuxième octet. Comme pour l'adressage 7 bits, le 8e bit du premier octet contient le drapeau de lecture/écriture.

 

Si une adresse de 10 bits est indiquée lors de l'utilisation de l'adaptateur hôte Aardvark I2C / SPI, le logiciel veille à ce que les bits corrects soient envoyés. Le développeur n'a pas besoin de faire des démarches spéciales pour envoyer les données d'adresse correctes. L'analyseur de protocole Beagle I2C / SPI détecte automatiquement les adresses esclaves de 10 bits dans les données collectées et affiche correctement les informations

Outils de développement I2C

Adaptateur hôte I2C/SPI AardvarkAdaptateur hôte I2C/SPI Aardvark
Adaptateur hôte I2C/SPI Aardvark
TP240141
L'adaptateur hôte Aardvark I2C/SPI est un outil innovant pour l'utilisation avec les systèmes de bus I2C & SPI.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Analyseur de protocole I2C/SPI Beagle
TP320121
L'analyseur de protocole I2C/SPI Beagle est un adaptateur hôte de bus I2C et SPI rapide et puissant via USB

369,00 €*
Plateforme universelle Promira I2C/ SPI/ eSPI
TP500110-S
La plateforme universelle Promira I2C/SPI/eSPI peut être utilisée pour une multitude d'applications

Variantes de 900,00 €*
1 060,00 €*