Forum: Mikrocontroller und Digitale Elektronik eine frage zu spi...


von pittbull (Gast)


Lesenswert?

hallo,

ich beschäftige mich derzeit etwas mit spi. pro clock-impuls wird ja
ein bit aus dem master in den slave geschaufelt und umgekehrt. meine
frage nun: was ist, wenn der master z.b. 10 bytes zu senden hat und der
slave nur 6? wenn ich dann 80 mal clocke habe ich 10 bytes durch beide
schieberegister gescheucht, wovon der eine aber 4 nicht gebrauchen
kann. wie lässt sich das am besten handlen? vielleicht indem ich als
erstes byte die länge sende? oder ein framing-protokoll?

danke im voraus,
 pittbull

von Konrad Heisig (Gast)


Lesenswert?

Ich würde einfach ein NULL-Byte definieren (z.B. 0xFF), welches der
Slave immer dann sendet, wenn er nichts zu sagen hat. Auf diese Weise
kann der Master feststellen, wenn der Slave mit seiner Botschaft fertig
ist. Allerdings ist es warscheinlich besser, für die Kommuniation eine
oder mehrere feste Byte-Anzahlen zu definieren, vielleicht abhängig vom
Befehl den der Master gibt.

Gruß
Konrad

von pittbull (Gast)


Lesenswert?

hallo konrad, danke für deine antwort.

>> Ich würde einfach ein NULL-Byte definieren (z.B. 0xFF), welches der
Slave immer dann sendet, wenn er nichts zu sagen hat. Auf diese Weise
kann der Master feststellen, wenn der Slave mit seiner Botschaft
fertig
ist.

das ist etwas problematisch, da ich auch 0xff, also jede bitkombination
als nutzdaten verwenden möchte.

>> Allerdings ist es warscheinlich besser, für die Kommuniation eine
oder mehrere feste Byte-Anzahlen zu definieren, vielleicht abhängig
vom
Befehl den der Master gibt.

das geht leider auch nicht. beide teilnehmer haben jeweils eine
beliebige anzahl von daten zu versenden, deren menge der andere erstmal
nicht weiss. ich muss wohl eine art software protokoll verwenden z.b.
indem beide als erstes die anzahl der daten senden, die sie loswerden
möchten. aber ich bin mir noch nicht ganz klar darüber ob das der
richtige weg ist. wer also noch tips hat: bitte helft mir.

danke im voraus,
 pittbull

von Lupin (Gast)


Lesenswert?

anders geht's nicht. Der master sendet eine Anfrage, der slave sendet
dann wieviel bytes er antworten möchte und dann generiert der Master
den takt für diese Bytes.

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.