Hi! ich beschäftige mich momentan mit meiner Projektarbeit, bei der es u.a. die Aufgabe ist, eine SPI-Verbindung zwischen einem PIC18F87J11 und einer SDKarte einzurichten. Jetzt die Frage: Wie muss ich mir die Übertragung von Daten/eines Bytes vorstellen? Sind das zwei miteinanderverbundene Register für empfangen und senden, derren Inhalte mit dem Clocksignal in das jeweils andere Register weitergetaktet werden? Konkreteres Problem: Ich sende ein Byte (Kommando CMD0 zum Reset der Karte), also eine 0, an die Karte. Mein Oszilloskop bestätigt mir auch, dass dieser Sendevorgang statt gefunden hat und dass er sogar nach dem gewählten Modus (CPHA=0,CPOL=0) statt gefunden hat. Es scheint also schon einmal etwas zu funktionieren. Nach dem senden dieses Bytes sollte ich doch eine Antwort erhalten?! Erhalte ich aber nicht! Müsste ich jetzt erst noch eine Art Dummy schicken, um die Antwort auf das vorherige zu erhalten? Sprich, wie muss ich mir dieses Senden/Empfangen Spiel vorstellen? Vielen Dank im Voraus Bin für jeden Tipp dankbar! MfG Christian Carl
Kennt sich den wirklich keiner mit SPI aus? Kann mir vielleicht jemand eine gute Lektüre zu diesem Thema zur Hand geben? Find hierzu aus dem doch schmalen Wikipedia eintrag nicht besonders viel hilfreiches. Besten Dank Christian
Hi, leider sind wir PICler hier in der Minderheit. Kämpfe zur Zeitch auch noch mit SPI. Zu Deinem Problem: Ja,, erst Befehl senden, etwas warten, dann Dummy Byte senden und Ergebnis empfangen. Habe gerade meinen ADS1211 ADC per SPI ams laufen gebracht. War so ziemlich das schwierigste, was ich bisher gemacht habe....... Gruß Dirk
> Hi, leider sind wir PICler hier in der Minderheit. http://www.fernando-heitor.de/, da sitzen die PIC-Cracks
1 | unsigned char txdata; |
2 | undigned char rxdata; |
3 | |
4 | txdata = 0x5A; // oder von mir aus auch etwas anderes |
5 | |
6 | SSPBUF = txdata; // byte in buffer schreiben |
7 | while(!SSPIF); // warten bis byte gesendet |
8 | rxdata = SSPBUF; // byte aus buffer lesen |
Der PIC18F87J11 hat zwei MSSP-Schittstellen. Dann heißen die Register natürlich etwas anders: SSP1BUF SSP1IF bzw. SSP2BUF SSP2IF Hast du die Initialisierung für SPI schon?
Christian Carl schrieb: > Nach dem senden dieses Bytes sollte ich doch eine Antwort erhalten?! > Erhalte ich aber nicht! > Müsste ich jetzt erst noch eine Art Dummy schicken, um die Antwort auf > das vorherige zu erhalten? > > Sprich, wie muss ich mir dieses Senden/Empfangen Spiel vorstellen? Die Clockquelle ist immer der Master. Wenn du etwas empfangen willst, mußt du eine Clock liefern. Am einfachsten geht das, indem man selbst etwas sendet. Was man sendet hängt vom Device ab. Manche behandeln jedes empfangene Byte als Kommando, da gibts dann häufig ein NOP, das man schicken kann. Die Abfolgen sind aber normalerweise dokumentiert. MfG Klaus
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.