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