Forum: Mikrocontroller und Digitale Elektronik AVR & SD-Karte


von Marian (phiarc) Benutzerseite


Lesenswert?

Moinmoin,

ich versuche seit geraumer Zeit eine SD-Karte mithilfe von FatFS und dem 
angepassten AVR-Sample anzusteuern.

Hier erstmal die Checkliste aus dem Wiki: ( 
http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten )
☑ andere SD-Karte probiert
☑ Taktfrequenz klein genug (57,xx kHz, mit Oszilloskop an CLK 
nachgemessen)
☐ Pullup im AVR ist an, ich probier nachher mal nen richtigen, externen 
aus (übliche Pull-Up-Größe ist okay, oder? so 3-10 K?)
☑ 3.3 V für das gesamte System kommt aus einem LDO, schwingt nicht, kein 
Ripple
☑ SPI ist sauber angeschlossen, die Leitungen sind sogar mehr oder 
weniger gleich lang (Und auf CLK und MOSI sehe ich auch "Bewegung")
☐ SS ist auf Low festgenagelt, ich brauche keine anderen Devices (aber 
ich werde gleich mal probieren es erst vor der Initialisierung auf low 
zu ziehen, vll. liegt da das Problem) -- kann das wirklich das Problem 
sein? "Mögen" es SD-Karten nicht die ganze Zeit angesprochen zu sein?
☑ Deselektion wird nicht passieren
☑ Karte ist in einem richtigen SD-Kartenslot

disk_initialize() schlägt fehl mit STA_NOINIT, also habe ich mir, 
nachdem ich geschaut habe, ob CLK und MOSI funzen (s.o.),  MISO 
angeschaut und festgestellt, dass da einfach gar nix passiert. Null. 
Nada. Nix. Hängt permanent auf 3.3 V...

Bin jetzt ein bisschen ratlos und probier das erstmal mit einem externen 
Pullup an MISO aus, auch wenn ich nicht so ganz glaube, dass das was 
bringt. Der im AVR mag zwar relativ hochohmig sein, aber die Leitung 
hochziehen schafft der ja offensichtlich und so ganz vorstellen, warum 
es dann Probleme deswegen gibt, kann ich mir nicht. Naja. Mal schauen.

Deswegen vermute ich eher, dass es an SS liegt. Auch wenn das in meinen 
Ohren nicht so ganz logisch klingt, oder muss ich etwa bei SS auf low 
mehr oder weniger sofort Anfangen auch Daten durchzuschieben?


Random Daten die mir zu meinem Aufbau gerade noch einfallen:
-Controller ist ein ATmega328P
-Frequenz kommt aus einem Quarz (7,3728 MHz, schwingt stabil)
-Alles wird mit 3.3 V betrieben

von Jim M. (turboj)


Lesenswert?

> SS ist auf Low festgenagelt

Lies mal die Spec von SDCard.org. Du musst die Karte von SDIO auf SPI 
umschalten, und das geht nur mit CS=High.

Außerdem wird mit CS Flanke nach Low der "Anfang" signalisiert - d.h. 
die SPI Shiftregister von µC und SD Karte synchronisiert. Die könnten 
beim Power-Up durchaus auseinander gelaufen sein.

von Marian (phiarc) Benutzerseite


Lesenswert?

Ich habs gerade mal gemacht und äh nun ja... also zumindest die 
Initialisierung scheint jetzt zu funktionieren! :D
(Ein seperater Pullup auf MISO hat btw. nichts gebracht, wars also 
wirklich nicht)

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.