Forum: Mikrocontroller und Digitale Elektronik Data Link Protokoll für SPI


von Stephan R. (rabbe)


Lesenswert?

Hallo Leute,

ich möchte gerne Befehle und Daten (z.B. per SPI) an meinen 
Mikrocontroller senden.

Die Nachricht sollte folgende Bestandteile beinhalten:
- Befehl mit ca. 16Bit Länge
- Checksumme
- Datenlänge von Payload (0 bis N bit)
- Payload (kann auch leer sein, meistens 32bit, selten länger)

Gibt es schon Protokolle für diesen Anwendungszweck?
Ich würde gerne vermeiden, das tausendste Protokoll für Kommunikation 
mit einem uC zu entwickeln :)

EDIT:
Ich hab gerade ROSserial entdeckt:
http://wiki.ros.org/rosserial
Was haltet ihr davon?


Danke schon mal :)

: Bearbeitet durch User
von Flaschen Zähler (Gast)


Lesenswert?

Nun, das Protokol wird duch sein Anforderungen bestimmt.

Variable Laenge, heisst ein Laengenfeld
Also etwas wie :

Header, Laenge, Command, Payload, Checksum

Mach's einfach.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Stephan R. schrieb:
> Ich würde gerne vermeiden, das tausendste Protokoll für Kommunikation
> mit einem uC zu entwickeln

Ich bin total bei Dir, aber ich befürchte inzwischen, das hat keinen 
Zweck, weil die die ISO/OSI-Layer bei vielen Protokollen nach dem Motto 
"Mach's einfach" nicht sauber getrennt sind.

Stephan R. schrieb:
> Ich hab gerade ROSserial entdeckt: … Was haltet ihr davon?

Ich sehe da gerade "1st Byte - Sync Flag (Value: 0xff)".

"Sync" ist Schicht 1, oder?

Stephan R. schrieb:
> Checksumme

Die Checksumme ist Schicht 2, oder?

Siehe:
https://de.wikipedia.org/wiki/OSI-Modell#Schicht_2_%E2%80%93_Sicherungsschicht_(Data_Link_Layer)

von Stephan R. (rabbe)


Lesenswert?

Vielen Dank für die Antworten :-)

Flaschen Zähler schrieb:
> Nun, das Protokol wird duch sein Anforderungen bestimmt.

Ja schon, jedoch hatte ich mir gedacht, dass diese Anforderungen so 
trivial sind, sodass sich hierfür schon jemand Gedanken gemacht hat.

Torsten C. schrieb:
> Ich sehe da gerade "1st Byte - Sync Flag (Value: 0xff)".
>
> "Sync" ist Schicht 1, oder?
>
> Stephan R. schrieb:
>> Checksumme
>
> Die Checksumme ist Schicht 2, oder?

Die Checksumme sollte in Schicht 2 sein. Die Sync Flag haben die 
vermutliche in das Protokoll reingeschrieben, da es eventuell nicht 
jeder Physical Layer gewährleistet?
Kann das in meinen Fall zu einem Problem führen oder ist das nur wegen 
der Kosmetik?

von Flaschen Zähler (Gast)


Lesenswert?

So ein triviales Protokoll laeuft nicht unter das Rad neu erfinden, 
sondern unter eine loesung anwenden.
Das Layer Zeugs kann man auch gleich vergessen, solange man nichts 
Komplizierteres macht. zB ein Protkoll in ein Anderes einpackt, routet 
oder so.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Stephan R. schrieb:
> Die Sync Flag haben die vermutliche in das Protokoll reingeschrieben,
> da es eventuell nicht jeder Physical Layer gewährleistet?

Beim SPI ist der Sync über die CSN-Leitung gegeben.
Welcher andere Physical Layer denn?

Für ein Protokoll per UART z.B. bräuchte man ein Sync.

Ich denke gerade mal laut, denn ich brauche ein Gateway/Router von 
USB-UART (FTDI/CH340/…) auf verschiedene Busse (SPI, SMBus, ...).

Jetzt könnte man bis "ganz nach oben" gehen und das Internet-Protokoll 
per SLIP verwenden.

Aber das Mapping von IP-Adressen auf SMBus-Adressen oder CSN-Leitungen 
für SPI wäre auch wieder proprietär.

Oder ein Layer darunter: MAC-Adressen auf SMBus-Adressen oder 
CSN-Leitungen mappen. Auch das wäre proprietär.

Das^^ macht alles wenig Sinn und ist nur Brainstorming.

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.