Forum: Mikrocontroller und Digitale Elektronik Suche Idee, Protokoll für bidir serielle Kommunikation


von Ulrich (Gast)


Lesenswert?

Hi,
Ich suche eine Idee, Protokoll für serielle schnittstellen

Es soll folgende Dinge beherrschen:
es darf nix ausmachen wenn mal ein Byte verloren geht
Fehlerkorrektur bzw. erkennen von Datenfehlern und wiederanfordern von 
dem Block
Unterbrechung im Betrieb erkennen und wieder synchronisieren bei 
Verbindung
usw....

Für so was bietet sich eine Blockweise Übertragung an. Jeder Block eine 
ID CRC usw. Wie erkennt der Empfänger wo der Block anfängt usw.. usw...

Falls irgendjemand Ideen, Links uvm hat o soll er sich bitte hier 
melden.


Mfg
Ulrich

von Christian R. (supachris)


Lesenswert?

Wir nehmen für sowas immer das Protokoll, was der LMX9820 Blutooth-Chip 
benutzt. Allerdings bei Bedarf mit CRC.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kermit-, X-MODEM, Y-MODEM oder ZMODEM-Protokoll, wie sie bereits vor 
Jahrzehnten zur Datenübertragung verwendet wurden.

von Annegret (Gast)


Lesenswert?

Sind die beiden (oder mehrere) Knoten gleichberechtigt, oder ist die 
Kommunikation Master-slave ?

von Ulrich (Gast)


Lesenswert?

gleichberechtigt

z-modem klingt schonmal ganz interesannt. Blockweise Übertragung, CRC

Allerdings vermisse ich noch den Punkt. Was ist wenn mal ein Byte 
verloren geht, dann würde eventuell das startbyte vom nächsten Paket als 
crc interpretiert werden? Muss man da eventuell eine Präambel senden? 
4Bytes z.B.?

Dann würde der empfänger ja merken wenn die empfangene Struktur 
nichtmehr stimmt.....

Aber wenn jetzt die übertragung in beide richtungen gestört war, was 
dann? dan kann ja der empfänger nichtmal mehr dem sender mitteilen das 
es probleme gibt?

Auf diesen Punkt geht weder x/y/z-Modem ein?

PS: Natürlich bin ich mir bewusst das es für mich nix fertiges gibt, und 
ich das selber rogrammieren muss, aber ich suche ja nur die Ideen und 
Vorlagen.....

von _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ (Gast)


Lesenswert?

Eine gute und einfache Methode seriell Daten zu übertragen ist die 
Signalspreizung.

Solange 50% + 1Bit der Daten durchkommen wird das Signal erkannt.
Soviel ich weis wurde das gleiche Prinzip beim Voyager-Projekt 
verwendet.

Das Ganze Funktioniert so:
Jedes Bit wird mit einer ungeraden Anzahl von Bits exclusiv verodert und 
gesendet.

So wird jedes Bit mehrfach versendet.
Wenn man z.B. einen String aus 99 Bits verwendet wird jedes Bit 99 mal 
gesendet.
(Der Vorteil dabei ist dass es gleich ein wenig verschlüsselt wird.)

Solange 50 Bits durchkommen wird das Signal verstanden.

Wenn man das Ganze nocheinmal invertiert sendet und eine Checksumme 
verwendet, wird die Empfangssicherheit erhöht.

von Dirk S. (tomcat)


Lesenswert?

HDLC und LAPB sind geeignete Stichwörter für deine weitere Suche.

Einige Eigenschaften:
CRC-gesicherte Blockübertragung
Block-Startbyte wird in den Daten durch Escapesequenz abgebildet.
Wiederholung beschädigter Blöcke
Gleichzeitige Bestätigung mehrere Blöcke (bei sehr langen 
Übertragungsstrecken ungemein mützlich)
...

von Dirk S. (tomcat)


Lesenswert?

oder auch mal PPP anschauen. Hat die gleichen Wurzeln.
...

von Ulrich (Gast)


Lesenswert?

@Dirk:
Vielen Dank, das klingt schonmal ganz gut, mehrere Blöcke würde ich 
nicht für lange übertragungswege nehmen sondern für kleine Pakete 
(gleicher effekt)

von Mario (Gast)


Lesenswert?

Das 10Mbit Ethernet mit CSMA/CD Protokoll sollte das alles auch können.
Das kann dann auch mit fertigem chip realisiert werden, Bsp. den 
ENC28J60 hier im Shop.

von Ulrich (Gast)


Lesenswert?

viel zu teuer......... 1€pro Stück wäre für meinen Zweck OK

ich habe mir jetzt alles durchgelesen und suche mir das raus was ich 
benötige und definiere mein eigenes Protokoll:

START;CONTROLL;LENGTH;DATEN;CRC;STOP

Und fertig.

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.