I2C-Bus-Kommunikation mit Sensortechnics` digitalen

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