SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 1 EINFÜHRUNG 1.2 1.1 Digitale Drucksensoren Das Serial Peripheral Interface (SPI) ist ein Bus-System zur synchronen, seriellen Datenübertragung zwischen einem Master und einem oder mehreren Slaves (theoretisch sind beliebig viele Slaves möglich). Die Übertragung funktioniert im Vollduplex, d.h. die Daten fließen in beide Richtungen gleichzeitig. Der Master erzeugt Takt- und Steuersignale und startet eine Datenübertragung indem er einen Slave auswählt. Jeder Slave wird vom Master über eine eigene Leitung (Slave Select) angesprochen und ist nur aktiv wenn er ausgewählt wurde. Die digitalen Drucksensoren der HME- und HCE-Serie nutzen einen internen ASIC zur Kalibrierung, Temperaturkompensation und Ausgabe eines fehlerkorrigierten digitalen Ausgangssignals. Bei der HCE-Serie steht zusätzlich ein analoges Ausgangssignal zur Verfügung. Die Reaktionszeit der Sensoren ist abhängig von der eingestellten Auflösung und beträgt bei 12 Bit typisch 0,5 ms. Die HME- und HCE-Sensoren sind für die SPIBus-Kommunikation konfiguriert. Serial Peripheral Interface (SPI) Der SPI-Bus besteht aus zwei Signal- und zwei Datenleitungen: · · · · Slave Select (SS) Signal Clock (SCK) Master Out - Slave In (MOSI) Master In - Slave Out (MISO) Alle Leitungen sind unidirektional. D / 11156 / D 1/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 2 BUS-AUFBAU 2.1 SCK (Signal Clock) 2.3 MOSI (Master Out - Slave In) Der Takt wird vom Master erzeugt und dient dazu, alle angeschlossenen Geräte zu synchronisieren. Auf der MOSI-Leitung überträgt der Master Daten zum Slave. 2.2 2.4 SS (Slave Select) Jeder Slave wird vom Master über eine eigene Slave-Select-Leitung angesprochen. Der Master wählt einen bestimmten Slave aus, indem er die entsprechende Slave-SelectLeitung auf Masse (LOW) zieht. Die mögliche Anzahl von Slaves innerhalb eines BusSystems ist nur durch die Anzahl der SlaveSelect-Anschlüsse am Master begrenzt. Master SCK MOSI MISO SS1 SS2 SS3 MISO (Master In - Slave Out) Auf der MISO-Leitung überträgt der Slave Daten zum Master. SCK MOSI Slave 1 MISO SS SCK MOSI Slave 2 MISO SS SCK MOSI Slave 3 MISO SS Bild 1: Beispiel eines SPI-Bus-Aufbaus mit einem Master und mehreren Slaves D / 11156 / D 2/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 3 SPI-BUS-PROTOKOLL 3.1 Datenübertragung Zu Beginn einer Datenübertragung wählt der Master einen bestimmten Slave aus, indem er die entsprechende Slave-Select-Leitung auf Masse (LOW) zieht. Daraufhin schreibt der Master seine Daten in ein Ausgaberegister und beginnt nach einer kurzen Verzögerungszeit mit dem Senden des Taktsignals (siehe 4.5 Zeitbedingungen). Der Datentransfer findet im Vollduplex über Schieberegister im Master und im Slave statt. Mit jedem Taktpuls schiebt der Master einen Wert auf der MOSI-Leitung zum Slave während der Slave gleichzeitig einen Wert auf der MISOLeitung zum Master überträgt (siehe Bild 2). Die Datenübertragung endet, sobald die SlaveSelect-Leitung wieder auf HIGH gesetzt wird. HINWEIS: Für die HME- und HCE-Drucksensoren entfällt die Notwendigkeit einer MOSILeitung, da keine Daten zum Sensor übertragen werden müssen. Daher macht es für einige Anwendungen Sinn, den MOSI-Eingang des Sensors nicht mit dem Master-Mikrocontroller zu verbinden sondern direkt über einen Pull-up-Widerstand auf ein permanentes HIGH-Niveau zu legen. (siehe Punkt 5, Anwenderschaltung). Master Slave SS 7 0 SS SCK SCK MOSI MOSI MISO MISO 7 0 Bild 2: Datenübertragung zwischen Master und Slave über Schieberegister D / 11156 / D 3/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 3.2 Betriebsart 3.2.1 CPOL (Clock Polarity) Das SPI-Bus-Protokoll kennt zwei Parameter zur Einstellung des Taktsignals (SCK): die Polarität (CPOL) und die Phase (CPHA). Daraus ergeben sich vier verschiedene Übertragungs-Modi, wie in Tabelle 1 dargestellt. Diese Einstellungen bestimmen bei welcher Flanke die Daten übernommen werden und zu welchem Zeitpunkt sie geändert werden dürfen. Für eine korrekte Datenübertragung ist es wichtig, dass diese Parameter in allen mit dem Bus verbundenen Geräten gleich eingestellt sind. SPI-Mode CPOL C PH A 0 0 0 1 0 1 2 1 0 3 1 1 Tabelle 1: CPOL bestimmt, ob das Taktsignals im Ruhezustand auf LOW-Pegel (CPOL=0) oder HIGH-Pegel (CPOL=1) liegt. 3.2.2 CPHA (Clock Phase) CPHA bestimmt, bei welcher Flanke des Taktsignals die Daten übertragen werden. CPHA=0 bedeutet, dass die Daten mit der ersten Flanke übernommen werden, CPHA=1, dass sie mit der zweiten Flanke übernommen werden. SPI-Übertragungs-Modi HINWEIS: Die digitalen HME- und HCEDrucksensoren mit SPI-Bus sind standardmäßig auf CPHA=0 and CPOL=0 programmiert. Generell ist die Einstellung aller vier Modi möglich. Für weitere Informationen stehen wir Ihnen gerne zur Verfügung. D / 11156 / D 4/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 3.3 Verlauf der Datenübertragung 3.3.1 CPHA=0 HINWEIS: Der in Bild 3 und 4 dargestellte Verlauf der Datenübertragung beschreibt die Theorie des SPI-Busses. Zu den Besonderheiten der HME- und HCEDrucksensoren beachten Sie bitte Punkt 4.5, Zeitbedingungen. Wird CPHA auf 0 gesetzt, werden die Daten mit der ersten Flanke des Taktsignals übernommen. Die Polarität CPOL bestimmt, ob es sich dabei um eine steigende oder fallende Flanke handelt. Bei CPOL=0 ist der Takt im Ruhezustand auf LOW-Pegel; die erste Flanke ist also eine steigende Flanke. Bei CPOL=1 ist der Takt im Ruhezustand auf HIGH-Pegel; die erste Flanke ist also eine fallende Flanke. Die Polarität des Taktes beeinflusst jedoch nicht den Zeitpunkt der Datenübernahme und damit auch nicht den Verlauf der Datenübertragung wie in Bild 3 dargestellt. SCK-Zyklus 1 2 3 4 5 6 7 8 SCK (CPOL=0) SCK (CPOL=1) MOSI MISO MSB MSB LSB LSB SS Datenübernahme Ende des Ruhezustands Beginn des Ruhezustands Bild 3: Beispiel einer 1 Byte SPI-Datenübertragung für CPHA=0 D / 11156 / D 5/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 3.3.2 CPHA=1 Wird CPHA auf 1 gesetzt, werden die Daten mit der zweiten Flanke des Taktsignals übernommen. Die Polarität CPOL bestimmt, ob es sich dabei um eine steigende oder fallende Flanke handelt. Bei CPOL=0 ist der Takt im Ruhezustand auf LOW-Pegel und steigt nach der ersten Flanke auf HIGH-Pegel; die zweite Flanke ist also eine fallende Flanke. Bei CPOL=1 ist der Takt im Ruhezustand auf HIGH-Pegel und fällt nach der ersten Flanke auf LOW-Pegel; die zweite Flanke ist also eine steigende Flanke. Die Polarität des Taktes beeinflusst jedoch nicht den Zeitpunkt der Datenübernahme und damit auch nicht den Verlauf der Datenübertragung wie in Bild 4 dargestellt. SCK-Zyklus 1 2 3 4 5 6 7 8 SCK (CPOL=0) SCK (CPOL=1) MOSI MSB LSB MISO MSB LSB SS Datenübernahme Ende des Ruhezustands Beginn des Ruhezustands Bild 4: Beispiel einer 1 Byte SPI-Datenübertragung für CPHA=1 D / 11156 / D 6/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 4 SPI-BUS DATENÜBERTRAGUNG MIT HME- UND HCE-DRUCKSENSOREN 4.1 Auslesen von Druckwerten HINWEIS 1: Die HME- und HCE-Drucksensoren sind für die Übertragung von 3 bzw. 2 zusammenhängenden Datenbytes ausgelegt. Zwischen den einzelnen Bytes darf die Slave-Select-Leitung nicht auf HIGH gesetzt werden, da es sonst zu einem Abbruch der Übertragung kommt. Um eine Datenübertragung zu beginnen, zieht der Master die Slave-Select-Leitung zum Drucksensor auf Masse (LOW). Der Druckwert wird als 15-Bit-Information in 3 Daten-Bytes übertragen (siehe Bild 5). Die digitalen Drucksensoren der HME- und HCE-Serie sind nicht für den Datenempfang ausgelegt. Es wird empfohlen auf der MOSI-Leitung nur HIGHPegel (=1) zu übertragen um den Sensor nicht zu stören (siehe auch Hinweis bei 3.1). Weil der Master zu Beginn evtl. doch Befehle zum Sensor schickt, werden die Druckwerte zur Sicherheit erst ab dem zweiten Daten-Byte übertragen und das erste Byte bleibt ohne Information (der Sensor überträgt typischerweise 0xFFh). Der eigentliche Druckwert in Byte 2 und 3 beginnt mit dem hochwertigsten Bit (MSB) zuerst. HINWEIS 2: Bei einer Taktfrequenz von 500 kHz dauert die Übertragung der ersten 3 Bytes ca. 50 µs. Die folgenden 2 ByteDruckwerte benötigen ca. 32 µs. Allerdings beträgt die interne Durchlaufzeit zur Berechnung und Ausgabe eines neuen Druckwerts z.B. beim HCE-Sensor bei einer Auflösung von 14 Bit 500 µs. Deshalb empfängt der Master bei einer kontinuierlichen Abfrage des Sensors mindestens 14 mal den selben Druckwert! Die Datenübertragung wird beendet, sobald der Master die Slave-Select-Leitung wieder auf HIGH-Pegel setzt. Bleibt die Slave-SelectLeitung nach dem dritten Byte unverändert auf LOW-Pegel, sendet der Sensor fortlaufend Druckwerte an den Master. Diese Druckwerte sind dann jeweils nur 2 Byte lang. 4.2 Auslesen von Temperaturwerten (optional) Optional kann der Sensor ab Werk für die Ausgabe von 15 Bit langen Temperaturwerten Daten-Byte 1 Für weitere Informationen stehen wir Ihnen gerne zur Verfügung. programmiert werden. Diese werden dann als Byte 4 und 5 nach dem Druckwert ausgegeben. Wird die Datenübertragung danach nicht beendet, liefert der Sensor fortlaufende 4 Byte lange kombinierte Druck- und Temperaturwerte. Daten-Byte 2 1 1 1 1 1 Daten-Byte 3 MOSI 1 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 Relevante Daten Bild 5: 3-Byte-Datenübertragung eines 15 Bit langen Druckwertes D / 11156 / D 7/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 4.3 Berechnung des Druckwerts aus dem Digitalwert Mit Hilfe der folgenden Formeln kann aus der digitalen Druckwert-Information der tatsächliche physikalische Druckwert berechnet werden: S= P= Out max − Out min Pmax − Pmin (1) Pcounts − Out min + Pmin S (2) Definitionen: S = Empfindlichkeit [counts/mbar] Outmax = Ausgabe bei max. Druck [counts] Outmin = Ausgabe bei min. Druck [counts] Pmax = Druckbereichs-Endwert [mbar] Pmin = Druckbereichs-Anfangswert [mbar] P = Druckmesswert [mbar] Pcounts = Digitaler Druckmesswert [counts] Als Berechnungsbeispiel dient der Drucksensor HCEM100DB... mit einem bidirektionalen Druckbereich von 0…±100 mbar. Für die folgenden Berechnungen werden die typischen Kalibrierwerte verwendet. Die individuellen Sensoren können hiervon geringfügig abweichen (die entsprechenden Toleranzen sind im HCE-Datenblatt angegeben). Für einen ausgegebenen digitalen Druckmesswert von z.B. Pcounts = 20608 counts dezimal berechnet sich der physikalische Druckmesswert nach Formel (2) zu: P= 20608 counts − 1638 counts + ( −100 mbar ) 131,07 counts / mbar P = 44,73 mbar 4.4 Auflösung Jeder Druck- und Temperaturwert wird als 15-Bit-Information übertragen. Die tatsächliche Auflösung des Messwerts ist jedoch abhängig von der Einstellung des internen A/D-Wandlers des Sensors und kann daher geringer sein. Die Auflösung kann sich außerdem durch interne Rechenvorgänge und Verluste bei der Abtastung des Signals (Fensterung) verschlechtern. Beim HCE-Drucksensor beträgt die interne Auflösung typischerweise 14 Bit, beim HME-Drucksensor typischerweise 12 Bit. Die erreichbare Auflösung der Temperaturmessung wird zusätzlich durch die Empfindlichkeit des Sensorelements beschränkt. Für weitere Informationen stehen wir Ihnen gerne zur Verfügung. Outmin (-100 mbar) = 0666 hex = 1638 dec Outmax (+100 mbar) = 6CCC hex = 27852 dec Die Empfindlichkeit des Sensors berechnet sich aus Formel (1) wie folgt: S= 27852 counts − 1638 counts 100 mbar − ( −100 mbar ) S = 131, 07 counts/mba r D / 11156 / D 8/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie Parameter Symbol Min. Typ. Max. Eingehender HIGH-Pegel 90 100 Eingehender LOW-Pegel 0 10 Ausgehender LOW-Pegel Unit % von Vs 10 Pull-Up-Widerstand Ω 500 Lastkapazität CMISO 400 Eingangskapazität CSPI_IN 10 SCK Taktfrequenz fSCK 100* MISO Halte-Zeit nach SCK-Flanke tSPI_HD_MISO ns MOSI Setup-Zeit vor SCK-Flanke tSPI_SU_MOSI 200 2/fCLK /SS Setup-Zeit vor SCK-Flanke tSPI_SU_SS 10 ns /SS Halte-Zeit nach SCK-Flanke tSPI_HD_SS 1/fCLK pF 640 kHz * empfohlen (siehe Hinweis Seite 10) Tabelle 2: Parameter und Zeitbedingungen für die SPI-Bus Kommunikation mit HME- und HCE-Drucksensoren 4.5 Zeitbedingungen t t SPI_SU_SS Für eine korrekte Datenübertragung muss der Drucksensor die Startbedingung (Slave-SelectLeitung geht auf LOW) erkennen, bevor der Master den ersten Taktpuls sendet. Daher ist vom Master eine Mindest-Verzögerungszeit tSPI_SU_SS vor dem ersten Taktpuls einzuhalten (siehe Tabelle 2 und Bild 6). Nach dem letzten Taktpuls der Datenübertragung muss außerdem eine Mindest-Verzögerungszeit tSPI_HD_SS eingehalten werden bevor der Master die Kommunikation beendet (Slave-Select-Leitung geht wieder auf HIGH). Die Zeitbedingungen werden vom Master überwacht und können unter anderem von folgenden Bedingungen beeinflusst werden: · der Betriebsart (SPI-Mode) · der Bus-Geschwindigkeit · der Anwenderschaltung, z.B. der Größe der Pull-Up-Widerstände · dem Platinenlayout, z.B. der kapazitiven Last und der Impedanz der Bus-Leitungen D / 11156 / D SPI_HD_SS t SPI_SU_MOSI t SCK (CPOL=0) SPI_HD_MISO MOSI MISO SS Bild 6: SPI-Bus-Zeitbedingungen Die HME- und HCE-Drucksensoren ändern ihre Daten entgegen dem in Bild 3, Seite 5 dargestellten theoretischen Verlauf bereits kurz nach der für die Datenübertragung gültigen steigenden Flanke (siehe Bild 6), wobei eine Mindesthaltezeit tSPI_HD_MISO eingehalten wird. Insbesondere bei langsamer BusGeschwindigkeit kann so der Eindruck entstehen, als würde die Übertragung nicht mit der steigenden, sondern mit der fallender Flanke (CPHA=1) stattfinden (vgl. 3.3.2, Bild 4). 9/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 4.6 Bei gleichzeitiger Nutzung der digitalen Schnittstelle und des analogen Spannungsausgangs sollten die betreffenden Leitungen so weit wie möglich voneinander getrennt liegen. Zusätzlich empfehlen sich Entstörkondensatoren von 220 nF zwischen Versorgungsspannung und Masse und 15 nF zwischen analogem Ausgang und Masse. Die Kondensatoren sollten so nah an den Pins des Sensors plaziert werden wie möglich. Übertragungsgeschwindigkeit Die maximal erlaubte Bus-Geschwindigkeit wird durch die interne Taktfrequenz des Sensors bestimmt, die temperatur- und fertigungsbedingten Schwankungen unterliegt. Unter Annahme der ungünstigsten Bedingungen beträgt die max. erlaubte SPI-Bus-Taktfrequenz daher 640 kHz für alle Standardsensoren der HME- und HCE-Serie. Sie kann in einer Sondereinstellung auf 730 kHz erhöht werden. 5 4.7 ANWENDERSCHALTUNG Elektromagnetische Störungen Alle Bus-Leitungen müssen über jeweils einen Pull-Up-Widerstand an die Versorgungsspannung angeschlossen werden (siehe Bild 7). Es werden 4,7 kΩ Widerstände empfohlen. Zusätzlich sollten in allen Bus-Leitungen Widerstände von max. 330 Ω in Reihe geschaltet werden. Die steilen Flanken der Signale die auf dem SPI-Bus übertragen werden, können elektromagnetische Störungen verursachen. Speziell bei sehr niedrigen Druckbereichen und bei sehr nahe aneinander liegenden Bus-Leitungen bzw. IC's, kann dies zu Störungen des von der SensorMessbrücke erzeugten analogen mV-Signals führen. HINWEIS: Zur Verhinderung elektromagnetischer Störungen wird eine Taktfrequenz von min. 100 kHz (max. 640 kHz) und Übertragungspausen von min. 500 µs zwischen zwei Druckwertübertragungen empfohlen. Dies ist vor allem für alle Niedrigstdruckversionen bis 25 mbar relevant. Für weitere Informationen stehen wir Ihnen gerne zur Verfügung. 4k7 4k7 4k7 4k7 +Vs MOSI 330 MOSI MISO 330 MISO SS 330 SS SCK 330 SCK Sensor Bild 7: SPI-Bus Anwenderschaltung für HME- und HCE-Drucksensoren D / 11156 / D 10/11 www.first-sensor.com www.sensortechnics.com SPI-Bus-Kommunikation mit digitalen Drucksensoren der HME- und HCE-Serie 6 BEISPIEL EINER SPI-BUS-PROGRAMMIERUNG 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 BEI PROBLEMEN 7.1 Sensor reagiert nicht · Prüfen Sie die Pegel der SCK- und SlaveSelect-Signale am Pin des Drucksensors. - Sind die Flanken scharf genug? - Sind die HIGH- und LOW-Pegel im spezifizierten Bereich (vgl. Tabelle 2)? · Prüfen Sie den analogen Ausgang des Drucksensors (nur beim HCE möglich). Reagiert dieser auf Druckschwankungen, so funktioniert der Sensor. D / 11156 / D 7.2 Sensor liefert instabile Werte · Prüfen Sie den verwendeten SPI-Mode. Die HME- und HCE-Drucksensoren verwenden standardmäßig CPHA=0 und CPOL=0 · Sind die Hinweise zur elektromagnetischen Einstrahlung unter Punkt 4.7 eingehalten? Für weitere Informationen stehen wir Ihnen gerne zur Verfügung: Tel. +49 (0)89 80083-0 [email protected] 11/11 www.first-sensor.com www.sensortechnics.com