Forum: Mikrocontroller und Digitale Elektronik MCP2515 und SD-card an SPI


von H.Joachim S. (crazyhorse)


Lesenswert?

Hat das schon mal jemand gemacht?
Hab mich mit SD-cards noch nie beschäftigt....
SPI-Init für den MCP2515:
// ATMega32A
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2*4000,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First

Klappt das auch mit der SD-card oder müsste man für jede Aktion 
umconfigurieren? Oder die USART als 2.SPI nutzen und dafür 
Software-UART? Oder Software-SPI für die SD?
Das schönste wäre, die SD-card könnte mit den oben geschriebenen 
Einstellungen benutzt werden...

von M. Н. (Gast)


Lesenswert?

Hallo.

In welcher Sprache programmierst du?

Ich mach es in asm so:

Nur "Takt", SPE und MSTR setzen. DORD CPOL CPHA bleiben null.
D.h.: Taktphase: versetzt
      Ruhezustand: low
      Richtung: MSB first

Hoffe es hilft dir.

von H.Joachim S. (crazyhorse)


Lesenswert?

In C
SPCR=(1<<SPE) | (1<<MSTR);
SPSR=(1<<SPI2X);

Das scheint also zu passen.

Vielen Dank!

Gerade ein wenig bei Ullrich Radig gestöbert:

#if SPI_Mode
    //Aktiviren des SPI - Bus, Clock = Idel LOW
    //SPI Clock teilen durch 128
    SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); //Enable SPI, SPI in 
Master Mode
    SPSR = (0<<SPI2X);
#endif

Bis auf die anderen clockeinstellung scheint das zu passen.
Also werde ich das auf die Hardware-SPI routen.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

- Karte bei der Initialierung deutlich langsamer taken
- Nach Deselektierung der Karte noch ein Byte per SPI rausschieben, 
bevor der CAN-IC selektiert wird
Nützliches bei elm-chan.org Code: FatFs Module, Information: How to Use 
MMC/SCD

von H.Joachim S. (crazyhorse)


Lesenswert?

Ja, das hatte ich auch schon gelesen, bei init max. 400kHz.
FAT werde ich mir wohl sparen, die Karte ist fest im Gerät. Sammelt 
Daten und wird irgendwann via UART ausgelesen.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Auf wenn FAT nicht genutzt werden soll, ist der Beispielcode von CHaN 
brauchbare Vorlage. Im AVR-Beispiel (samples.zip o.ö., UVZ avr) ist auch 
der "low-level-Kram" via AVR HW-SPI (init, block read/write) recht 
ordentlich und kompakt implementiert.

von H.Joachim S. (crazyhorse)


Lesenswert?

Ja, hab schon einiges gefunden.
Im Moment gehts mir erstmal drum, die Platine in Auftrag zu geben. Ist 
(wie immer :-)) etwas eilig.
Wäre blöde, wenn man sich da schon was verbaut und dann anfängt 
rumzufädeln.
Hab mir jetzt trotzdem Trennstellen eingebaut und Lötbrücken zu 
"normalen" I/Os (hab auch Beispielcode für ne Softwarelösung gefunden).

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.