I²C-Themenklausur - Lösungen

I²C-Themenklausur (Aufgaben) · Startseite · Kap. 4

Vollständige Lösungen mit Rechenweg, Begründung und Kapitelverweis. Bewertungshinweis: Teilpunkte für erkennbaren Lösungsweg auch bei Zahlenfehler. Alle Werte gehen ohne Taschenrechner auf.


Aufgabe 1 - I²C-Grundlagen (15 P) Kap. 4

Teilrichtig angekreuztBegründung
1.1a [x], b [x], c [ ]c falsch: I²C überträgt MSB zuerst (nur UART-Nutzdaten LSB zuerst).
1.2a [x], b [ ], c [x]b falsch: ohne Pull-Ups bleibt die Leitung floating, kein sicherer High-Pegel.
1.3a [x], b [x], c [ ]c falsch: der aktive Master gibt den Takt pro Übertragung vor, kein zentraler Taktgeber.
1.4a [x], b [x], c [ ]c falsch: I²C ist synchron (SCL), braucht kein Startbit; das ist die asynchrone Übertragung (RS-232).
1.5a [x], b [ ], c [x]b falsch: der AT91 hat keine I²C/TWI-Einheit; der SAM3X hat 2.

([x] = ankreuzen, [ ] = nicht ankreuzen. Pro Teilaufgabe 3 P nur bei vollständig korrekter Bewertung aller drei Aussagen.)


Aufgabe 2 - Start/Stop, Gültigkeit & ACK/NACK (12 P) Kap. 4

2.1 (3 P): Start = fallende SDA-Flanke, während SCL = High. Stop = steigende SDA-Flanke, während SCL = High. Im Ruhezustand sind beide Leitungen High.

2.2 (3 P): Gültigkeitsregel: Während der Datenübertragung darf SDA sich nur ändern, wenn SCL = Low ist; bei SCL = High muss SDA stabil bleiben (der Empfänger tastet dann ab). Start/Stop sind die einzige Ausnahme (SDA-Flanke bei SCL = High). Weil eine solche Flanke sonst nie auftritt, ist sie eindeutig als Rahmensignal erkennbar.

2.3 (2 P): ACK = Low (0), NACK = High (1). Beim Schreibzugriff erzeugt der Slave (Empfänger) das ACK.

2.4 (2 P): Das R/W-Bit ist das LSB des ersten Bytes (direkt nach den 7 Adressbits): 0 = Write (Master → Slave), 1 = Read (Slave → Master).

2.5 (2 P): I²C überträgt die Datenbits MSB zuerst. Beim UART laufen die Nutzdaten dagegen LSB zuerst - das ist der klassische Verwechslungspunkt.


Aufgabe 3 - Adressierung & Adressbyte (11 P) Kap. 4

Gegeben: 7-Bit-Adresse 0x4B = 100 1011.

3.1 Lesezugriff (3 P): Adresse × 2 + R/W(1) = 1001011 + 1 = 1001 0111 = 0x97.

3.2 Schreibzugriff (3 P): Adresse × 2 + R/W(0) = 1001011 + 0 = 1001 0110 = 0x96.

3.3 (2 P): 0x4B = 0100 1011. Als erstes Byte interpretiert stehen die oberen 7 Bit für die Adresse (010 0101 = 0x25) und das LSB = 1 für Read. Das Byte adressiert also Slave 0x25 (Lesen), nicht Slave 0x4B (Schreiben). Fehler: Das R/W-Bit wurde nicht angehängt (Adresse nicht × 2 gerechnet).

3.4 (3 P): Laut Skript bis zu 127 Slaves. 7 Bit ergeben 2⁷ = 128 Adressen; zieht man die allgemeine Ruf-Adresse 0x00 (General Call) ab, bleiben 127.

Hinweis (Abweichung zur Praxis): In der realen I²C-Spezifikation sind 16 Adressen reserviert, sodass praktisch nur 112 nutzbar sind. Für die Klausur zählt die Skript-Angabe 127.


Aufgabe 4 - Protokoll- & Timing-Analyse (16 P) Kap. 4

4.1 (4 P): (a) Die ersten 7 Bit sind die Adresse: 1001010 = 0x4A. (b) Das 8. Bit 1 ist das R/W-Bit → Lesezugriff (Slave → Master). (c) Die vom Slave getriebene 0 ist das ACK - Slave 0x4A ist vorhanden und bestätigt. Falle: Das 8. Bit gehört nicht zur Adresse (die ist nur 7 Bit breit), sondern ist R/W.

4.2 (6 P): 0x2C = 010 1100, Write → R/W = 0. 0xA5 = 1010 0101.

SchrittEreignisBits / Pegel (SDA bei SCL = High)
1STARTSDA fällt, während SCL = High
2Adressbits (6..0)0 1 0 1 1 0 0
3R/W-Bit0 (Write)
4ACK (vom Slave)0
5Datenbits (7..0)1 0 1 0 0 1 0 1
6ACK (vom Slave)0
7STOPSDA steigt, während SCL = High

(Erstes Byte auf dem Bus = Adresse+R/W = 0101 1000 = 0x58.)

4.3 (4 P): Jedes Byte belegt 9 SCL-Takte (8 Datenbits + 1 ACK). 3 Bytes (1 Adresse + 2 Daten) → 3 × 9 = 27 Taktimpulse. Bei 100 kBit/s ist 1 Bit = 10 µs27 × 10 µs = 270 µs (Start/Stop kommen als Zustandswechsel noch geringfügig dazu). Falle: 9 Takte pro Byte, nicht 8 - das ACK wird gern vergessen.

4.4 (2 P): Standard 100 kBit/s · Fast 400 kBit/s · Fast Mode Plus 1 MBit/s · High Speed 3,4 MBit/s · Ultra Fast 5 MBit/s.


Aufgabe 5 - Arbitrierung (Multi-Master) (10 P) Kap. 4

5.1 (2 P): Ein Master darf bei Bus-Leerlauf (SCL und SDA = High) eine Start-Bedingung erzeugen. Ein zentraler Taktgeber ist nicht nötig, weil der aktive Master den Takt selbst erzeugt (pro Übertragung).

5.2 (4 P): 0x62 = 1100010, 0x66 = 1100110. Vergleich MSB zuerst:

Bit6543210
A (0x62)1100010
B (0x66)1100110

Erste Abweichung an Bit 2 (5. übertragenes Bit): A sendet 0, B sendet 1. A zieht SDA auf Low; B liest 0, obwohl es 1 sendet → B verliert. Master A (0x62) gewinnt (die niedrigere Adresse setzt sich durch).

5.3 (4 P): Adresse und R/W sind identisch (0x62, Write) → hier fällt noch keine Entscheidung. Die Arbitrierung läuft bitweise in die Daten weiter: 0x30 = 0011 0000, 0x20 = 0010 0000. Erste Abweichung am Datenbit 4: A = 1, B = 0 → B zieht Low, A verliert. Master B (Datenbyte 0x20) gewinnt. Aussage: Arbitrierung endet nicht mit der Adresse, sondern vergleicht jedes Bit weiter, bis sich die Sender unterscheiden; der Verlierer zieht sich zurück, ohne die Übertragung zu stören.


Aufgabe 6 - TWI am SAM3X (10 P) Kap. 4

6.1 (3 P): (a) Slave-Adresse + Richtung → TWI_MMR (DADR, MREAD). (b) Busgeschwindigkeit → TWI_CWGR (CKDIV/CLDIV/CHDIV). (c) zu sendendes Byte → TWI_THR. MREAD = 1 bedeutet Lesen.

6.2 (5 P): Reihenfolge: C → E → B → D → A (Start + Adresse/Write senden → auf TXRDY warten → Byte in THR schreiben → beim letzten Byte STOP im CR → auf TXCOMP warten).

6.3 (2 P): TXRDY = das Holding-Register (THR) ist frei, das nächste Byte darf geschrieben werden. TXCOMP = die gesamte Übertragung inklusive Stop-Bedingung ist abgeschlossen.


Aufgabe 7 - Debugging & Praxis (6 P) Kap. 4

7.1 (3 P): Zwei genügen: (1) Unter dieser Adresse antwortet kein Slave (falsche DADR, Zahlendreher, R/W-Bit vergessen). (2) Slave ist nicht versorgt/getaktet oder falsch verdrahtet. (3) Pull-Ups fehlen, sodass kein sauberes Low/High zustande kommt. NACK heißt zunächst nur "keine Reaktion".

7.2 (3 P): Gesunder Leerlauf: beide Leitungen High (idle high durch Pull-Ups). Dauerhaft Low deutet auf (zwei genügen): Kurzschluss nach Masse, einen hängenden Teilnehmer, der die Leitung festhält, oder fehlende/fehlerhafte Pull-Ups zusammen mit einem aktiv ziehenden Ausgang. Folge: Eine Start-Bedingung (SDA-Flanke bei SCL = High) ist gar nicht erzeugbar → Bus blockiert.


Zusatzfrage Z - Clock Stretching (0 P, außerhalb des Kursstoffs)

Nicht klausurrelevant. Antwort nur zur Einordnung; das Thema kommt im Kursmaterial nicht vor.

Z.1: Beim Clock Stretching hält ein Slave die SCL-Leitung aktiv auf Low, um den Master anzuhalten, bis er (der Slave) für das nächste Bit/Byte bereit ist. Da SCL open-drain ist, kann der langsamere Teilnehmer den Takt so verlängern. Merke: Im Skript nicht behandelt - in einer regulären Kursklausur nicht zu erwarten.


Punkteschlüssel (Orientierung, 80 P)

Punkte≥ 66≥ 58≥ 48≥ 40≥ 32< 32
Note1,x2,x3,x4,04,x knapp5,0

I²C-Themenklausur (Aufgaben) · Startseite