13.07.2015 Aufrufe

SPI-Bus-Kommunikation mit HCE-Sensor - Sensortechnics

SPI-Bus-Kommunikation mit HCE-Sensor - Sensortechnics

SPI-Bus-Kommunikation mit HCE-Sensor - Sensortechnics

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie1 EINFÜHRUNG1.1 Digitale DrucksensorenDie digitalen Drucksensoren der HME- und<strong>HCE</strong>-Serie nutzen einen internen ASIC zurKalibrierung, Temperaturkompensation undAusgabe eines fehlerkorrigierten digitalenAusgangssignals. Bei der <strong>HCE</strong>-Serie stehtzusätzlich ein analoges Ausgangssignal zurVerfügung. Die Reaktionszeit der <strong>Sensor</strong>en istabhängig von der eingestellten Auflösung undbeträgt bei 12 Bit typisch 0,5 ms.Die HME- und <strong>HCE</strong>-<strong>Sensor</strong>en sind für die <strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> konfiguriert.1.2 Serial Peripheral Interface (<strong>SPI</strong>)Das Serial Peripheral Interface (<strong>SPI</strong>) ist ein<strong>Bus</strong>-System zur synchronen, seriellenDatenübertragung zwischen einem Master undeinem oder mehreren Slaves (theoretisch sindbeliebig viele Slaves möglich). Die Übertragungfunktioniert im Vollduplex, d.h. die Daten fließenin beide Richtungen gleichzeitig. Der Mastererzeugt Takt- und Steuersignale und starteteine Datenübertragung indem er einen Slaveauswählt. Jeder Slave wird vom Master übereine eigene Leitung (Slave Select)angesprochen und ist nur aktiv wenn erausgewählt wurde.Der <strong>SPI</strong>-<strong>Bus</strong> besteht aus zwei Signal- und zweiDatenleitungen:· Slave Select (SS)· Signal Clock (SCK)· Master Out - Slave In (MOSI)· Master In - Slave Out (MISO)Alle Leitungen sind unidirektional.D / 11156 / D1/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie2 BUS-AUFBAU2.1 SCK (Signal Clock)Der Takt wird vom Master erzeugt und dientdazu, alle angeschlossenen Geräte zusynchronisieren.2.2 SS (Slave Select)Jeder Slave wird vom Master über eine eigeneSlave-Select-Leitung angesprochen. DerMaster wählt einen bestimmten Slave aus,indem er die entsprechende Slave-Select-Leitung auf Masse (LOW) zieht. Die möglicheAnzahl von Slaves innerhalb eines <strong>Bus</strong>-Systems ist nur durch die Anzahl der Slave-Select-Anschlüsse am Master begrenzt.2.3 MOSI (Master Out - Slave In)Auf der MOSI-Leitung überträgt der MasterDaten zum Slave.2.4 MISO (Master In - Slave Out)Auf der MISO-Leitung überträgt der SlaveDaten zum Master.MasterSCKMOSIMISOSS1SS2SS3SCKMOSIMISOSSSlave 1SCKMOSIMISOSSSlave 2SCKMOSIMISOSlave 3SSBild 1:Beispiel eines <strong>SPI</strong>-<strong>Bus</strong>-Aufbaus <strong>mit</strong> einem Master und mehreren SlavesD / 11156 / D2/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie3 <strong>SPI</strong>-BUS-PROTOKOLL3.1 DatenübertragungZu Beginn einer Datenübertragung wählt derMaster einen bestimmten Slave aus, indem erdie entsprechende Slave-Select-Leitung aufMasse (LOW) zieht. Daraufhin schreibt derMaster seine Daten in ein Ausgaberegister undbeginnt nach einer kurzen Verzögerungszeit <strong>mit</strong>dem Senden des Taktsignals (siehe 4.5Zeitbedingungen).Der Datentransfer findet im Vollduplex überSchieberegister im Master und im Slave statt.Mit jedem Taktpuls schiebt der Master einenWert auf der MOSI-Leitung zum Slave währendder Slave gleichzeitig einen Wert auf der MISO-Leitung zum Master überträgt (siehe Bild 2). DieDatenübertragung endet, sobald die Slave-Select-Leitung wieder auf HIGH gesetzt wird.HINWEIS:Für die HME- und <strong>HCE</strong>-Drucksensorenentfällt die Notwendigkeit einer MOSI-Leitung, da keine Daten zum <strong>Sensor</strong>übertragen werden müssen. Dahermacht es für einige Anwendungen Sinn,den MOSI-Eingang des <strong>Sensor</strong>s nicht<strong>mit</strong> dem Master-Mikrocontroller zuverbinden sondern direkt über einenPull-up-Widerstand auf einpermanentes HIGH-Niveau zu legen.(siehe Punkt 5, Anwenderschaltung).MasterSSSSSlaveSCKSCKMOSIMOSIMISOMISO7 0 7 0Bild 2:Datenübertragung zwischen Master und Slave über SchieberegisterD / 11156 / D3/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie3.3 Verlauf der Datenübertragung3.3.1 CPHA=0Wird CPHA auf 0 gesetzt, werden die Daten <strong>mit</strong>der ersten Flanke des Taktsignalsübernommen. Die Polarität CPOL bestimmt, obes sich dabei um eine steigende oder fallendeFlanke handelt. Bei CPOL=0 ist der Takt imRuhezustand auf LOW-Pegel; die erste Flankeist also eine steigende Flanke. Bei CPOL=1 istder Takt im Ruhezustand auf HIGH-Pegel; dieerste Flanke ist also eine fallende Flanke.HINWEIS:Der in Bild 3 und 4 dargestellte Verlaufder Datenübertragung beschreibt dieTheorie des <strong>SPI</strong>-<strong>Bus</strong>ses. Zu denBesonderheiten der HME- und <strong>HCE</strong>-Drucksensoren beachten Sie bittePunkt 4.5, Zeitbedingungen.Die Polarität des Taktes beeinflusst jedoch nichtden Zeitpunkt der Datenübernahme und da<strong>mit</strong>auch nicht den Verlauf der Datenübertragungwie in Bild 3 dargestellt.SCK-Zyklus 1 2 3 4 5 6 7 8SCK(CPOL=0)SCK(CPOL=1)MOSIMSBLSBMISOMSBLSBSSDatenübernahmeEnde desRuhezustandsBeginn desRuhezustandsBild 3:Beispiel einer 1 Byte <strong>SPI</strong>-Datenübertragung für CPHA=0D / 11156 / D5/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie3.3.2 CPHA=1Wird CPHA auf 1 gesetzt, werden die Daten <strong>mit</strong>der zweiten Flanke des Taktsignalsübernommen. Die Polarität CPOL bestimmt, obes sich dabei um eine steigende oder fallendeFlanke handelt. Bei CPOL=0 ist der Takt imRuhezustand auf LOW-Pegel und steigt nachder ersten Flanke auf HIGH-Pegel; die zweiteFlanke ist also eine fallende Flanke. BeiCPOL=1 ist der Takt im Ruhezustand aufHIGH-Pegel und fällt nach der ersten Flankeauf LOW-Pegel; die zweite Flanke ist also einesteigende Flanke.Die Polarität des Taktes beeinflusst jedoch nichtden Zeitpunkt der Datenübernahme und da<strong>mit</strong>auch nicht den Verlauf der Datenübertragungwie in Bild 4 dargestellt.SCK-Zyklus 1 2 3 4 5 6 7 8SCK(CPOL=0)SCK(CPOL=1)MOSIMSBLSBMISOMSBLSBSSDatenübernahmeEnde desRuhezustandsBeginn desRuhezustandsBild 4:Beispiel einer 1 Byte <strong>SPI</strong>-Datenübertragung für CPHA=1D / 11156 / D6/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie4 <strong>SPI</strong>-BUS DATENÜBERTRAGUNG MIT HME- UND <strong>HCE</strong>-DRUCKSENSOREN4.1 Auslesen von DruckwertenUm eine Datenübertragung zu beginnen, ziehtder Master die Slave-Select-Leitung zumDrucksensor auf Masse (LOW). Der Druckwertwird als 15-Bit-Information in 3 Daten-Bytesübertragen (siehe Bild 5). Die digitalenDrucksensoren der HME- und <strong>HCE</strong>-Serie sindnicht für den Datenempfang ausgelegt. Es wirdempfohlen auf der MOSI-Leitung nur HIGH-Pegel (=1) zu übertragen um den <strong>Sensor</strong> nichtzu stören (siehe auch Hinweis bei 3.1). Weil derMaster zu Beginn evtl. doch Befehle zum<strong>Sensor</strong> schickt, werden die Druckwerte zurSicherheit erst ab dem zweiten Daten-Byteübertragen und das erste Byte bleibt ohneInformation (der <strong>Sensor</strong> überträgttypischerweise 0xFFh). Der eigentlicheDruckwert in Byte 2 und 3 beginnt <strong>mit</strong> demhochwertigsten Bit (MSB) zuerst.Die Datenübertragung wird beendet, sobald derMaster die Slave-Select-Leitung wieder aufHIGH-Pegel setzt. Bleibt die Slave-Select-Leitung nach dem dritten Byte unverändert aufLOW-Pegel, sendet der <strong>Sensor</strong> fortlaufendDruckwerte an den Master. Diese Druckwertesind dann jeweils nur 2 Byte lang.4.2 Auslesen von Temperaturwerten (optional)Optional kann der <strong>Sensor</strong> ab Werk für dieAusgabe von 15 Bit langen TemperaturwertenHINWEIS 1:Die HME- und <strong>HCE</strong>-Drucksensoren sindfür die Übertragung von 3 bzw. 2zusammenhängenden Datenbytesausgelegt. Zwischen den einzelnenBytes darf die Slave-Select-Leitung nichtauf HIGH gesetzt werden, da es sonst zueinem Abbruch der Übertragung kommt.HINWEIS 2:Bei einer Taktfrequenz von 500 kHzdauert die Übertragung der ersten 3Bytes ca. 50 µs. Die folgenden 2 Byte-Druckwerte benötigen ca. 32 µs.Allerdings beträgt die interneDurchlaufzeit zur Berechnung undAusgabe eines neuen Druckwerts z.B.beim <strong>HCE</strong>-<strong>Sensor</strong> bei einer Auflösungvon 14 Bit 500 µs. Deshalb empfängtder Master bei einer kontinuierlichenAbfrage des <strong>Sensor</strong>s mindestens 14 malden selben Druckwert!Für weitere Informationen stehen wirIhnen gerne zur Verfügung.programmiert werden. Diese werden dann alsByte 4 und 5 nach dem Druckwert ausgegeben.Wird die Datenübertragung danach nichtbeendet, liefert der <strong>Sensor</strong> fortlaufende 4 Bytelange kombinierte Druck- und Temperaturwerte.MOSIMISODaten-Byte 1 Daten-Byte 2 Daten-Byte 31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1X X X X X X X X X P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0Relevante DatenBild 5:3-Byte-Datenübertragung eines 15 Bit langen DruckwertesD / 11156 / D7/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie4.3 Berechnung des Druckwerts aus demDigitalwertMit Hilfe der folgenden Formeln kann aus derdigitalen Druckwert-Information der tatsächlichephysikalische Druckwert berechnet werden:Outmax− OutminS =P − P(1)maxminP − OutP +Scounts min= Pmin(2)Für einen ausgegebenen digitalenDruckmesswert von z.B.P counts= 20608 counts dezimalberechnet sich der physikalischeDruckmesswert nach Formel (2) zu:20608 counts −1638 countsP =+ ( −100mbar)131,07counts / mbarP = 44,73mbarDefinitionen:S = Empfindlichkeit [counts/mbar]Out max= Ausgabe bei max. Druck [counts]Out min= Ausgabe bei min. Druck [counts]P max= Druckbereichs-Endwert [mbar]P min= Druckbereichs-Anfangswert [mbar]P = Druckmesswert [mbar]= Digitaler Druckmesswert [counts]P countsAls Berechnungsbeispiel dient der Drucksensor<strong>HCE</strong>M100DB... <strong>mit</strong> einem bidirektionalenDruckbereich von 0…±100 mbar. Für diefolgenden Berechnungen werden die typischenKalibrierwerte verwendet. Die individuellen<strong>Sensor</strong>en können hiervon geringfügigabweichen (die entsprechenden Toleranzensind im <strong>HCE</strong>-Datenblatt angegeben).4.4 AuflösungJeder Druck- und Temperaturwert wird als15-Bit-Information übertragen. Die tatsächlicheAuflösung des Messwerts ist jedoch abhängigvon der Einstellung des internen A/D-Wandlersdes <strong>Sensor</strong>s und kann daher geringer sein. DieAuflösung kann sich außerdem durch interneRechenvorgänge und Verluste bei derAbtastung des Signals (Fensterung)verschlechtern. Beim <strong>HCE</strong>-Drucksensor beträgtdie interne Auflösung typischerweise 14 Bit,beim HME-Drucksensor typischerweise 12 Bit.Die erreichbare Auflösung der Temperaturmessungwird zusätzlich durch die Empfindlichkeit des<strong>Sensor</strong>elements beschränkt. Für weitereInformationen stehen wir Ihnen gerne zurVerfügung.Out min(-100 mbar) = 0666 hex = 1638 decOut max(+100 mbar) = 6CCC hex = 27852 decDie Empfindlichkeit des <strong>Sensor</strong>s berechnet sichaus Formel (1) wie folgt:27852counts −1638 countsS =100mbar − ( −100mbar)S = 131,07 counts/mbarD / 11156 / D8/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-SerieParameterS ymbolM in.T yp.Max.EingehenderHIGH-Pegel90100EingehenderLOW-Pegel0 10AusgehenderLOW-Pegel10Unit% von VsPull-Up-Widerstand500ΩLastkapazitätC MISO400EingangskapazitätC <strong>SPI</strong>_IN10pFSCK TaktfrequenzfS CK100*640kHzMISO Halte-Zeit nach SCK-Flanket<strong>SPI</strong>_HD_MISO200nsMOSISetup-Zeit vor SCK-Flanket 2/f<strong>SPI</strong>_SU_MOSICLK/ SS Setup-Zeit vor SCK-Flanket<strong>SPI</strong>_SU_SS10ns/ SS Halte-Zeit nach SCK-Flanket<strong>SPI</strong>_HD_SS1/fCLK* empfohlen (siehe Hinweis Seite 10)Tabelle 2: Parameter und Zeitbedingungen für die <strong>SPI</strong>-<strong>Bus</strong> <strong>Kommunikation</strong> <strong>mit</strong> HME- und <strong>HCE</strong>-Drucksensoren4.5 ZeitbedingungenFür eine korrekte Datenübertragung muss derDrucksensor die Startbedingung (Slave-Select-Leitung geht auf LOW) erkennen, bevor derMaster den ersten Taktpuls sendet. Daher istvom Master eine Mindest-Verzögerungszeitt <strong>SPI</strong>_SU_SSvor dem ersten Taktpuls einzuhalten(siehe Tabelle 2 und Bild 6). Nach dem letztenTaktpuls der Datenübertragung muss außerdemeine Mindest-Verzögerungszeit t <strong>SPI</strong>_HD_SSeingehalten werden bevor der Master die<strong>Kommunikation</strong> beendet (Slave-Select-Leitunggeht wieder auf HIGH).SCK(CPOL=0)MOSIMISOSSt<strong>SPI</strong>_SU_SSt<strong>SPI</strong>_SU_MOSIt<strong>SPI</strong>_HD_MISOt<strong>SPI</strong>_HD_SSDie Zeitbedingungen werden vom Masterüberwacht und können unter anderem vonfolgenden Bedingungen beeinflusst werden:· der Betriebsart (<strong>SPI</strong>-Mode)· der <strong>Bus</strong>-Geschwindigkeit· der Anwenderschaltung, z.B. der Größe derPull-Up-Widerstände· dem Platinenlayout, z.B. der kapazitivenLast und der Impedanz der <strong>Bus</strong>-LeitungenD / 11156 / DBild 6:<strong>SPI</strong>-<strong>Bus</strong>-ZeitbedingungenDie HME- und <strong>HCE</strong>-Drucksensoren ändern ihreDaten entgegen dem in Bild 3, Seite 5dargestellten theoretischen Verlauf bereits kurznach der für die Datenübertragung gültigensteigenden Flanke (siehe Bild 6), wobei eineMindesthaltezeit t <strong>SPI</strong>_HD_MISOeingehalten wird.Insbesondere bei langsamer <strong>Bus</strong>-Geschwindigkeit kann so der Eindruckentstehen, als würde die Übertragung nicht <strong>mit</strong>der steigenden, sondern <strong>mit</strong> der fallenderFlanke (CPAH=1) stattfinden (vgl. 3.3.2, Bild 4).9/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie4.6 ÜbertragungsgeschwindigkeitDie maximal erlaubte <strong>Bus</strong>-Geschwindigkeit wirddurch die interne Taktfrequenz des <strong>Sensor</strong>sbestimmt, die temperatur- und fertigungsbedingtenSchwankungen unterliegt. UnterAnnahme der ungünstigsten Bedingungenbeträgt die max. erlaubte <strong>SPI</strong>-<strong>Bus</strong>-Taktfrequenzdaher 640 kHz für alle Standardsensoren derHME- und <strong>HCE</strong>-Serie. Sie kann in einerSondereinstellung auf 730 kHz erhöht werden.4.7 Elektromagnetische StörungenDie steilen Flanken der Signale die auf dem<strong>SPI</strong>-<strong>Bus</strong> übertragen werden, können elektromagnetischeStörungen verursachen. Speziellbei sehr niedrigen Druckbereichen und bei sehrnahe aneinander liegenden <strong>Bus</strong>-Leitungen bzw.IC's, kann dies zu Störungen des von der <strong>Sensor</strong>-Messbrücke erzeugten analogen mV-Signals führen.Bei gleichzeitiger Nutzung der digitalenSchnittstelle und des analogen Spannungsausgangssollten die betreffenden Leitungen soweit wie möglich voneinander getrennt liegen.Zusätzlich empfehlen sich Entstörkondensatorenvon 220 nF zwischen Versorgungsspannungund Masse und 15 nF zwischen analogemAusgang und Masse. Die Kondensatorensollten so nah an den Pins des <strong>Sensor</strong>s plaziertwerden wie möglich.5 ANWENDERSCHALTUNGAlle <strong>Bus</strong>-Leitungen müssen über jeweils einenPull-Up-Widerstand an die Versorgungsspannungangeschlossen werden (siehe Bild 7).Es werden 4,7 kΩ Widerstände empfohlen.Zusätzlich sollten in allen <strong>Bus</strong>-LeitungenWiderstände von max. 330 Ω in Reihegeschaltet werden.HINWEIS:Zur Verhinderung elektromagnetischerStörungen wird eine Taktfrequenz vonmin. 100 kHz (max. 640 kHz) undÜbertragungspausen von min. 500 µszwischen zwei Druckwertübertragungenempfohlen. Dies ist vor allem für alleNiedrigstdruckversionen bis 25 mbarrelevant. Für weitere Informationenstehen wir Ihnen gerne zur Verfügung.+V s4k74k74k74k7MOSI330MOSI<strong>Sensor</strong>MISO330MISOSS330SSSCK330SCKBild 7:<strong>SPI</strong>-<strong>Bus</strong> Anwenderschaltung für HME- und <strong>HCE</strong>-DrucksensorenD / 11156 / D10/11www.first-sensor.comwww.sensortechnics.com


<strong>SPI</strong>-<strong>Bus</strong>-<strong>Kommunikation</strong> <strong>mit</strong> digitalen Drucksensorender HME- und <strong>HCE</strong>-Serie6 BEI<strong>SPI</strong>EL EINER <strong>SPI</strong>-BUS-PROGRAMMIERUNGbyte 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 (<strong>SPI</strong> in idle state)pin_ss = 1;// Set pin to outputset_inout_mode(pin_ss, PIN_OUT);// Set <strong>SPI</strong> unit to <strong>SPI</strong> master mode, clock speed 100 kHz and <strong>SPI</strong> mode 0 (CPHA = 0 & CPOL = 0)configure<strong>SPI</strong> (<strong>SPI</strong>_MASTER | CLK_SPEED_100KHZ | <strong>SPI</strong>_MODE_0);// Set /SS Pin low (Start communication)pin_ss = 0;// Transfer one byte over <strong>SPI</strong> bus (send 0xFF, write received data to dont_care (discard first byte))<strong>SPI</strong>_transfer (0xFF, &dont_care);// Transfer one byte over <strong>SPI</strong> bus (send 0xFF, write received data to byte_msb)<strong>SPI</strong>_transfer (0xFF, &byte_msb);// Transfer one byte over <strong>SPI</strong> bus (send 0xFF, write received data to byte_lsb)<strong>SPI</strong>_transfer (0xFF, &byte_lsb);// Set /SS pin high (End communication)pin_ss = 1;// Put both values togetherpressure = ((int16)byte_msb

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!