Forum: Mikrocontroller und Digitale Elektronik LPC936, SPI, microSD ansprechen


von Hans D. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von beobachter (Gast)


Lesenswert?

> DSC00070.JPG 7,3 MB

Aua!! Das gibt Mecker!

von Eumel (Gast)


Lesenswert?

Ich glaube, dass ist Rekord :)

von Beobachtender (Gast)


Lesenswert?

Toll, dass man jedes Pixel einzeln zählen kann.

;-)

von Michael H. (michael_h45)


Lesenswert?

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.

von Werner (Gast)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hinweis

Als Moderator ist mir die abartige Größe des Bildes aufgefallen, aber 
ich lasse das noch eine Weile als abschreckendes Beispiel so stehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hmm, hat doch einer der Moderatorenkollegen zugeschlagen und 1.6 MB 
draus gemacht.

Tja, so wird das nichts mit der Abschreckung.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von R. W. (quakeman)


Lesenswert?

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/

von Hans D. (Gast)


Lesenswert?

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.

von Hans D. (Gast)


Lesenswert?

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