SPI Pseudocode/Ablaufdiagramm für Daten senden UND empfangen

Gast #6312533
Lesenswert?
• ▲
▼
Hi

SPI und ich sind gewiss keine Freunde. Ich stelle mir momentan die 
Frage, wie der Code grundsätzlich aussehen soll, wenn ich als Master 
Datenpakete (z.B. uint8_t txData[] = "Alex" und uint8_t rxData[5]) 
sowohl Senden (MOSI) als auch Empfangen (MISO) möchte. Es wird kein 
Interrupt verwendet, sondern eine Blocking Schleife. Das Datenpaket und 
Paketgröße etc. sind gegeben. Es geht mir um den Ablauf, auf was man 
warten muss, und was zuerst kommt. Vielen Dank.

So stelle ich es mir vor:
1
- SPI enable
2
while (index < length):
3
     Wait until TX buffer empty
4
     Send from txData[index] to TX buffer
5
     Wait until RX buffer full
6
     Read from TX buffer into rxData[index]
7
     index++
8
- Wait until line is not busy
9
- SPI disable

Ist dieses Vorgehen richtig oder liege ich komplett falsch?
Gast #6312562
Lesenswert?
• ▲
▼
Alex schrieb:

> SPI und ich sind gewiss keine Freunde.

Weil du das Prinzip wohl nicht verstanden hast...

> Ich stelle mir momentan die
> Frage, wie der Code grundsätzlich aussehen soll, wenn ich als Master
> Datenpakete (z.B. uint8_t txData[] = "Alex" und uint8_t rxData[5])
> sowohl Senden (MOSI) als auch Empfangen (MISO) möchte.

Das hängt ganz klar vom Peer ab. Du mußt deinen Code entsprechend des 
Verhaltens des Peer schreiben.

> Es geht mir um den Ablauf, auf was man
> warten muss

Du kannst/brauchst nur auf eine einzige Sache warten: dass der 
Austausch(!!!) eines Bytes erfolgt ist. Welches der beiden Flags du dazu 
benutzt, ist im Prinzip völlig huppse. Da es sich um einen 
Austausch(!!!) handelt, ist immer dann, wenn was empfangen wurde auch 
was gesendet worden...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.