Hallo krujtzschoff
Ich habe Dein Bild mal anders eingefügt, weil es nicht zu sehen war.
Da hat sich der Zeichner aber ein bisschen mit der Bezeichnung vertan, denn der Slave manipuliert nie die Clockleitung. Was er wohl zeigen wollte war, dass der Slave die Daten bzw. das Bit mit der fallenden Clock Flanke übernimmt.
Der Herr Shannon sagt in seinem Abtasttheorem "nur", dass ein bandbreitenbegrenztes Signal mit mindestens dem doppelten seiner höchsten Frenquenz abgetastet werden muss (>2*Fmax), damit man es aus den Samples vollkommen wiederherstellen kann.
Das hat hier nichts mit unserem Problem zu tun.
Das Protokoll beinhaltet leider keine Parität oder Redundanz zur Fehlererkennung bzw. Fehlerkorrektur. Das muss auf höherer Protokollebene stattfinden.
Die Frequenz der Clockleitung ist beim Design schon bekannt. Daher muss der Slave mit seinen Setup and Hold Zeiten darauf angepasst sein.
Wenn wir beispielsweise einen 100 kHz Bus haben (standard), dann hat der Slave 1/2T = 5us Zeit neue Daten bereitzustellen.
Der Störabstand ist auch recht gross wenn der Bus mit 12V betreiben wird.
Ab 8,4V wird eine logisch 1 erkannt; unter 3,6 eine logische 0.
Bei jeder I2C Übertragung wird jedes Byte acknowledge'd. Das passiert im 9. Clockzyklus.
Der Sender gibt die Datenleitung SDA frei (logische 1 liegt an) und der Empfänger zieht sie für 1 Clockperiode (SCL) runter (logische 0).
Das findest Du auch in deiner Quelle bestätigt, 1 Bilder weiter oben "Datenübertragung eines Frames"
Da scheint sich Opel aber noch etwas zum I2C Protokoll hinzugedichtet zu haben. Nämlich die MRQ Leitung (wahrscheinlich MasterReQuest). Das könnte was mit dem enablen von Outputbuffern zu tun haben.
Gruss, Tux
PS: Tschuldigung wenn ich euch verwirrt habe.