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