mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 18F2520 SD-Karte antwortet nicht


Autor: Simon R. (stalky13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

Ich versuch seit einiger zeit eine SD-Karte über SPI anzusprechen aber 
leider bekomme ich von der Karte überhaupt keine Antwort sondern immer 
nur 0xFF. Die Pegelwandlung von 5V auf 3.3V erfolgt über einen 74LVX125 
und die Pegelwandlung von 3.3V auf 5V über einen MAX232 auf dem 
Oszilloskop sieht mein DI Signal der Flash-Karte gut aus aber bei dem 
CLK Signal habe ich leichte Oberschwingungen. Auf dem DO Signal der 
Flash-Karte sehe ich einen Kurzen Low Impuls und dann einen etwa 10 mal 
so langen High Impuls ... aber wie gesagt ich bekomme immer nur Einsen 
obwohl die Karte im Idealfall mit 0x01 Antworten sollte. Es Wäre toll 
wenn sich mal Jemand der damit schon Erfahrung hat mal mein Programm (im 
Anhang) ansehen könnte ob ich alles Richtig gemacht habe. Ich 
Programmiere mit der IDE von MPLAB in C18.

MfG  Stalky

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und die Pegelwandlung von 3.3V auf 5V über einen MAX232 auf dem

Sehr kreativ, aber wenig hilfreich ;)
Der MAX232 invertiert das Signal.
Dürfte auch nicht schnell genug sein.
Nimm stattdessen z.B. einen 74HCT125
oder was anderes aus der 74HCT Reihe.

Autor: Simon R. (stalky13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Ich habe den Ausgang vom MAX232 wieder Mit einem Eingang des MAX232 
gebrückt ... also aus den 3.3V mach er -8V (oder so) und daraus wieder 
5V ... das Endergebnis ist also nicht mehr invertiert und genau 5V groß.

Und der MAX232 ist für Pegelwandlungen von 5V auf 12V gedacht z.B. für 
RS232 Schnittstellen. Den hab ich schon erfolgreich mit 6 Stelligen 
Baudraten betrieben ... ich glaub nicht das er zu Langsam ist. Trotzdem 
danke für deinen Vorschlag ... werd ich mir auf jedenfall Merken.

MfG  Stalky

Autor: Simon R. (stalky13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich hab nun den Fehler gefunden ... es lag an der SPI Bus Konfiguration. 
Damit es Funktioniert muss diese (für einen PIC 18F2520) wie Folgt 
aussehen:
SSPSTATbits.SMP = 0;     //Input data sampled at middle of data output time
SSPSTATbits.CKE = 1;     //Transmit occurs on transition from active to Idle clock state

SSPCON1bits.SSPM3 = 0;   //SPI Master mode, clock = TMR2 output/2
SSPCON1bits.SSPM2 = 0;   //Timer 2 muss so konfiguriert werden dass der
SSPCON1bits.SSPM1 = 1;   //SPI Bus mit weniger als 400 kHz und mit mehr
SSPCON1bits.SSPM0 = 1;   //als 100 kHz getaktet wird
SSPCON1bits.CKP = 0;     //Idle state for clock is a low level
SSPCON1bits.SSPEN = 1;   //Enables serial port and configures SCK, SDO, SDI and SS as serial port pins

/* Timer 2 Konfiguration bei 40 MHz PIC Takt ***********/
T2CON = 0b00000100;      //kein Postscale; kein Prescale; Timer ein
PR2 = 20;                //Periodenregister auf 20

Der Timer 2 wird mit TOSC/4 getaktet (10 MHz) hat er bis 20 gezählt (PR2 
= 20) dann erfolgt ein Timer2 Output Impuls, ggf. ein Interrupt und ein 
Reset von Timer 2. Der Timer 2 Output wird nochmals durch 2 geteilt 
bevor damit der SPI Bus getaktet wird. Also: TOSC/4/20/2 = 250 kHz.

Nun habe ich aber noch das Problem dass ich immer auf das Senden von 
Kommando 1 die antwort 0x01 bekomme anstatt 0x00. Das Kommando sende ich 
200 mal bevor Timeout und immer mit einer ms verzögerung dazwischen. Ich 
wäre euch für eure Hilfe dankbar.

MfG Stlaky

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.