Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

4.1.1.
„S" – Start-Bedingung
Wie im I²C-Grundlagen-Teil der Bauanleitung beschrieben, wird jeder Schreib-/Lesezugriff auf dem I²C-Bus
durch die sogenannte Start-Bedingung eingeleitet. Dies geschieht beim USB-I2C-Interface durch das ASCII-
Zeichen S. Der Startbedingung muss die Adresse des angesprochenen I²C-Gerätes folgen, die gleichzeitig
das Read/Write-Bit (LSB) enthält. Die Adresse wird Hexadezimal mit 2 Zeichen (also z. B. 41 oder 40) ange-
geben.
Beispiele:
Schreibe das Daten-Byte 0xFF in das Gerät mit der Geräte-Adresse 1000 000X (binär).
Bildung der Adresse: 0100 000X + Schreib-Bit (0) = 0100 0000 (binär) = 40 (hexadezimal)
[Start] [Write-Adr:0x40] [Daten:0xFF] [Stopp]
S 40 FF P
Gleichwertig sind auch die folgenden Schreibweisen in Groß/Kleinschreibung und mit/ohne Leerzeichen:
S40FFP
S 40 ff p
s40 ff P
Sollen mehrere Daten in denselben Slave geschrieben werden, geht das beispielsweise so:
[Start] [Write-Adr:0x40] [Daten:0xFF] [Stopp] [Start] [Write-Adr:0x40] [Daten:0x0F] [Stopp] [Start] [Write-Adr:0x40] [Daten:0xF0] [Stopp]
S40 FF P S40 0F P S40 F0 P
Hinweis 1:
Im Auslieferungszustand gibt das USB-I2C-Interface bei Schreibzugriffen (wie in den Beispielen) keine Ant-
wort zum PC zurück. Möchte man aber wissen, ob die Schreibanweisungen erfolgreich waren, kann man
sich die Acknowledge/Not-Acknowledge Antworten (ACK/NACK) vom Slave zum PC weiterleiten lassen.
Dies geschieht mit Hilfe des Konfigurationsbefehls Y31 (ACK=K, NACK=N, siehe Kapitel 4.2.5).
Hinweis 2:
Strenggenommen muss das P nicht am Ende jeder Übertragung verwendet werden. Ohne die Stopp-
Bedingung wird der I²C-Bus nicht wieder freigegeben, was nicht immer nötig ist. Für den Abschluss einer
Übertragung wird das P aber empfohlen.
Möglich ist es aber auch, die Daten ohne eingefügte Stopp-Bedingungen zum Slave zu schreiben.
Dafür dient die Repeated-Start-Bedingung (ein erneutes S, ohne dass zuvor ein P kam):
[I²C-Start] [Write-Adr:0x40] [Daten:0xFF] [Start] [Write-Adr:0x40] [Daten:0x0F] [Start] [Write-Adr:0x40] [Daten:0xF0] [Stopp]
S40 FF S40 0F S40 F0 P
Wenn alle Daten in denselben Slave geschrieben werden, können auch mehrere Datenbytes direkt nach-
einander eingegeben werden. Dies verkürzt die Anzahl der zu übertragenen Zeichen:
[Start] [Write-Adr:0x40] [Daten:0xFF, 0x0F, 0xF0, 0x00, 0x10, 0x46, 0x3A] [Stopp]
S40 FF 0F F0 00 10 46 3A P
Oder noch kürzer ohne Leerzeichen:
S40FF0FF00010463AP
Auch eine Lese-Anweisung wird entsprechend den obigen Beispielen mit dem Start-Befehl eingeleitet. In
diesem Fall folgt der Geräte-Adresse jedoch die Anzahl der vom Slave zu lesenden Datenbytes. Die ausge-
lesenen Datenbytes werden vom USB-I2C-Interface direkt zum PC weitergeleitet. Die Bytes werden dabei in
Hexadezimalschreibweise in Form von 2 ASCII-Zeichen ausgegeben (z. B. wird der Dezimalwert 254 als FE
ausgegeben).
Lese 11 Bytes vom Gerät mit der Geräte-Adresse 0100 000X (binär).
[Bildung der Adresse: 0100 000X + Lese-Bit (1) = 0100 0001 (binär) = 41 (hexadezimal)]
[Start] [Read-Adr:0x41] [Byteanzahl] [Stop]
S41 0A P
Die gelesenen Daten könnten z.B. so aussehen (abhängig vom I²C-Gerät und dessen Zustand):
FF FF FF FF FF FF FF FF FF FF FF
Eine weitere Möglichkeit Daten zu schreiben und zu lesen, bieten die Befehle W und R (siehe Kapitel
4.3./4.4.).
12

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis