Communication par bus SPI avec les capteurs de

Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
1
INTRODUCTION
1.1
Capteurs de pression digitaux
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
SPI et spécialement les capteurs de
pression standard HCE de
Sensortechnics.
1.2
La liaison SPI
(Serial Peripheral Interface)
La liaison SPI (Serial Peripheral Interface) est
un bus pour la transmission synchrone de
données „série“ entre un maître et un ou
plusieurs esclaves (en théorie, il n’y a pas de
limitations dans le nombre d’esclaves). La
transmission a lieu en Full Duplex, c’est-à-dire
que les données circulent simultanément dans
les deux sens. Le maître génère l’horloge et
initialise une transmission de données en
sélectionnant l’esclave avec qui il veut
communiquer. Chaque esclave est adressé par
le maître par une ligne individuelle SS (Slave
Select) et n’est actif que lorsqu’il est
sélectionné.
Le bus SPI est composé de deux lignes de
signal et deux lignes de données:
·
·
·
·
Slave Select (SS)
Horloge (SCK)
Master Output, Slave Input (MOSI)
Master Input, Slave Output (MISO)
Toutes ces lignes sont unidirectionnelles.
F / 11156 / C
1/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
2
CONFIGURATION DU BUS
2.1
SCK (Horloge)
2.3
MOSI (Master Output - Slave Input)
L’horloge est générée par le maître et sert à la
synchronisation de tous les appareils
connectés.
Sur la ligne MOSI le maître transmet des
données à l’esclave.
2.2
2.4
SS (Slave Select)
Chaque esclave est adressé par le maître par
une ligne individuelle SS. Le maître sélectionne
un esclave donné en mettant sa ligne SS au
niveau BAS. Le nombre possible d’esclaves au
sein d’un tel système de bus n’est limité que
par le nombre possible de raccordements SS
du maître.
Maître
SCK
MOSI
MISO
SS1
SS2
SS3
MISO (Master Input - Slave Output)
Sur la ligne MISO l’esclave transmet des
données au maître.
SCK
MOSI
MISO
SS
Esclave 1
SCK
MOSI
MISO
SS
Esclave 2
SCK
MOSI
MISO
SS
Esclave 3
Figure 1: Exemple de configuration de bus SPI avec un maître et plusieurs esclaves
F / 11156 / C
2/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
3
PROTOCOLE DU BUS SPI
3.1
Transmission de données
Pour démarrer une transmission de données, le
maître sélectionne un esclave en mettant sa
ligne SS respective au niveau BAS. Ensuite, le
maître transfert ses données dans le registre
de sortie et rapidement après il commence à
générer le signal d’horloge (voir paragraphe 4.5
Chronogrammes).
La transmission de données a lieu en Full
Duplex en utilisant des registres à décalage
aussi bien par le maître que par l’esclave. Avec
chaque coup d’horloge le maître envoie sur la
ligne MOSI une donnée à l’esclave pendant
que l’esclave envoie simultanément une
donnée au maître sur la ligne MISO (voir Fig 2).
La transmission de données est terminée dès
que la ligne SS est remise au niveau HAUT.
REMARQUE:
Pour les capteurs de pression pour
bus SPI de Sensortechnics une ligne
MOSI n’est pas nécessaire car aucune
donnée ne doit être transmise vers le
capteur. C’est pourquoi, pour certaines
utilisations il est recommandé de ne
pas relier l’entrée MOSI du capteur au
microcontrôleur du maître, mais de la
positionner à un niveau HAUT
permanent par une résistance de pullup (voir également paragraphe 5
Exemple d’application).
Maître
Esclave
SS
7
0
SS
SCK
SCK
MOSI
MOSI
MISO
MISO
7
0
Figure 2: Transmission de données entre maître et esclave par registres à décalage
F / 11156 / C
3/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
3.2
3.2.1 CPOL (Clock Polarity)
Mode de service
Le protocole bus SPI détermine le type de
signal d’horloge (SCK) grâce à deux
paramètres: le bit de poids fort CPOL (Clock
Polarity) et le bit de poids faible CPHA (Clock
Phase). Ils en résultent quatre différents modes
de transmission comme indiqués en Tab 1. Ces
paramètres de réglage déterminent sur quel
front d’horloge les données sont transmises, et
à quel moment ces données peuvent être
modifiées.
Pour une transmission de données correcte il
est important que ces paramètres soient réglés
de manière identique pour tous les appareils
reliés au bus.
Mode SPI
CPOL
C PH A
0
0
0
1
0
1
2
1
0
3
1
1
Le CPOL détermine si au repos l’horloge est
sur le niveau BAS (CPOL=0) ou HAUT
(CPOL=1).
3.2.2 CPHA (Clock Phase)
Le CPHA détermine à quel front de l’horloge les
données sont transmises. CPHA=0 signifie que
les données sont valides au premier front
d’horloge, CPHA=1 qu’elles sont valides au
deuxième front.
Tableau 1: Modes de transmission SPI
REMARQUE:
En mode standard, les capteurs de
pression digitaux pour bus SPI de
Sensortechnics sont programmés
avec CPHA = 0 et CPOL = 0. En règle
générale, ces capteurs acceptent les 4
différents modes. Pour plus
d’informations veuillez vous adresser à
Sensortechnics.
F / 11156 / C
4/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
3.3
Format du transfert de données
3.3.1 CPHA = 0
REMARQUE:
Le format de transmission de données
indiqué en Fig 3 et 4 décrit la théorie
générale du bus SPI. Concernant les
caractéristiques des capteurs de
pression HCE veuillez consulter le
paragraphe „4.5 chronogrammes“.
Lorsque CPHA est mis à 0, les données sont
valides au premier front du signal d’horloge. La
polarité CPOL détermine s’il s’agit d’un front
montant ou descendant. A CPOL=0, au repos,
l’horloge est sur le niveau BAS; le premier front
est donc un front montant. A CPOL=1, au
repos, l’horloge est sur le niveau HAUT; le
premier front est donc un front descendant.
Cependant, la polarité de l’horloge n’a pas
d’influence sur le moment où le premier bit de
données est valide et par conséquent n’a pas
d’effet sur le format du transfert de données,
comme indiqué en Fig 3.
Cycle SCK
1
2
3
4
5
6
7
8
SCK
(CPOL=0)
SCK
(CPOL=1)
MOSI
MISO
MSB
LSB
MSB
LSB
SS
Réception
de données
Fin de
l'état de repos
Début de
l'état de repos
Figure 3: Exemple d’une transmission de données SPI de 1 octet pour CPHA=0
F / 11156 / C
5/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
3.3.2 CPHA = 1
Lorsque CPHA est mis à 1, les données sont
réceptionnées avec le deuxième front du signal
d’horloge. La polarité CPOL détermine s’il s’agit
d’un front montant ou descendant. Avec
CPOL=0, au repos, l’horloge est sur le niveau
BAS et monte au niveau HAUT après le
premier front; le deuxième front est donc un
front descendant. Avec CPOL=1, au repos,
l’horloge est au niveau HAUT et descend au
niveau BAS après le premier front; le deuxième
front est donc un front montant.
Cependant, la polarité de l’horloge n’a pas
d’influence sur le moment où le premier bit de
données est valide et par conséquent n’a pas
d’effet sur le format du transfert de données,
comme indiqué en Fig 4.
Cycle SCK
1
2
3
4
5
6
7
8
SCK
(CPOL=0)
SCK
(CPOL=1)
MOSI
MSB
LSB
MISO
MSB
LSB
SS
Réception
de données
Fin de
l'état de repos
Début de
l'état de repos
Figure 4: Exemple d’une transmission de données SPI de 1 octet pour CPHA=1
F / 11156 / C
6/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
4
TRANSMISSION DE DONNEES SUR BUS SPI AVEC LES CAPTEURS DE
PRESSION HCE
4.1
Lecture de valeurs de pression
REMARQUE 1:
Les capteurs de pression bus SPI de
Sensortechnics sont conçus pour la
transmission de 3 ou de 2 octets de
données. Entre ces octets la ligne SS
ne doit pas être mise au niveau HAUT
pour ne pas causer une interruption de
la transmission.
Pour démarrer une transmission de données, le
maître met la ligne „Slave Select“ (SS) du
capteur de pression à l’état BAS (masse). La
valeur de pression est transmise sous forme
d’un mot de 15 bits à l’intérieur d’un suite de 3
octets de données (voir Fig 5). Les capteurs de
pression digitaux des séries HCE de
Sensortechnics ne sont pas conçus pour
recevoir des données. Il est donc recommandé
de ne transmettre sur la ligne MOSI que des
niveaux HAUTS (=1) pour éviter toute perturbation
ou mauvaise interprétation du capteur (voir
également la remarque au paragraphe 3.1).
Etant donné que le maître est tout de même
susceptible d’envoyer un ordre au capteur en
début de transfert, par sécurité les valeurs de
pression ne sont transmises qu’après le deuxième
octet de données et le premier octet est nonsignificatif (le capteur transmet 0xFFh). La valeur
de pression réelle, contenue dans les octets 2 et
3, commence avec l’octet de poids le plus fort (MSB).
REMARQUE 2:
A une fréquence d’horloge de 500 kHz
la transmission des trois premiers
octets dure environ 50 µs. Les valeurs
de pression suivantes de 2 octets
chacunes nécessitent environ 32 µs.
Cependant en mode standard 14 bits
du capteur HCE, le temps du cycle de
conversion pour obtenir une nouvelle
valeur est de 500 µs. C’est pourquoi,
lors d’une cession de lecture continue
du capteur, le maître reçoit au moins
14 fois la même valeur de pression!
Pour plus d’informations, veuillez
contacter Sensortechnics.
La transmission de données est terminée dès
que le maître remet la ligne SS au niveau
HAUT. Si après le troisième octet la ligne SS
demeure au niveau BAS, le capteur envoie en
continu des valeurs de pression au maître. Ces
valeurs de pression n’ont alors qu’une longueur
de 2 octets chacune.
4.2
codée sur 15 bits. Celle-ci est transmise
comme quatrième et cinquième octet après les
octets comportant la lecture de la pression. Tant
que la transmission de données n’est pas
terminée, le capteur fournit en continu des mots
de 4 octets représentant successivement les
valeurs de pression et de température.
Lecture de la valeur de la température
En option, le capteur peut être programmé en
usine pour fournir la valeur de la température
Octet 1 de données
Octet 2 de données
1
1
1
1
1
1
Octet 3 de données
MOSI
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
MISO
X
X
X
X
X
X
X
X
X P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0
Données utiles
Figure 5: Transmission de données sur 3 octets d’une valeur de pression codée sur 15 bits
F / 11156 / C
7/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
4.3
Détermination de la valeur de pression
à partir de la valeur digitale lue
Par exemple pour une valeur digitale lue de:
Pcounts
La formule suivante montre comment calculer
la valeur physique réelle de la pression à partir
de l’information numérique:
S=
Out max − Out min
Pmax − Pmin
(1)
= 20608 comptages décimal
On en déduit la valeur physique de la pression
grâce à la formule (2), ce qui donne:
P=
(20608 − 1638 )comptages + (−100 mbar )
131,07 comptages / mbar
P = 44,73 mbar
P=
Pcounts − Out min
+ Pmin
S
(2)
4.4
Résolution
Définitions:
S
Outmax
Outmin
Pmax
Pmin
P
Pcounts
= Sensibilité [comptages/mbar]
= Sortie à la pression maximale [comptages]
= Sortie à la pression minimale [comptages]
= Valeur haute de la gamme de pression [mbar]
= Valeur basse de la gamme de pression [mbar]
= Valeur physique de la pression lue [mbar]
= Valeur digitale de la pression lue [comptages]
L’exemple suivant montre le calcul pour le
capteur de pression HCEM100DB... (gamme de
pression bidirectionnelle de 0 à ±100 mbar).
Pour les calculs suivants nous avons utilisé les
valeurs de calibration typiques, qui peuvent
varier légèrement suivant la référence du
capteur. Merci de vous reporter à la fiche
technique de la famille HCE pour les
caractéristiques techniques précises.
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 interne du capteur de pression HCE
est fixée à 14 bits. La résolution limite de la
mesure de température est également
dépendante de la sensibilité du capteur de
température. Pour plus d’informations veuillez
contacter Sensortechnics.
Outmin (-100 mbar) = 0666 hex = 1638 dec
Outmax (+100 mbar) = 6CCC hex = 27852 dec
La sensibilité du capteur se déduit de la
formule (1) comme suit:
S=
27852 comptages − 1638 comptages
100 mbar − ( −100 mbar )
S = 131,07 comptages /mbar
F / 11156 / C
8/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
Paramètre
Symbole
Min.
Typ.
Max.
Niveau d'entrée HAUT
90
100
Niveau d'entrée BAS
0
10
Niveau de sortie BAS
Unité
% de V S
10
Résistance de pull-up
Ω
500
Capacité de charge
CMISO
400
Capacité d'entrée
CSPI_IN
10
pF
fSCK
100*
MISO Temps de maintien après le front SCK
tSPI_HD_MISO
ns
MOSI Temps de setup avant le front SCK
tSPI_SU_MOSI
200
2/fCLK
Temps de setup SS avant le front SCK
tSPI_SU_SS
10
ns
Temps de délai après le front SCK
tSPI_HD_SS
1/fCLK
SCK Fréquence d'horloge
640
kHz
* recommandé (voir la note en page 10)
Tableau 2: Paramètres et chronogrammes de communication sur bus SPI avec les capteurs de pression HCE
4.5
Chronogrammes
t
t
SPI_SU_SS
Pour une transmission de données correcte le
capteur de pression doit détecter la fonction
START (ligne SS à l’état BAS) avant que le
maître n’envoie le premier coup d’horloge. C’est
pourquoi, avant le premier coup d’horloge, le
maître doit respecter un délai minimum tSPI_SU_SS
(voir tableaux 2 et Fig 6). Après le dernier coup
d’horloge un délai minimum tSPI_HD_SS doit être
respecté avant que le maître termine la
communication (ligne SS à l’état HAUT).
SPI_HD_SS
t
SPI_SU_MOSI
t
SCK
(CPOL=0)
SPI_HD_MISO
MOSI
MISO
SS
Les chronogrammes sont contrôles par le
maître et dépendent entre autres des conditions
suivantes.
· le mode de communication du bus SPI
· la vitesse du bus
· le circuit électronique extérieur
(p.ex. la valeur des résistances de pull-up)
· les impédances et capacités des lignes du
bus SPI
F / 11156 / C
Figure 6: Chronogrammes bus SPI
Contrairement à la théorie (Fig 3, Page 5), les
capteurs de pression HCE de Sensortechnics
actualisent leurs données très rapidement
après avoir respecté le délai tSPI_HD_MISO suivant
un front d’horloge valide (voir Fig 6). Ceci
conduit, et ce spécialement lors d’une
transmission à faible vitesse, à avoir
l’impression que la transmission ne s’effectue
pas sur le front montant mais descendant
(CPAH=1, CPOL=0, voir paragraphe 3.3.2, Fig 4).
9/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
4.6
Vitesse de transmission
REMARQUE:
Pour empêcher des perturbations
électromagnétiques, Sensortechnics
conseille une fréquence d’horloge de
100 kHz minimum (640 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’informations veuillez
contacter Sensortechnics.
La vitesse maximale de bus permise dépend de
la configuration de la fréquence de l’horloge
interne du capteur qui varie en fonction de la
température et des conditions de fabrication.
Dans le pire des cas, pour les capteurs des
séries HCE, cette fréquence d’horloge en
configuration standard est de 640 kHz. En
configuration spéciale, elle peut aller jusqu’à
730 kHz.
4.7
Perturbations électromagnétiques
Les fronts très raides des signaux transmis sur
le bus SPI 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 détériorer le signal analogique.
5
EXEMPLE D’APPLICATION
Sur chaque ligne de transmission, il est
recommandé d’utiliser une résistance de pull-up
d’environ 4,7 kΩ et de plus une résistance série
de 330 Ω, comme indiqué en Fig 7.
Au cas où l’on utiliserait en même temps les
sorties digitale et analogique il est recommandé
d’éloigner autant que possible les deux signaux.
Il est également recommandé de placer une
capacité de découplage de 220nF entre
l’alimentation et la masse, et une de 15nF entre
la sortie analogique et la masse. Les
condensateurs doivent se trouver le plus près
possible des pattes du capteur.
4k7
4k7
4k7
4k7
+Vs
MOSI
330
MOSI
MISO
330
MISO
SS
330
SS
SCK
330
SCK
HCE
Figure 7: Exemple de circuit d’application sur bus SPI pour capteurs de pression HCE
F / 11156 / C
10/11
www.sensortechnics.com
Communication par bus SPI avec les capteurs de pression digitaux
de la série HCE de Sensortechnics
6
EXEMPLE DE PROGRAMME POUR LE BUS SPI
byte dont_care;
byte byte_msb, byte_lsb;
int16 pressure;
// 8bit values
// 8bit values
// 16bit value
// If your controller does not control the /SS pin, you'll need to configure it yourself
// Set output value to 1/high state (SPI in idle state)
pin_ss = 1;
// Set pin to output
set_inout_mode(pin_ss, PIN_OUT);
// Set SPI unit to SPI master mode, clock speed 100 kHz and SPI mode 0 (CPHA = 0 & CPOL = 0)
configureSPI (SPI_MASTER | CLK_SPEED_100KHZ | SPI_MODE_0);
// Set /SS Pin low (Start communication)
pin_ss = 0;
// Transfer one byte over SPI bus (send 0xFF, write received data to dont_care (discard first byte))
SPI_transfer (0xFF, &dont_care);
// Transfer one byte over SPI bus (send 0xFF, write received data to byte_msb)
SPI_transfer (0xFF, &byte_msb);
// Transfer one byte over SPI bus (send 0xFF, write received data to byte_lsb)
SPI_transfer (0xFF, &byte_lsb);
// Set /SS pin high (End communication)
pin_ss = 1;
// Put both values together
pressure = ((int16)byte_msb << 8) | byte_lsb;
7
EN CAS DE PROBLEMES
7.1
Le capteur ne répond pas
· Vérifier les niveaux des signaux SCK et SS
sur les pattes du capteur de pression.
- Est-ce que les fronts sont assez raides?
- Est-ce que les niveaux HAUT et BAS sont
compris dans la fourchette de valeurs
spécifiées (voir Tab 2)?
· Vérifier la sortie analogique du capteur de
pression. Si celle-ci réagit correctement à
des variations de pression, le capteur
fonctionne.
F / 11156 / C
7.2
Le capteur fournit des valeurs instables
· Vérifier le mode SPI utilisé.
En mode standard, les capteurs de pression
HCE de Sensortechnics sont configurés
avec CPAH=0 et CPOL=0
· Est-ce que les recommandations données
au paragraphe 4.7 ont bien été respectées?
Pour plus d’informations veuillez
contacter Sensortechnics:
Tel. +49 (0)89 80083-0
[email protected]
11/11
www.sensortechnics.com