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.
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.
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.
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é.
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
- Spécification et manuel utilisateur du bus I2C-bus - NXP
- Totalphase.com
Voir aussi comment déclencher sur des adresses esclaves.