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.
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'esclave | Bit de lecture/écriture | Bit Description |
---|---|---|
000 0000 | 0 | Adresse de requête générale |
000 0000 | 1 | START byte (*1) |
000 0001 | X | Adresse CBUS (*2) |
000 0010 | X | Réservé pour différents formats de bus(*3) |
000 0011 | X | Réservé pour une utilisation future |
000 01XX | X | Mode Hs code maître |
111 10XX | X | adressage de l'esclave 10 bits |
111 11XX | X | Ré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.
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.
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é.
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