Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 1 INTRODUCTION Les capteurs de pression digitaux utilisent un ASIC interne pour la calibration digitale et la compensation en température et fournissent un signal de sortie digital d’une résolution allant jusqu’à 15 bits. En plus de cela, les capteurs disposent d’un signal de sortie analogique. Le temps de réponse du capteur dépend de la résolution choisie, en 12 bits il est de 0,5 ms. Les capteurs de pression digitaux de Sensortechnics sont configurés pour la communication par bus I²C ou SPI. REMARQUE: Cette note d’application concerne uniquement la communication par bus I²C et spécialement les capteurs de pression des séries HDI, HCLA, HCA et SSI. Le bus I²C est un bus de données „série“ de 8 bits. Il est idéal pour la communication à courtes distances entre divers circuits intégrés (d’où son appellation Inter-IC ou I²C), p. ex. la connexion d’un micro-contrôleur à divers périphériques en basse vitesse. Chaque périphérique relié au bus a une adresse propre et unique qui permet de le consulter individuellement. Le bus I²C n’a besoin que de deux lignes bidirectionnelles: une ligne pour l’horloge (Serial Clock Line, SCL) et l’autre pour les données (Serial Data Line, SDA). La vitesse de transmission des données peut être sélectionnée, avec un maximum de 400 kbit/s. 2 PROTOCOLE DU BUS I²C 2.1 Caractéristiques générales Le bus I²C est conçu en tant que bus maîtreesclave. Deux lignes bidirectionnelles, la ligne d’horloge (SCL) et la ligne de données (SDA), transmettent des informations entre les différents périphériques (voir Fig 1). Chaque circuit compatible avec l’interface I²C peut être connecté au bus. Les lignes SCL et SDA doivent être reliées à une tension d’alimentation positive par des résistances de pull-up (voir paragraphe 4, schéma d’application). Au repos, les deux lignes sont au niveau HAUT. Elles ne peuvent être mises au niveau BAS que par l’un des circuits connectés. SCL SDA Maître Esclave Figure 1: F / 11155 / C Esclave Esclave Exemple de configuration de bus I²C 1/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics SDA Maître-Transmetteur Esclave-Récepteur SCL SDA Maître-Récepteur Esclave-Transmetteur SCL Figure 2: Concept maître-esclave du bus I²C 2.2 Le concept maître-esclave 2.3 Validité des données Le bus I²C utilise un concept maître-esclave simple. Le maître initialise une transmission de données (fonction START), génère l’horloge (SCL) et termine la transmission (fonction STOP). Les appareils adressés par le maître sont les esclaves. Les données ne sont considérées comme valides que pendant l’état HAUT du signal d’horloge (voir Figure 3). Pendant cette période, les données doivent être stables à l’état HAUT pour transmettre un „1“ et à l’état BAS pour transmettre un „0“. La valeur de la ligne de données ne peut être modifiée que pendant que l’horloge est à l’état BAS. Les maîtres et esclaves peuvent travailler en tant que transmetteur et récepteur (voir Figure 2). Le transmetteur envoie des données, le récepteur les reçoit. Lorsque le maître adresse un esclave et lui transmet ensuite des données, on parle d’un transmetteur maître et d’un récepteur esclave. Lorsque par contre le maître reçoit des données de l’esclave, on parle d’un récepteur maître et d’un transmetteur esclave. REMARQUE: Les capteurs de pression digitaux de Sensortechnics ne peuvent travailler que comme transmetteurs esclaves, c’est-àdire qu’ils ne peuvent que répondre à une requête du périphérique maître. SDA SCL Données valides Figure 3: F / 11155 / C Données modifiables Validité des données sur le bus I²C 2/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 2.4 Fonctions START (S) et STOP (P) 2.5 Format de données Le circuit maître démarre chaque cycle de transmission en envoyant un signal START sur le bus. Tous les circuits connectés sont ainsi avertis qu’une transmission de données va avoir lieu. A partir de ce moment-là le bus est considéré comme occupé. Pour terminer la transmission, le maître envoie un signal STOP. De cette façon il signale à tous les périphériques qu’aucune autre donnée ne va être transmise et libère ainsi le bus. Chaque octet envoyé sur la ligne SDA doit être formé de 8 bits. Les données sont transmises avec le bit de poids le plus fort (MSB) en premier et ainsi de suite, jusqu’au bit de poids le plus faible (LSB) en dernier. Comme vous pouvez le voir en Fig. 5, le bit de poids „128“ est transmis en premier. La fonction START est définie par un front descendant (passage de „1“ à „0“) sur la ligne SDA pendant que SCL est à „1“. Par contre, la fonction STOP est définie par un front montant sur la ligne SDA („0“ à „1“) pendant que la ligne SCL est à „1“ (voir Figure 4). SDA SCL Fonction START Figure 4: Fonction STOP Fonctions START et STOP du bus I²C MSB Binaire 0 Décimal Figure 5: LS B 1 1 0 1 1 0 1 128 64 32 16 8 4 2 1 Format des données sur le bus I²C 2.6 Adressage et sens des données Chaque périphérique sur le bus a une adresse propre et unique par laquelle il peut être identifié et adressé. Juste après le signal START, le maître envoie un premier octet représentant l’adresse du périphérique avec lequel il veut communiquer. L’adresse est codée sur 7 bits, le 8ème déterminant le sens de la transmission (bit R/W). La ligne R/W à „0“ indique le maître veut écrire (WRITE = ECRITURE) vers un périphérique esclave. La ligne R/W à „1“ indique que le maître demande des informations de la part de l’esclave (READ = LECTURE). MSB LS B Adresse sur 7 bits b7 b6 Figure 6: F / 11155 / C b5 b4 b3 R/W b2 b1 b0 Octet d’adresse sur le bus I²C 3/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics Lorsqu’une adresse est transmise sur le bus, chaque périphérique connecté la compare à sa propre adresse. Si celle-ci concorde, le périphérique se considère adressé par le maître en tant que récepteur ou transmetteur, en fonction de l’état du bit R/W. Le codage sur 7 bits permet 27 =128 différentes adresses sur le même bus. Etant donné que quelques adresses sont réservées à des fins propres, en pratique, le nombre des adresses utilisables est inférieur. De plus, le nombre de périphériques connectés sur le bus ainsi que leurs connections sont limités par la charge capacitive (CSDA=400pF). D’une manière générale, l’adresse d’un composant I²C est constituée d’une partie fixe et d’une partie variable. L’usage veut que la partie fixe (4 bits) représente une catégorie de composants et la partie variable (3 bits donc 8 adresses) un élément particulier à l’intérieur de ce groupe spécifique. 2.7 Confirmation (ACK ou A) Chaque octet envoyé par le bus doit être confirmé par le récepteur. La confirmation (Acknowledge) signifie que les données ont été correctement reçues et que la transmission de données peut continuer. A cet effet, le maître doit générer une impulsion d’horloge supplémentaire. Le transmetteur libère la ligne SDA pendant cette phase (le pullup la positionne donc à „1“). Le récepteur doit tirer à la masse, donc mettre à „0“ la ligne SDA de manière à fournir un signal BAS stable au moment du front de montée de l’impulsion d’horloge supplémentaire de confirmation, et ce jusqu’après la retombée du signal (voir Fig 7). Si le récepteur ne désire plus recevoir de données, il laisse la ligne SDA à „1“ et envoie alors une non-confirmation (A ou NACK). Le maître peut maintenant terminer la transmission de données avec un signal STOP. REMARQUE: Tous les capteurs de pression bus I²C des séries HDI, HCLA, HCA et SSI ont une adresse esclave préréglée en usine (=0x1111000b). Mais il est possible par programmation usine de spécifier une adresse secondaire additionnelle pour chaque capteur (selon la norme I²C, 127 adresses différentes sont possibles). Le capteur répondra à l’une ou l’autre de ces adresses. F / 11155 / C 4/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics Données du transmetteur Données du récepteur SCL 1 2-8 Fonction START Figure 7: 9 ACK Confirmation (ACK) de données reçues 2.8 Transmission complète de données La Figure 8 montre l’exemple d’une transmission complète de données sur le bus I²C. Après un signal START le maître envoie l’adresse de l’esclave qu’il a choisi. Le bit de direction de données (R/W) détermine s’il s’agit d’une transmission en LECTURE (R) ou ECRITURE (W). L’esclave contacté confirme (ACK) la réception correcte du premier octet de données. Maintenant un nombre illimité d’octets de données peut être transmis, à chaque fois suivi d’une confirmation par le récepteur. La transmission de données est toujours terminée par le signal STOP du maître. Si le maître veut continuer à communiquer sur le bus, il doit générer un signal START renouvelé et envoyer à nouveau des données. SDA 1-7 8 Adresse R/W 9 1-8 9 ACK Données ACK 1-8 9 l SCL Fonction START Figure 8: F / 11155 / C Données NACK Fonction STOP Exemple d’une transmission complète de données sur le bus I²C 5/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 3 TRANSMISSION DE DONNEES AVEC LES CAPTEURS HDI, HCLA, HCA ET SSI Octet 1 de données Octet 2 de données X P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Les capteurs de pression digitaux HDI, HCLA, HCA et SSI travaillent uniquement comme transmetteurs-esclaves, c’est-à-dire qu’ils ne réagissent que sur les requêtes en LECTURE d’un maître et transmettent ensuite la valeur de la pression mesurée. Données utiles Figure 10: Codage sur 15 bits de la valeur de la pression REMARQUE: Avec une fréquence d’horloge SCL de 400 kHz, la transmission de 2 octets dure environ 40 µs. Cependant, avec une résolution de 12 bits , le temps de conversion interne du capteur pour le calcul d’une nouvelle valeur de pression est de 250 µs. C’est pourquoi, lorsque le capteur est en mode de transmission continue, il transmet 7 fois la même valeur de pression avant de la reactualiser! Pour plus d’informations veuillez contacter Sensortechnics. 3.1 Lecture de valeurs de pression Pour démarrer une session de lecture, le maître envoie après le signal START l’adresse spécifique du capteur (soit 0x1111000bin ou l’adresse programmée suivant spécification client) suivi d’une commande de lecture (R/W=1) (voir Fig 9). Après confirmation de la réception de données (A) par le capteur, le maître devient récepteur, le capteur devient émetteur. Maintenant, le capteur envoie 2 octets de données avec la valeur de pression en cours de mesure codée sur 15 bits (voir Fig 10). Après le premier octet le maître doit envoyer une confirmation de réception et peut terminer la lecture après la réception du deuxième octet en envoyant un signal STOP. Il a également le choix de continuer à effectuer des lectures de pression consécutives, sans s’arrêter. Pour cela, après le dernier octet transmis, le maître doit envoyer une autre confirmation de réception et le capteur de pression continue à envoyer des valeurs de pression lues. 3.2 Lecture de la valeur de la température (en option) En option, les capteurs peuvent fournir la lecture de la température codée sur 15 bits. Celle-ci est transmise comme troisième et quatrième octet après les deux octets représentant la lecture de la pression. Tant qu’un ordre STOP n’est pas envoyé, on aura ainsi alternativement la lecture de la pression et celle de la température. 1 S Adresse du capteur R/W A Octet 1 de données A Octet 2 de données A n octets de données Lecture de la première valeur de pression généré par le maître généré par le capteur Figure 9: F / 11155 / C S = fonction START A = confirmation de réception A = non-confirmation de réception P = fonction STOP A P Lecture de n valeurs de pression Octet 1 de données = Octet de poids fort (MSB en premier) Octet 2 de données = Octet de poids faible (LSB en dernier) Lecture de la valeur de la pression 6/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 3.3 Détermination de la valeur de pression à partir de la valeur digitale lue La sensibilité du capteur se calcule à l’aide de la formule (1) comme suit: La formule suivante montre comment calculer la valeur réelle de la pression à partir de l’information codée en digital. S= Définitions: S = Sensibilité [comptages digitaux/mbar] Outmax = Sortie à la pression maximale [comptages] Outmin = Sortie à la pression minimale [comptages] Pmax = Valeur haute de la gamme de pression [mbar] Pmin = Valeur basse de la gamme de pression [mbar] P = Valeur physique de la pression lue [mbar] Pcounts = Valeur digitale de la pression lue [comptages] Out max − Out min S= Pmax − Pmin P= Pcounts − Out min + Pmin S Pour une valeur de mesure de pression digitale de Pcounts = 0508 hex = 20608 dec la valeur physique de la pression se déduit grâce à la formule (2) comme suit: 20608 comptages − 1638 comptages + 0 mbar 524,28 comptages / mbar = 36,18 mbar (2) L’exemple suivant montre le calcul pour un capteur HCLA0050…U (gamme de pression unidirectionnelle de 0...50 mbar). Merci de vous reporter à la fiche technique de la famille HCLA pour les caractéristiques techniques. NB: Ce calcul a été fait en tenant compte des caractéristiques typiques de ce capteur. Outmin = 0666 hex = 1638 dec Outmax = 6CCC hex = 27852 dec F / 11155 / C = 524,28 comptages /mbar P= (1) 27852 comptages − 1638 comptages 50 mbar − 0 mbar 3.4 Résolution Chaque valeur de pression et de température transmise est codée sur 15 bits. Pourtant, la résolution réelle peut être inférieure, car elle dépend de la configuration du convertisseur A/D interne. De plus, la résolution peut être dégradée à cause de calculs internes et de certains traitements du signal. La résolution standard pour le traitement interne est fixée à 12 bits ce qui conduit à une résolution réelle de 11 à 12 bits en lecture. La résolution limite de la mesure de température est également dépendante de la sensibilité du capteur de mesure. Pour plus d’informations veuillez contacter Sensortechnics. 7/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 3.5 Chronogrammes Paramètre Symbole Min. tBUF 1.3 tHD;STA 0.8 Horloge à l'état BAS tLOW 1.3 Horloge à l'état HAUT tHIGH 0.6 Temps d'installation d'un START renouvelé tSU;STA 1 Temps de maintien des données tHD;DAT 0 Temps d'installation des données tSU;DAT 0.2 Temps de montée de SDA et SCL tR --- 0.3 Temps de descente de SDA et SCL tF --- 0.3 Temps d'installation du signal STOP tSU;STO 0.6 Libération du bus entre un STOP et un START Temps de maintien du START (renouvelé) Typ. Max. Unité µs Tableau 1: Paramètres de communication sur le bus I²C avec les capteurs de pression HDI, HCLA, HCA et SSI tSU;DAT tHD;DAT tSU;STA tHD;STA tR tSU;STO tBUF tHD;STA tF SCL SDA tHIGH tLOW SCL SDA Figure 11: Chronogrammes pour le bus I²C F / 11155 / C 8/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics Paramètre Entrée niveau HAUT Entrée niveau BAS Sortie niveau BAS Résistance de pull-up Capacité de charge Capacité d'entrée Fréquence d'horloge SCL Symbole Min. Typ. 90 0 Max. Unité 100 10 10 % de V s Ω 500 C SD A CI2C_IN fSCL 400 10 400 100* pF kHz * recommandé (voir la note en bas de cette page) Tableau 2: Paramètres de communication pour capteurs HDI, HCLA, HCA et SSI sur le bus I²C 3.6 Vitesse de transmission La vitesse maximale de communication sur le bus dépend de la programmation de la fréquence d’horloge interne des capteurs de pression HDI, HCLA, HCA et SSI. En mode standard celle-ci est de 400 kHz et correspond au mode „Rapide“ de la spécification du bus I²C. Au cas où l’on utiliserait en même temps les sorties digitales et analogiques, il est recommandé d’éloigner autant que possible les deux signaux. Il est également recommandé de placer une capacité de découplage de 220 nF entre l’alimentation et la masse, et une de 15 nF entre la sortie analogique et la masse. 3.7 Perturbations électromagnétiques 4 Les fronts raides des signaux SCL et SDA peuvent provoquer des perturbations électromagnétiques. Particulièrement pour les capteurs faibles pressions montés sur des circuits imprimés de tailles réduites, ceci peut perturber le signal bas-niveau (mV) issu du capteur et peut détériorer le signal. Sur chaque ligne de transmission, il est recommandé d’utiliser une résistance de pull-up (RP) d’environ 1,5 kΩ et de plus une résistance série (RS) de 240 Ω, comme indiqué en Fig 12. REMARQUE: Pour empêcher des perturbations électromagnétiques, Sensortechnics conseille une fréquence d’horloge de 100 kHz minimum (400 kHz maximum) et des pauses de transmissions de 500 µs minimum entre deux transmissions de pression. Ceci est particulièrement important pour toutes les versions faibles pressions jusqu’à 25 mbar. Pour plus d’information veuillez contacter Sensortechnics. F / 11155 / C SCHÉMA D’APPLICATION +VS R P SCL SDA R P R S Capteur R S Figure 12: Exemple de circuit d’application sur bus I²C pour capteurs de pression digitaux de Sensortechnics 9/10 www.sensortechnics.com Communication bus I²C avec les capteurs de pression digitaux des séries HDI, HCLA, HCA et SSI de Sensortechnics 5 EXEMPLE DE PROGRAMME POUR LE BUS I²C byte byte_msb, byte_lsb; int16 pressure; // 8bit values // 16bit value // Set I2C unit to I2C master mode, clock speed 100 kHz and 7 bit addressing configureI2C (I2C_MASTER | CLK_SPEED_100KHZ | ADDRESSING_7BIT); // Set the target address of the sensor (0x78 = 120dec) I2C_set_target(0x78); // Send start condition for reading from sensor (slave) I2C_send_start_read(); // Read first (MSB) data byte and answer with ACK (continue communication) I2C_read (&byte_msb, SEND_ACK); // Read second (LSB) data byte and answer with NACK (end communication) I2C_read (&byte_lsb, SEND_NACK); // Send Stop condition I2C_send_stop(); // Put both values together pressure = ((int16)byte_msb << 8) | byte_lsb; F / 11155 / C 10/10 www.sensortechnics.com