Forum: Mikrocontroller und Digitale Elektronik Synchronisation bei Datenübertragung


von Hammerfest (Gast)


Lesenswert?

Hi,

ich habe hier ein einfaches System zur Übertragung von 22-Bit-Daten:

- eine Datenleitung, die je nach Bitwert auf High oder Low geht

- eine Clock-Leitung, die immer dann eine Flanke ausgibt, wenn ein Bit 
auf der Datenleitung gültig ist

- eine Sync-Leitung, die auf High geht, wenn ein Datenframe beginnt und 
auf Low, wenn es zu Ende ist.

Jetzt würde ich gerne die Sync-Leitung einsparen, habe dann aber das 
Problem, Anfang und Ende eines Datenframes zu erkennen:

- ein Startbit einfügen, das länger als die anderen Bits ist, 
funktioniert nicht, da es Sender geben kann, die das nicht wirklich gut 
können -> das Bit müsste hier sehr lang sein, was die 
Datenübertragungsrate in den Keller gehen lässt

- ein bestimmtes Bitmuster voranstellen geht auch nicht, da die 
Nutzdaten jeden Wert annehmen können und damit auch dieses Bitmuster 
vorkommen kann

Meine Frage: gibt es irgend welche Möglichkeiten, dieses Problem zu 
lösen und auf nur zwei Leitungen eindeutig idetifizierbare Datenframes 
zu übertragen?

Danke!

von Stephan (Gast)


Lesenswert?

Wie wäre es mit einem TWI/I2C nachbau?
Also START-OF-FRAME, wenn CLOCK=HIGH und DATA=FLANKE H-L
vg, Stephan

von c-hater (Gast)


Lesenswert?

Hammerfest schrieb:

> ich habe hier ein einfaches System zur Übertragung von 22-Bit-Daten:
>
> - eine Datenleitung, die je nach Bitwert auf High oder Low geht
>
> - eine Clock-Leitung, die immer dann eine Flanke ausgibt, wenn ein Bit
> auf der Datenleitung gültig ist
>
> - eine Sync-Leitung, die auf High geht, wenn ein Datenframe beginnt und
> auf Low, wenn es zu Ende ist.

Also SPI mit 22bit Datenpaketen.

> Jetzt würde ich gerne die Sync-Leitung einsparen, habe dann aber das
> Problem, Anfang und Ende eines Datenframes zu erkennen:

> Meine Frage: gibt es irgend welche Möglichkeiten, dieses Problem zu
> lösen und auf nur zwei Leitungen eindeutig idetifizierbare Datenframes
> zu übertragen?

Nur durch ein übergeordnetes "Framing"-Protokoll. Das würden aber deine 
offensichtlich "dummen" Datenlieferanten auch nicht sprechen können.

Also ist die Antwort: NEIN, geht nicht. Nada, niente, never, niemals.

Einziger Ausweg: du machst die Datenlieferanten weniger dumm.

Ende der Ansage.

von Hammerfest (Gast)


Lesenswert?

Stephan schrieb:
> Wie wäre es mit einem TWI/I2C nachbau?
> Also START-OF-FRAME, wenn CLOCK=HIGH und DATA=FLANKE H-L
> vg, Stephan

Klingt ganz gut...also wenn ich das richtig verstehe:

- Daten sind gültig bei einer steigenden Flanke an SCK (bzw. wenn SCK 
auf High ist)

- Daten ändern sich nur, wenn SCK Low ist

- bei einer fallenden Flanke an SDA wenn SCK auf High ist das der Beginn 
eine Frames

- bei einer steigenden Flanke an SDA wenn SCK auf High ist das das Ende 
eines Frames?

von Stephan (Gast)


Lesenswert?

Details findest Du in der org I2C Spec von NXP:
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

Wobei mir nicht ganz klar war, was Du für Möglichkeiten hast Deine 
Sender und Empfänger HW- und Protokollseitig zu verändern...

Viele Grüße, Stephan

von Peter D. (peda)


Lesenswert?

Man kann ein führendes 1-Bit senden als Start.
Zur Synchronisation sendet man einfach 22 0-Bits.
Einige ICs machen das so, z.B. der MM5450
https://www.microchip.com/wwwproducts/en/MM5450

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.