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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.