16bit-Wert per SPI versenden

Gast #3981035
Lesenswert?
• ▲
▼
Hi Leuts,

ich hab einen SPI-Bus mit einem Master und drei Slaves. Einer der Slaves 
holt über den 16bit-ADC Messwerte, die über SPI an den Master gesendet 
werden sollen.

Wie würdet ihr die Daten vor dem Versenden Zwischenspeichern? Ich würde 
einen Fifo benutzen.  Aber ich stehe in erster Linie vor dem Problem des 
Versendends der Messwerte, weil SPI in einem Takt nur 8bit auf einmal 
überträgt und nicht 16bit.

Ich bin doch bestimmt nicht der erste mit diesem Problem. Falls ihr mir 
ein paar Tipps geben könntet, würde ich mich riesig drüber freuen.
Gast #3981059
Lesenswert?
• ▲
▼
Hannes schrieb:
> Aber ich stehe in erster Linie vor dem Problem des
> Versendends der Messwerte, weil SPI in einem Takt nur 8bit auf einmal
> überträgt und nicht 16bit.

Wie kommst du von PC-Programmierung auf SPI?
Was für eine Schnittstelle benutzt du am PC?
Und nein, SPI überträgt pro Takt genau ein Bit, bestimmt nicht 8 und 
auch nicht 16.
#3981061
Lesenswert?
• ▲
▼
Da schickst du einfach 2 mal 8 Bit...

Jetzt ist natürlich die Frage, wie du erkennen kannst,
welche der 8 Bit das 1. oder 2. Byte sind.

Der Master muss (mindestens) 2 Dummy-Bytes senden,
damit der Slave 2 Bytes zurücksenden kann.
Normalerweise wird jetzt CS (vom Master generiert)
am Anfang auf 0 gesetzt, dann wird der
entsprechende Slave angesprochen.
Dieser sendet jetzt zuerst das erste Byte, dann das zweite Byte.
Dann, wenn der Transfer beendet ist, CS wieder auf 1.

Reihenfolge ist dann natürlich beliebig.
Du kannst auch mehr wie 2 Bytes übertragen und
z.B. deine Daten erst in das 2. und 3. Byte packen.
Gast #3981071
Lesenswert?
• ▲
▼
Mike A. schrieb:
> Was für eine Schnittstelle benutzt du am PC?

Mein PC hat eine SPI-Schnittstelle.

Mike A. schrieb:
> Und nein, SPI überträgt pro Takt genau ein Bit

Das ist Definitionssache. Da ich den Hardware-SPI benutze, schreibe ich 
in einem Takt die ganzen 8bit in das SPI-Register. Dass der Master 8 mal 
steigende und fallende Flanken über Clock sendet hast Du wahrscheinlich 
gemeint.

Martin Maurer schrieb:
> Da schickst du einfach 2 mal 8 Bit...

Danke für Deinen Beitrag - ich glaube, dass ich Dein Prinzip verstanden 
hab.

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.