Astuces, Outils et Applications pour l’Industrie Electronique en Europe.

Posté le 9 mars 2017 14:24:54 par Claude

Quelle adresse choisir pour communiquer avec des dispositifs I2C esclaves

Nous recevons souvent des demande de clients concernant quel adresse esclave  utiliser afin de communiquer avec leur dispositif I2C esclave. En effet, le fait que les fabricants utilisent des conventions d'adressage esclave différentes entretien une certaine confusion.

Dans ce document, nous allons clarifier l'adressage esclave utilisé par les produits TotalPhase et aider le développeur a déterminer quelle adresse ils doivent finalement utiliser.

Contenu

  • Adressage 7-bits
  • Adresses réservées
  • Adressage 8-bits
  • Adressage 10-bits

Les spécifications de NXP (anciennement Philips) décrivent deux mécanismes d'adressage esclave. Le mode standard I2C utilise un adressage 7-bits. L'adressage 10-bits a été rajouté plus tard en tant qu'extension du mode standard I2C.

Adressage 7-bits

Durant la procédure d'adressage 7-bits, l'adresse esclave est transférée dans le premier octet après la condition "Start". Les premiers 7 bits de l'octet comprennent l'adresse esclave, le huitième bit correspond au drapeau  lecture/écriture ou le 0 indique une écriture et le 1, une lecture.

i2c-slave-address.png

Figure 1: Adressage 7-bits.  La spécification du bus I2C indique que dans la mode standard I2C, l'adresse de l'esclave est indiquée dans les 7 premiers bits et est suivie par le bit de lecture/écriture.

 

Tous les produits I2C de TotalPhase suivent ce procédé. L'adresse de l'esclave doit être seulement indiquée dans les 7 premiers bits. Dans le cas de l'Adaptateur Hote Aardvark I2C/SPI, le logiciel positionne automatiquement le bit lecture/écriture en fonction de la transaction en cours. Dans le cas de l'analyseur de protocole Beagle I2C/SPI, l'adresse de l'esclave et le type de la transaction sont affichés dans deux colonnes différentes.

Les Adresses réservées

Les spécification I2C ont réservées deux jeux d'adressage huit bits, 1111XXX et 0000XXX, ces adresses étant utilisées pour des objets particuliers. La table ci dessous a été tirée des spécifications I2C (2000)

 

Addresse esclave
Bit L/E
Description
000 0000 0 Adresse d'appel général
000 0000 1 Octet de START(1)
000 0001 X Adresse CBUS(2)
000 0010 X Réservé pour des fromats de bus differents  (3)
000 0011 X Reservé pour des besoins futures
000 01XX X Code mode maïtre Hs
111 10XX X Adressage esclave 10-bits
111 11XX X Réservé pour de futures usages.

(1) Aucun dispositif n'est autorisé à acquitter la réception de l'octet de START.
(2) L'adresse CBUS a été réservée pour permettre un mélange des dispositifs compatibles CPUS et I2C dans un même système. Les dispositifs I2C ne sont pas autorisés à répondre à réception de cette adresse.
(3) Cette adresse est réservée pour que des formats et des protocoles compatibles avec le bus I2C et pouvant travailler avec lui soient autorisés à répondre à cette adresse.
 

Adressage 8-bits

Quelques fabricants fournissent une adresse 8-bits incluant le bit de lecture/écriture. Il vous sera souvent possible de déterminer si c'est le cas parce qu'ils vont fournir une adresse pour écrire et une autre pour lire sur l'esclave. Dans ce cas, utilisez seulement les premiers 7 bis de l'adresse.

 

i2c-slave-address-2.png

Figure 2 : Adressage 8-bits.  Certains vendeurs fournissent incorrectement des adresses 8 bits pour leur dispositif. Les 8 bits servent a encoder l'adresse de l'esclave sur 7-bits et le bit de lecture/écriture. Comme les appareils de TotalPhase utilisent 7 bits, il est primordial d'utiliser les premiers 7 bits comme adresse esclave.
 

Une autre façon de déterminer si le fabriquant utilise une adresse de 8-bits au lieu de l'adressage 7-bits est de vérifier si les adresses esclaves tombent dans le bonne gamme. En effet, toutes les adresses 7-bits doivent être supérieures à 0x07 et inférieures à 0x78 (120). Si votre adresse esclaves est en dehors, il y a de grandes chances pour que le fabricant ait spécifié une adresse 8-bits.

i2c-slave-address-3.png

Figure 3 : Gamme d'adresses esclaves 7-bits valides. La gamme d'adresses valides est entourée par deux blocs d'adresses réservées à chaque extrémité de gammes. Les adresses esclave valides sont supérieures à 0x07 et inférieures à 0x78.

 

Adressage 10-bits

Une des raisons qui a poussé TotalPhase à utiliser l'adressage 7-bits pour tous ses produits a été de s'assurer que l'adressage 10-bits serait traité correctement.

L'adressage 10-bits a été conçu pour être compatible avec l'adressage 7-bits, permettant ainsi au développeur de mélanger les deux types de dispositifs sur le même bus. Lors de la communication avec un élément à adressage 10-bits, l'adresse spéciale réservée est utilisée pour indiquer que l'adressage 10-bits est utilisé.

slave-address-fig4.png

Figure 4 : L'adressage 10-bits. Dans ce système d'adressage, l'adresse esclave est envoyée dans les deux premiers octets. Le premier commence avec l'adresse spéciale réservée 1111 0XX qui indique un adressage 10-bits. Les 10 bits de l'adresse sont encodés dans les 3 derniers bits du premier octet et les 8 bits du deuxième octet. Le 8em bit du premier octet reste le drapeau lire/écrire.

 

Lors de l'utilisation de l'adaptateur d'hôte Aardvark I2C/SPI, si une adresse 10 bits est spécifiée, son logiciel se chargera d'envoyer les bits appropriés. Ainsi le développeur n'aura besoin de prendre aucune action pour envoyer les données correctes d'adressage. L'analyseur de protocole  Beagle I2C/SPI  détectera aussi automatiquement un adressage esclave 10-bits lors de la capture des données et affichera l'information correctement.

Références


Voir aussi comment déclencher sur des adresses esclaves.

 

Outils de débogue enfouis