Hallo liebe LPC-Freunde, für eine Schulprojekt möchte ich mit einem LPC936 eine microSD Speicherkarte ansprechen. Leider bekomm ich beim senden des ersten Befehls eine Verzögerte Rückmeldung das heißt ich lese zwischen 2 zu sendenden ASCII-Zeichen ein. Um es besser zu verstehen einfach das Bild im Anhang ansehen. Etwas schwer zu erkennen zwischen drin ist eine etwas größere lücke die eine Pause zum nächsten Sendevorgang darstellt. Ich hab auch schon den MISO auf high (3,3V) und low gelegt um mein SPI auszutesten. Das Oszilloskop zeigt aber deutlich das die Information zwischen zwei sendvorgängen empfangen wird und ich hab keine Ahnung wie das sein kann. Vll. weiß jemand von euch rat? Der Code zum Einlesen: unsigned char send_command(unsigned char *CMD) //Es wird ein CMD-Befehl versendet { unsigned int i; unsigned char answer = 0xff; for(i=0; i<6; i++) { SS = 0; SPDAT = CMD[i]; while((SPSTAT & 0x80) == 0x00); if(i==5) answer = SPDAT; SPSTAT = 0xff; SS = 1; } return answer; } Für jeden Hinweis bin ich dankbar.
Hans D. schrieb: > SS = 0; ... > SS = 1; Sicher dass das das tut, was du bezweckst? > SPSTAT = 0xff; Wird nie verändert. Generell ist dein Code nicht wirklich sauber geschrieben - überall Konstanten ohne sinngebende Namen und viel zu allgemein gehaltene Funktions- und Variablennamen. Ich vemute, du verhaspelst dich da noch irgendwo außerhalb.
Hans D. schrieb: > DSC00070.JPG > 7,3 MB, 49 Downloads Hans D. schrieb: > Ich hab auch schon den MISO auf high (3,3V) und low gelegt um mein SPI > auszutesten. ... Vll. weiß jemand von euch rat? Ich glaube du hast ein ganz anderes Problem. Guck mal in das Datenblatt von deinem TEK und vergleich die Pixelanzahl mit deinem Screen Shot. Fällt dir etwas auf?
Hinweis Als Moderator ist mir die abartige Größe des Bildes aufgefallen, aber ich lasse das noch eine Weile als abschreckendes Beispiel so stehen.
Hmm, hat doch einer der Moderatorenkollegen zugeschlagen und 1.6 MB draus gemacht. Tja, so wird das nichts mit der Abschreckung.
Noch ein Hinweis: Jetzt liegt ein technisches Problem vor, das verkleinerte Bild wurde beim verkleinern zerstört. Die im Bild vorhandene Information aber dürfte auch aus der Vorschaubriefmarke zu extrahieren sein.
Ich habe selber mal für den LPC936 ein Testprogramm geschrieben gehabt, mit welchem ich SD und SDHC Karten ansprechen kann. Eventuell hilft es dir etwas. Du findest die Dateien dazu unter [1]. Aber grundsätzlich ist deine Schleife schon richtig aufgebaut. :) Ciao, Rainer [1] https://quakeman.homelinux.net/viewvc/uVision/trunk/Test_SD_Karte/
Michael H. schrieb: > Hans D. schrieb: >> SS = 0; > ... >> SS = 1; > Sicher dass das das tut, was du bezweckst? Der Port P2.4 ist im SFR (Special function register) Headerdatei <REG936.h> als SS deklariert somit kann ich den Slave Select Port auf low ziehen um die Speicherkarte anzusprechen. Das sollte also soweit richtig sein. >> SPSTAT = 0xff; > Wird nie verändert. Das Flag SPIF welches beim senden/empfangen gesetzt wird, wird mit SPSTAT 0xff zurückgesetzt und nicht wie es wohl manche vermuten mit 0x00 also da weiß ich das es funktioniert. > Generell ist dein Code nicht wirklich sauber geschrieben - überall > Konstanten ohne sinngebende Namen und viel zu allgemein gehaltene > Funktions- und Variablennamen. > Ich vemute, du verhaspelst dich da noch irgendwo außerhalb. Das Problem ist ja nicht das senden von einem Befehl das funktioniert einwandfrei (Das sehe ich an meinem Oszilloskop). Das Problem ist bei mir das ich es nicht korrekt empfange. Ich den das ich Irgendwas übersehen habe z.b. eine Zeitliche verzögerung oder so.
Fox Mulder schrieb: > Ich habe selber mal für den LPC936 ein Testprogramm geschrieben gehabt, > mit welchem ich SD und SDHC Karten ansprechen kann. Eventuell hilft es > dir etwas. Du findest die Dateien dazu unter [1]. > Aber grundsätzlich ist deine Schleife schon richtig aufgebaut. :) > > Ciao, > Rainer > > [1] https://quakeman.homelinux.net/viewvc/uVision/trun... Herzlichen Dank, ich denk das könnte mir noch von Nutzen sein. =)
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.