I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 1 EINFÜHRUNG 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 I²C- oder SPI-BusKommunikation konfiguriert. HINWEIS: Dieser Anwendungshinweis bezieht sich ausschließlich auf die I²C-BusKommunikation mit den Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie. Der I²C-Bus ist ein einfacher, serieller 8-BitDatenbus. Er eignet sich für die Kommunikation zwischen verschiedenen Schaltkreisen (daher der Name Inter-IC bzw. I2C) über kurze Distanzen, z.B. zur Verbindung eines Mikrocontrollers mit verschiedenen Peripheriebausteinen auf einer Platine. Jeder Busteilnehmer besitzt eine eigene Adresse, über die er eindeutig angesprochen werden kann. Der I²C-Bus benötigt nur zwei bidirektionale Leitungen: eine Taktleitung (Serial Clock Line, SCL) und eine Datenleitung (Serial Data Line, SDA). Die Datenübertragungsrate ist frei wählbar und beträgt max. 400 kbit/s. 2 I2C-BUS-PROTOKOLL 2.1 Allgemeine Merkmale Der I2C-Bus ist als Master-Slave-Bus konzipiert. Zwei bidirektionale Leitungen, die Taktleitung (SCL) und die Datenleitung (SDA), übertragen Informationen zwischen den einzelnen IC’s (siehe Bild 1). Jeder Schaltkreis mit einer I²CSchnittstelle kann an den Bus angeschlossen werden. SCL und SDA müssen über entsprechende Pull-Up-Widerstände mit einer positiven Versorgungsspannung verbunden sein (siehe Abschnitt 4, Busverdrahtung). Im Ruhezustand befinden sich beide Leitungen auf HIGH-Pegel. Sie können nur durch die angeschlossenen IC’s auf LOW-Pegel (Masse) gezogen werden. SCL SDA Master Slave Slave Slave Bild 1: Beispiel eines I²C-Bus-Aufbaus D / 11155 / C 1/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie SDA Master-Transmitter Slave-Receiver SCL SDA Master-Receiver Slave-Transmitter SCL Bild 2: Master-Slave-Konzept des I²C-Busses 2.2 Master-Slave Konzept 2.3 Gültige Datenübertragung Der I²C-Bus nutzt ein einfaches Master-SlaveKonzept. Der Master initialisiert eine Datenübertragung (START-Bedingung), generiert den Takt (SCL) und beendet die Übertragung (STOP-Bedingung). Geräte, die vom Master adressiert werden, bezeichnet man als Slaves. Daten werden mit dem HIGH-Pegel des Taktes als gültig erkannt (siehe Bild 3). Dabei ist wichtig, dass die Daten auf SDA während dieser Phase stabil sind. Liegt die Datenleitung auf HIGH, wird eine “1” übertragen, liegt sie auf LOW, eine “0”. Der Wert der Datenleitung darf nur geändert werden, während der Takt auf LOW liegt. Master und Slaves können als Transmitter und Receiver arbeiten (siehe Bild 2). Der Transmitter sendet Daten und der Receiver empfängt sie. Adressiert ein Master einen Slave und sendet danach selber Daten an diesen, spricht man von einem Master-Transmitter und Slave-Receiver. Empfängt der Master hingegen Daten vom Slave, spricht man von einem Master-Receiver und Slave-Transmitter. HINWEIS: Sensortechnics’ digitale Drucksensoren arbeiten ausschließlich als SlaveTransmitter, d.h. es ist nur möglich, Druckwerte vom Sensor auszulesen. SDA SCL Daten Daten gültig dürfen wechseln Bild 3: Gültige I²C-Bus-Datenübertragung D / 11155 / C 2/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 2.4 START (S) und STOP (P) Bedingungen 2.5 Datenformat Jede Übertragungssequenz beginnt mit einer START-Bedingung, die vom Master ausgeben wird. Durch die START-Bedingung werden alle angeschlossenen IC’s informiert, dass ein Datentransfer bevorsteht und der Bus gilt von jetzt an als belegt. Zur Beendigung der Übertragung sendet der Master eine STOPBedingung. Hierdurch signalisiert er allen Teilnehmern, dass keine weiteren Daten übertragen werden sollen und der Bus wieder frei ist. Die Daten werden als Bytes im 8-Bit-Format übertragen. Dabei wird das höchstwertige Bit (MSB=Most Significant Bit) zuerst übermittelt (siehe Bild 5). MSB D u al 0 Dez imal LS B 1 1 0 1 1 0 1 128 64 32 16 8 4 2 1 Bild 5: I²C-Bus-Datenformat 2.6 Adressierung und Datenrichtung Die START-Bedingung wird durch eine fallende Flanke auf der SDA-Leitung erzeugt, während sich SCL auf HIGH befindet. Die STOPBedingung wiederum ist definiert als steigende Flanke auf SDA, während SCL HIGH ist (siehe Bild 4). SDA Jeder Busteilnehmer besitzt eine eigene, feste Adresse, über die er eindeutig auf dem Bus identifiziert werden kann. Unmittelbar nach der START-Bedingung sendet der Master mit dem ersten Byte die Adresse eines Slaves seiner Wahl, mit dem er kommunizieren will. Die Adresse ist 7 Bit lang, gefolgt von Bit 8, dem Datenrichtungs-Bit (R/W-Bit). R/W=0 (WRITE) bedeutet, dass der Master Daten an den Slave senden möchte und somit zum MasterTransmitter wird. R/W=1 (READ) bedeutet, dass der Master Daten vom Slave auslesen möchte und die Funktion des Master-Receivers übernimmt. SCL MSB START Bedingung 7-Bit-Adresse b7 Bild 4: START- und STOP-Bedingung des I²C-Busses D / 11155 / C LS B STOP Bedingung b6 b5 b4 b3 R/W b2 b1 b0 Bild 6: I²C-Bus-Adress-Byte 3/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie Nachdem der Master die Adresse übermittelt hat, vergleichen alle an den Bus angeschlossenen Slaves diese Adresse mit ihrer eigenen. Stimmt sie überein, sendet der angesprochene Slave eine Bestätigung (siehe 2.7) und meldet sich so bereit für die anschließende Datenübertragung. 2.7 Bestätigung (ACK oder A) Die 7-Bit-Adressierung erlaubt 27=128 verschiedene Adressen auf dem gleichen Bus. Da einige Adressen für Sonderzwecke reserviert sind, ist die Anzahl in der Praxis jedoch geringer. Die Zahl der Busteilnehmer wird weiterhin durch die zulässige Gesamtkapazität aller angeschlossenen Geräte und deren Zuleitungen beschränkt (CSDA=400 pF). Der Master muss für die Bestätigung einen extra Taktpuls generieren. Der Sender (Transmitter) setzt nach dem übertragenen Byte die Datenleitung auf HIGH-Pegel. Zur Bestätigung zieht der Empfänger (Receiver) die Datenleitung auf LOW. Wichtig: Diese Bestätigung muss so erfolgen, dass sich die SDA-Leitung während des gesamten Taktpulses, d.h. vom Beginn der ansteigenden Flanke bis zum Ende der fallenden Flanke, auf einem stabilen LOW-Pegel befindet (siehe Bild 7). In der Regel besteht die Adresse eines I²CBausteins aus einem festen Teil und einem variablen Teil. Der feste Teil umfasst typischerweise die vier höchstwertigen Bits und kategorisiert einen bestimmten Typ von Baustein. Die drei niederwertigsten Bits sind frei programmierbar und erlauben so bis zu acht (23) Bausteine des gleichen Typs auf dem selben Bus. Jedes Byte, das über den Bus gesendet wird muss vom Empfänger bestätigt werden. Die Bestätigung bedeutet, dass die Daten korrekt empfangen wurden und der Datentransfer fortgesetzt werden kann. Möchte der Receiver kein weiteres Byte mehr empfangen, lässt er SDA auf HIGH und sendet so eine Nicht-Bestätigung (NACK oder A). Der Master kann nun die Datenübertragung mit einer STOP-Bedingung beenden. HINWEIS: Alle I²C-Bus-Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie haben eine feste allgemeine Adresse (0x1111000b). Zusätzlich kann für jeden Sensor eine individuelle Adresse nach Festlegung des Kunden programmiert werden, wobei bis zu 127 Adress-Möglichkeiten bestehen. Der Sensor kann dann über beide Adressen angesprochen werden. D / 11155 / C 4/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie Daten vom Transmitter Daten vom Receiver SCL 1 2-8 START Bedingung 9 ACK Bild 7: Bestätigung (ACK) empfangener Daten 2.8 Vollständiger Datentransfer Bild 8 zeigt das Beispiel eines vollständigen I2C-Bus-Datentransfers. Nach der STARTBedingung sendet der Master die Adresse eines von ihm ausgewählten Slaves. Das Datenrichtungs-Bit (R/W) bestimmt, ob es sich um einen READ- oder WRITE-Transfer handelt. Der angesprochene Slave bestätigt (ACK) den korrekten Erhalt des ersten Daten-Bytes. Nun kann eine unbegrenzte Anzahl weiterer Daten-Bytes übertragen werden, jeweils gefolgt von einer Bestätigung durch den Empfänger. Die Datenübertragung wird immer mit Hilfe einer STOP-Bedingung durch den Master beendet. Wenn der Master danach weiter über den Bus kommunizieren will, muss er eine erneute START-Bedingung senden und eine neue Datenübertragung beginnen. SDA 1-7 8 Adresse R/W 9 1-8 9 1-8 9 ACK Daten ACK Daten NACK l SCL START Bedingung STOP Bedingung Bild 8: Beispiel einer vollständigen I²C-Bus-Datenübertragung D / 11155 / C 5/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 3 DATENTRANSFER MIT HDI-, HCLA-, HCA- UND SSI-DRUCKSENSOREN Daten-Byte 1 Daten-Byte 2 X P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 Sensortechnics’ digitale HDI-, HCLA-, HCA- und SSI-Drucksensoren arbeiten ausschließlich als Slave-Transmitter, d.h. sie reagieren nur auf READ-Anfragen eines Masters zum Auslesen von Druckwerten. Relevante Daten Bild 10: Druckwert als 15-Bit-Information HINWEIS: Bei einer SCL-Taktfrequenz von 400 kHz dauert die Übertragung von 2 Bytes ca. 40 µs. Die interne Sensor-Durchlaufzeit zur Berechnung und Ausgabe eines neuen Druckwerts beträgt bei einer Auflösung von 12 Bit jedoch 250 µs. Deshalb empfängt der Master bei einer kontinuierlichen Abfrage des Sensors mit 400 kHz bis zu siebenmal den selben Druckwert! Für weitere Informationen wenden Sie sich bitte an Sensortechnics. 3.1 Auslesen von Druckwerten Um einen Auslesevorgang zu starten, sendet der Master nach der START-Bedingung die entsprechende Sensoradresse (entweder 0x1111000bin oder die kundenspezifisch festgelegte Adresse) gefolgt von einem Lesebefehl (R/W=1) (siehe Bild 9). Nach der Bestätigung des Datenempfangs (A) durch den Sensor wird der Master zum Empfänger und der Drucksensor zum Sender. Der Sensor sendet nun 2 Daten-Bytes mit dem aktuell gemessenen Druckwert als 15-Bit-Information (siehe Bild 10). Der Master muss nach dem ersten Byte eine Bestätigung senden und kann den Auslesevorgang nach dem zweiten Byte durch eine STOP-Bedingung beenden. Er hat jedoch genauso die Möglichkeit, kontinuierlich weitere Druckwerte auszulesen. Hierzu muss der Master nach dem letzten übertragenen Byte eine weitere Bestätigung senden. Der Drucksensor fährt dann mit dem Senden aktueller Werte fort. 1 S Sensor-Adresse R/W A Daten-Byte 1 A 3.2 Auslesen von Temperaturwerten (optional) Optional bieten die Sensoren die Möglichkeit der Ausgabe eines zusätzlichen 15-BitTemperaturwerts. Dieser wird als drittes und viertes Byte nach den beiden Druck-Bytes übertragen. Bestätigt der Master das vierte Byte, fährt der Sensor mit dem Senden weiterer kombinierter Druck- und Temperaturwerte fort, bis die Übertragung mit einem STOP-Befehl beendet wird. Daten-Byte 2 Auslesen des ersten Druckwerts erzeugt vom Master erzeugt vom Sensor S = START-Bedingung A = Bestätigung A = Nicht-Bestätigung P = STOP-Bedingung A n Daten-Bytes A P Auslesen von n Druckwerten Daten-Byte 1 = Hochwertiges Byte (MSB zuerst) Daten-Byte 2 = Niedrigwertiges Byte (LSB zuletzt) Bild 9: I²C-Bus-Auslesevorgang von digitalen Druckwerten D / 11155 / C 6/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 3.3 Berechnung des Druckwerts aus dem Digitalwert Outmin = 0666 counts hex = 1638 counts dec Outmax = 6CCC counts hex = 27852 counts dec Mit Hilfe der folgenden Formeln kann aus der digitalen Druckwert-Information der tatsächliche physikalische Druckwert berechnet werden: Die Empfindlichkeit des Sensors berechnet sich aus Formel (1) wie folgt: 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] S= S= Out max − Out min Pmax − Pmin (1) P= Pcounts − Out min + Pmin S (2) Als Berechnungsbeispiel dient der Drucksensor HCLA0050…U mit einem unidirektionalen Druckbereich von 0...50 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 HCLA-Datenblatt angegeben). D / 11155 / C 27852 counts − 1638 counts = 524,28 counts/mba r 50 mbar − 0 mbar Für einen digitalen Druckmesswert von Pcounts = 0508 counts hex = 20608 counts dec berechnet sich der physikalische Druckmesswert nach Formel (2) zu: P= 20608 counts − 1638 counts + 0 mbar = 36,18 mbar 524,28 counts / mbar 3.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 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. In der Standardeinstellung beträgt die interne Auflösung 12 Bit, was zu einer tatsächlichen Auflösung des Messwerts von 11 bis 12 Bit führt. 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. 7/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 3.5 Zeitbedingungen Parameter Symbol Min. tBUF 1.3 tHD;STA 0.8 tLOW 1.3 tHIGH 0.6 Setup-Zeit für wiederholte START-Bedingung tSU;STA 1 Halte-Zeit für Daten tHD;DAT 0 Setup-Zeit für Daten tSU;DAT 0.2 Zeit, die der Bus zwischen STOP- und STARTBedingung frei sein muss Halte-Zeit für START-Bedingung bis zum ersten Taktimpuls LOW-Periode des Taktsignals HIGH-Periode des Taktsignals Typ. Max. µs Anstiegszeit für SCL und SDA tR 0.3 Abfallzeit für SCL und SDA tF 0.3 Setup-Zeit für STOP-Bedingung tSU;STO Einheit 0.6 Tabelle 1: Zeitbedingungen für die I²C-Bus-Kommunikation mit Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie tSU;DAT tHD;DAT tSU;STA tHD;STA tR tSU;STO tBUF tHD;STA tF SCL SDA tHIGH tLOW SCL SDA Bild 11: I²C-Bus-Zeitverläufe D / 11155 / C 8/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-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 C SD A 400 Eingangskapazität CI2C_IN 10 SCL Taktfrequenz fSCL 100* pF 400 kHz * empfohlen (siehe Hinweis auf dieser Seite unten) Tabelle 2: Parameter für die I²C-Bus-Kommunikation mit Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 3.6 Übertragungsgeschwindigkeit Die maximal erlaubte KommunikationsGeschwindigkeit wird durch die intern eingestellte Taktfrequenz der HDI-, HCLA-, HCA- und SSI-Sensoren bestimmt. Diese beträgt in der Standardeinstellung 400 kHz und entspricht damit dem Fast-Mode der I²C-BusSpezifikation. Bei gleichzeitiger Nutzung der digitalen I²C-BusSignale und des analogen Spannungsausgangs sollten die betreffenden Leitungen so weit wie möglich voneinander getrennt werden. Zusätzlich empfehlen sich Entstörkondensatoren von 220 nF zwischen Versorgungsspannung und Masse und 15 nF zwischen analogem Ausgang und Masse. 4 ANWENDERSCHALTUNG 3.7 Elektromagnetische Störungen Die steilen Flanken der SCL- und SDA-Signale können elektromagnetische Störungen verursachen. Speziell bei Niedrigstdrucksensoren und bei sehr nahe aneinander liegenden Bus-Leitungen bzw. IC's, kann dies zu Störungen des von der Sensor-Messbrücke erzeugten analogen mV-Signals führen. HINWEIS: Zur Verhinderung elektromagnetischer Störungen wird eine Taktfrequenz von min. 100 kHz (max. 400 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. Beide Bus-Leitungen, SCL und SDA, müssen über jeweils einen Pull-Up-Widerstand (RP) an eine 5 V Versorgungsspannung angeschlossen sein (siehe Bild 12). Es werden 1,5 kΩ Widerstände empfohlen. Zusätzlich sollten in beiden Bus-Leitungen Widerstände von max. 240 Ω in Reihe geschaltetet werden (RS). +VS R P SCL SDA R P R S Sensor R S Bild 12: I²C-Bus-Anwenderschaltung für Sensortechnics’ digitale Drucksensoren D / 11155 / C 9/10 www.sensortechnics.com I2C-Bus-Kommunikation mit Sensortechnics’ digitalen Drucksensoren der HDI-, HCLA-, HCA- und SSI-Serie 5 BEISPIEL EINER I²C-BUS-PROGRAMMIERUNG byte byte_msb, byte_lsb; int16 pressure; // 8bit values // 16bit value // Set I2C unit to I2C master mode, clock speed 100 kHz and 7 bit addressing configureI2C (I2C_MASTER | CLK_SPEED_100KHZ | ADDRESSING_7BIT); // Set the target address of the sensor (0x78 = 120dec) I2C_set_target(0x78); // Send start condition for reading from sensor (slave) I2C_send_start_read(); // Read first (MSB) data byte and answer with ACK (continue communication) I2C_read (&byte_msb, SEND_ACK); // Read second (LSB) data byte and answer with NACK (end communication) I2C_read (&byte_lsb, SEND_NACK); // Send Stop condition I2C_send_stop(); // Put both values together pressure = ((int16)byte_msb << 8) | byte_lsb; D / 11155 / C 10/10 www.sensortechnics.com