Forum: Mikrocontroller und Digitale Elektronik I2C abstrakt


von Klaus W. (Firma: privat) (texmex)


Lesenswert?

Hallo!!

Ich experimentiere gerade ein wenig mit dem TWI Interface (Hardware TWI 
als Master, USI in diversen Slaves). Und ja, es funktioniert eigentlich 
alles :-).

Trotzdem mal ein paar grundsätzliche Überlegungen zum "Protokoll" und 
der Verwendung.

Kann man so sagen, dass I2C eigentlich nur die OSI Schicht 1 und wenn 
man so will von Layer 2 nur Media Access Control definiert?

Diverse (fertige) I2C Hardware (ich hab' mir bisher nur ein paar EEProms 
angeguckt) scheinen weitere Vereinbarungen vorauszusetzen, wie z.B. dass 
bei einer kontinuierlichen Byteübertragung das letzte Byte mit NACK 
"bestätigt" wird.

Das ist natürlich eine Möglichkeit eine vorher in der Länge nicht 
bekannte Datenmenge zu übertragen. Gefällt mir eigentlich nicht so, weil 
man keine Bestätigung hat ob das letzte Byte wirklich empfangen wurde. 
In meinem Fall ist die Menge der Daten immer im Voraus bekannt. Es 
dürfte eigentlich keine Standards verletzen die Verwendung des ACK Bits 
entsprechend anders zu implementieren?

Aber es stellt sich sowieso die Frage, in wie weit man davon ausgehen 
kann, dass auf einem I2C Bus der Empfänger das empfängt, was der Sender 
gesendet hat. Es braucht ja nur EMI bedingt mal ein Bit kippen und das 
würde nie bemerkt. Das könnte u.U. ja auch in der Adresse passieren. Das 
wäre in meiner Anwendung schon relativ unangenehm.
Ich habe mir damit beholfen jede Nachricht mit einer CRC Prüfsumme zu 
versehen, die auch die Adresse mit einschließt. Bei einem Fehler wird 
die Nachricht einfach verworfen. Das ist in meinem speziellen Fall nicht 
weiter tragisch.

Universell einsetzbar ist diese Strategie aber sicher nicht. Und um auf 
das erwähnte EEPROM zurückzukommen habe ich darauf ja sowieso keinen 
Einfluss. Um hier sicherzugehen müsste ich mindestens die geschriebenen 
Daten zurücklesen und vergleichen. Beim Lesen mindestens zweimal oder 
öfters und auch vergleichen.

Ist das nun etwas paranoid? Wie sollte man damit umgehen?

Konsequenter weise müsste man bei einer etwas komplexeren Kommunikation 
ein richtiges Protokoll aufsetzen, welches mindestens eine vollständige 
Sicherungsschicht zur Verfügung stellt. Denkt man sich da jeweils irgend 
was aus? Gibts da für I2C bewährte Methoden? Oder ist das alles 
Overkill?


viele Grüße,
Klaus

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Lies dir das mal durch.

MfG Spess

von Klaus W. (Firma: privat) (texmex)


Lesenswert?

> Lies dir das mal durch.

Hm, das sollte man wohl wirklich mal gelesen haben.

Beim Überfliegen habe ich zwar auch keine direkte Antwort auf meine 
Fragen entdecken können, aber ich werde das jetzt erst mal studieren....


Vielen Dank und viele Grüße!
Klaus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.