Communication bus I²C avec les capteurs de pression

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