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.
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.
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.
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 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. |
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.
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.
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.
Voir aussi comment déclencher sur des adresses esclaves.