SPI-Bus-Kommunikation mit Sensortechnics` digitalen

SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der HCE-Serie
1
EINFÜHRUNG
1.1
Digitale Drucksensoren
Sensortechnics’ digitale Drucksensoren nutzen
einen internen ASIC zur digitalen Kalibrierung,
Temperaturkompensation und Ausgabe eines
digitalen Ausgangssignals mit bis zu 15 Bit
Auflösung. Zusätzlich steht ein analoges
Ausgangssignal zur Verfügung. Die
Reaktionszeit des Sensors ist abhängig von der
eingestellten Auflösung und beträgt bei 12 Bit
typisch 0,5 ms.
Sensortechnics’ digitale Drucksensoren sind
entweder für die SPI- oder I²C-BusKommunikation konfiguriert.
HINWEIS:
Dieser Anwendungshinweis bezieht
sich ausschließlich auf die SPI-BusKommunikation und behandelt speziell
Sensortechnics Drucksensoren der
HCE-Serie.
1.2
Serial Peripheral Interface (SPI)
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.
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 / C
1/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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 / C
2/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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 Sensortechnics’ 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 / C
3/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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:
Sensortechnics’ digitale SPI-BusDrucksensoren sind standardmäßig
auf CPHA = 0 and CPOL = 0
programmiert. Generell ist die
Einstellung aller vier Modi möglich.
Für weitere Informationen wenden Sie
sich bitte an Sensortechnics.
D / 11156 / C
4/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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 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 / C
5/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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 / C
6/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der HCE-Serie
4
SPI-BUS DATENÜBERTRAGUNG MIT HCE-DRUCKSENSOREN
4.1
Auslesen von Druckwerten
HINWEIS 1:
Sensortechnics’ 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). Sensortechnics’
digitale Drucksensoren der 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 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 wenden Sie
sich bitte an Sensortechnics.
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 / C
7/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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. Die
erreichbare Auflösung der Temperaturmessung
wird zusätzlich durch die Empfindlichkeit des
Sensorelements beschränkt. Für weitere
Informationen wenden Sie sich bitte an
Sensortechnics.
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 / C
8/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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 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 / C
SPI_HD_SS
t
SPI_SU_MOSI
t
SCK
(CPOL=0)
SPI_HD_MISO
MOSI
MISO
SS
Bild 6: SPI-Bus-Zeitbedingungen
Sensortechnics’ 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 (CPAH=1) stattfinden (vgl. 3.3.2, Bild 4).
9/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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
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
wenden Sie sich bitte an Sensortechnics.
4k7
4k7
4k7
4k7
+Vs
MOSI
330
MOSI
MISO
330
MISO
SS
330
SS
SCK
330
SCK
HCE
Bild 7: SPI-Bus Anwenderschaltung für Sensortechnics’ HCE-Drucksensoren
D / 11156 / C
10/11
www.sensortechnics.com
SPI-Bus-Kommunikation mit Sensortechnics’
digitalen Drucksensoren der 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. Reagiert dieser auf
Druckschwankungen, so funktioniert der
Sensor.
D / 11156 / C
7.2
Sensor liefert instabile Werte
· Prüfen Sie den verwendeten SPI-Mode.
Sensortechnics’ HCE-Drucksensoren
verwenden standardmäßig
CPAH=0 und CPOL=0
· Sind die Hinweise zur elektromagnetischen
Einstrahlung unter Punkt 4.7 eingehalten?
Für weitere Informationen wenden Sie
sich bitte an Sensortechnics:
Tel. +49 (0)89 80083-0
[email protected]
11/11
www.sensortechnics.com