Two Wire Interface
Worum geht's?
[Bearbeiten]Angaben zum TWI Bus in diesem Kapitel beziehen sich auf die Spezifikation [UM10204].
Die Spezifikation teilt die Arbeitsweise in verschiedene Modi ein.
Im Standard Mode können Daten mit einer Geschwindigkeit von bis zu 100 kbit/s übertragen werden. Im Fast Mode können Daten mit einer Geschwindigkeit von bis zu 400 kbit/s übertragen werden. Neben dem Standard Mode gibt es weitere Modi, die höhere Geschwindigkeiten erlauben. Im Folgenden werden sie jedoch keine Beachtung finden.
Für jede Geschwindigkeitsklasse sind obere und unteren Schranken für die elektrischen Eigenschaften festgelegt, die ein Gerät erfüllen muss. Eine Übersicht findet sich am Ende das Abschnitts.
Elektrische Eigenschaften
[Bearbeiten]Der TWI Bus besteht aus einer Datenleitung (SDA) und einer Taktleitung (SCL). Alle Geräte sind mit Open-Collector Ausgang an diese Leitungen angeschlossen. Eine Leitung liegt damit nur dann auf high, wenn kein Gerät die Leitung auf low zieht.
Die Schwelle für low und high liegt bei 30% bzw. 70% der Versorgungsspannung.
Beim Umschalten zwischen low und high müssen die folgenden Anforderungen erfüllt werden.
- die Anstiegszeit darf maximal tr betragen
- die Fallzeit darf maxmial tf betragen
Start Condition
[Bearbeiten]Im Ruhezustand liegen beide Leitungen SDA und SCL auf high
Bevor Daten übertragen werden können, muss sich das Gerät, das die Datenübertragung initiieren möchte, mit einem speziellen Signals zum Master machen. Das Signal trägt auch den Namen Start Condition. Um eine Start Condition zu erzeugen muss das Gerät die SDA Leitung von high auf low ziehen, während die SCL Leitung high ist.
Folgendes Timing muss eingehalten werden.
- nachdem die SDA Leitung auf low gezogen wurde, muss die SCL mindestens für die hold Zeit tHD;STA weiterhin auf high stehen
Folgendes Timing muss bei einer repeated Start Condition zusätzlich eingehalten werden.
- bevor die SDA Leitung auf low gezogen wird, müssen SCL und SDA mindestens für die set-up Zeit tSU;STA auf high stehen
Stop Condition
[Bearbeiten]Um seine Rolle als Master aufzugeben, muss das Gerät erneut ein spezielles Signal erzeugen. Das Signal trägt auch den Namen Stop Condition. Um eine Stop Condition zu erzeugen, muss das Gerät die SDA Leitung von low auf high gehen lassen, während die SCL Leitung high ist.
Folgendes Timing muss eingehalten werden.
- bevor SDA auf high gesetzt wird, müssen SCL und SDA für die set-up Zeit tSU;STOP auf high bzw. low stehen
- nachdem SDA auf high gesetzt wurde, muss die Zeit tBUF verstreichen, bevor erneut eine Start Condition erzeugt werden kann
Datenübertragung
[Bearbeiten]Bei der Übertragung von Daten darf sich der Zustand der SDA Leitung nur ändern, wenn die SCL auf low ist. Die SDA Leitung ist bei der Datenübertragung immer stabil, während SCL auf high ist.
Start- und Stop Condition können auf diese Weise also nicht mit Signalen verwechselt werden, die für die Datenübertragung verwendet werden.
Daten werden mit einem Takt übertragen, den der Master auf der SCL Leitung erzeugt.
Der Sender legt dabei Wert des zu versendenden Bits auf die SDA Leitung während die SCL Leitung auf low ist. Falls der Sender nicht der Master ist kann er die SCL Leitung dabei so lange auf low halten, bis er fertig ist. Der Master muss in diesem Fall so lange warten, bis der Slave die SCL Leitung wieder los lässt, bevor er die Daten auf der SDA Leitung übernimmt.
Folgendes Timing muss eingehalten werden.
- SCL muss mindestens für die Zeit tLOW auf low stehen
- nachdem SCL auf low gezogen wurde, muss SDA für die hold Zeit tHD;DAT stabil bleiben, bevor SDA auf den zu versendenden Wert gesetzt werden kann
- nachdem der neue Wert auf die SDA Leitung gelegt wurde, muss die set-up Zeit tSU;DAT verstreichen, bevor SCL wieder auf high gesetzt wird
- SCL muss mindestens für die Zeit tHIGH auf high stehen
ACK / NACK
[Bearbeiten]Im 9-ten Puls lässt der Sender lässt die SDA Leitung los. Der Empfänger kann sie auf low ziehen um ACK zu signalisieren. Sie bleibt dann für die nächste high Phase der SCL Leitung auf low. Wenn der Empfönger die Leitung nicht auf low zieht signalisiert er NACK.
low | ACK | Daten wurden erfolgreich empfangen, weitere Daten werden gewünscht |
high | NACK | Daten wurden nicht erfolgreich empfangen / keine weiteren Daten gewünscht |
Timing
[Bearbeiten]Die Zeiten, die im Standard Mode und im Fast Mode eingehalten werden müssen finden sich in folgender Tabelle.
Symbol | Parameter | Standard Mode | Fast Mode | ||
---|---|---|---|---|---|
Min | Max | Min | Max | ||
fSCL | SCL Frequenz | 0 kHz | 100 kHz | 0 kHz | 400 kHz |
tHD;STA | hold time für START condition | 4.0 µs | - | 0.6 µs | - |
tLOW | low Periode des SCL Signals | 4.7 µs | - | 1.3 µs | - |
tHIGH | high Periode des SCL Signals | 4.0 µs | - | 0.6 µs | - |
tSU;STA | set-up time für repeated START condition | 4.7 µs | 0.6 µs | - | |
tHD;DAT | hold time für data ?? | 0 µs | - | 0 µs | - |
tSU;DAT | data set-up time | 250 ns | - | 100 ns | - |
tr | rise time für SDA und SCL | - | 1000 ns | 20 ns | 300 ns |
tf | fall time für SDA und SCL | - | 300 ns | 20 x (VDD/5.5V) | 300 ns |
tSU;STO | set-up time für STOP condition | 4.0 µs | - | 0.6 µs | - |
tBUF | free time zwischen STOP und START | 4.7 µs | - | 1.3 µs | - |
tVD;DAT | data valid time | - | 3.45 µs | - | 0.9 µs |
tVD_ACK | data valid acknowledge time | - | 3.45 µs | - | 0.9 µs |
Fußnoten
[Bearbeiten]