mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C sichere Übertragung


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte 2 Geräte (beides mit PIC Prozessoren,hardware I2c) per 
I2c verbinden. Wichtig ist dabei, dass Daten( Befehle ) sicher auf der 
anderen Seite ankommen. Die Geräte sind etwa 5 Meter entfert voneinader. 
Wenn durch Störungen auf der Leitung einzelne Bits gekippt werden, 
würden die Daten nicht korrekt ankommen. Nun die Frage: Kann I2c so 
etwas selbst erkennen, und in dem Falle einen retransmit anfordern, oder 
müsste dort ein richtiges Protokoll her? Wenn ja, gibt es dort simple 
Protokolle?


Vielen Dank,

Christoph

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für Deine Anwendung ist I2C für eine so grosse Entfernung denkbar 
ungeeignet.
Dieser Bus ist nur für kurze Strecken ausgelegt, und ausser einem 
"Acknowledge" findet kein Handshake oder gar eine Fehlererkennung statt.

Es gibt zwar auch I2C-Bustreiber (ich glaube von NXP), aber die lösen 
höchstens eine Deiner Anforderungen.

Für eine solche Übertragung von Daten über ca. 5m wäre eine serielle 
Schnittstelle auf beiden Seiten sinnvoll (entweder mit RS-232- oder, 
wenn es
schnell und störsicher sein soll, mit RS-422-Treibern). Für die Fehler- 
Korrektur und ein gesichertes Protokoll musst Du dann allerdings selbst 
sorgen.
Kleiner Vorteil: man kann seriell auch Full Duplex übertragen (also in 
beide Richtungen).

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ein Protokoll ist doch zwischen zwei Mikrokontrollern auch über I2C zu 
realisieren.
Man kann ja eine CRC der Daten mitsenden und der Empfänger wird dies 
dann testen und als Antwort etwas wie OK, Wiederhole, bin beschäftigt 
etc. zurücksenden.

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bleibt weiter das Problem, dass I2C nicht für solche Distanzen gemacht 
ist.
Vielleicht hat der TE ja nochmal die geforderte Geschwindigkeit parat?

BTW dürfte Uart auch etwas leichter zu programmieren sein, vor allem 
wenn Daten hin und hergehen (das müssen sie, wenn 
Fehlerkorrektur/Retransmission gefordert ist)

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Horst Hahn schrieb:
> Hallo,
>
> ein Protokoll ist doch zwischen zwei Mikrokontrollern auch über I2C zu
> realisieren.
> Man kann ja eine CRC der Daten mitsenden und der Empfänger wird dies
> dann testen und als Antwort etwas wie OK, Wiederhole, bin beschäftigt
> etc. zurücksenden.

Nur ist I²C für solche Strecken nicht konstruiert und wird 
wahrscheinlich sehr viele Fehler produzieren, was selbst mit einem 
Protokoll nicht sonderlich effizient ist.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es müssen nur kleine Datenmengen übertragen werden. Vielleicht ein paar 
Befehle von 5-20 Byte alle Paar Sekunden. Zeitkritisch ist da nichts. 
Die langsamste Übertragungsrate ist also möglich um Fehler zu vermeiden. 
Treiberbausteine wollte ich nicht verwenden, da es ein modulares System 
sein soll,dass nicht nur auf einen Schnittstellentyp festgelegt ist.

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wieviel mA können denn die Port-Ausgänge für I2C treiben?
Doch sicher mehr als die 3 mA eines LM75.
Der schafft 100 khz an 400 pf Last. Bei ~100 pf/m Kabelkapazität also 
etwa 3 m mit den Kapazitäten der IO-Pinne .
20 m bei 10 khz:
[[Beitrag "Re: I2C Hausbus NSLU2"]]

Mit Bustreibern ist erheblich mehr möglich.

http://www.standardics.nxp.com/support/documents/i...

Mit einem eigenem Protokoll, könntest Du ja auch die Datenrate per 
Handshake langsam hoch fahren bis Fehler auftreten und dann wieder 
absenken.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.