Hallo zusammen, ich arbeite gerade daran, einen 2,4 GHz-Transceiver-Chip per SPI-Schnittstelle an einen MSP430 anzukoppeln, und da steh ich jetzt vor einem Problem, für das ich keine Lösung finde. Der Chip hat nur eine Datenleitung DATA, wird also - über Widerstände - gleichzeitig an MOSI und MISO angeschlossen. Je nachdem, ob er Daten sendet oder empfängt, nimmt er dann entweder die Daten von MOSI entgegen oder sendet selbst welche an MISO. Deswegen gibt es eine einfache Funktion, die ich zum Senden UND Empfangen von Daten verwende. Das Problem: Beim Empfangen von Daten sind diese um jeweils ein Bit verschoben, d.h. das MSB des aktuell empfangenen Datenwortes ist eigentlich das LSB des vorhergehenden ! Das Senden hingegen klappt einwandfrei ! Ich hab auch die Signale schon oszilloskopiert, sie sehen genau so aus wie sie sein sollen. Es muss also ein Softwareproblem sein. Die Initialisierung der Schnittstelle nehme ich übrigens genau so vor, wie in einem Beispiel-Programm von Texas Instruments angegeben (und das Senden klappt ja auch, also kann das so falsch nicht sein). Hier ist meine Sende- und Empfangsroutine, in der ich extra noch auf das Ende des Empfangsvorganges warte: unsigned char nrf_readwrite(unsigned char data) { while(!(IFG1 & UTXIFG0)) // Warten bis Sendepuffer bereit { _NOP(); } U0TXBUF = data; // Daten in Sendepuffer schreiben while(!(IFG1 & URXIFG0)) // Warten bis Daten angekommen { _NOP(); } return U0RXBUF; // Empfangene Daten zurückgeben } Ich dank Euch schon mal für alle Tips und Hilfen, schöne Grüße, Mario
Hat sich erledigt, war ein Fehler in der Initialisierung der Schnittstelle. Grüße, Mario
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.