Gast
#1507102
Hallo - ich habe ein Problem mit der Initialisierung einer SD-Karte. Die Karte ist ueber einfache Spannungsteiler (1.8k+3.3k) an einen Atmel (Vsup=5V) gehaengt. Die 3.3V fuer die Karte kommen aus einem Spannungsregler. MISO aus der Karte geht direkt zum Atmel. Prinzipiell laeuft die Routine, eine alte SD-Karte konnte ich erfolgreich lesen und beschreiben. Mit einer neuen SD-Karte tritt folgendes Problem auf: Die Karte antwortet korrekt und will 0x01 ausgeben, da die Kanten allerdings sehr (!) ausgeschliffen sind kommt beim uC (Atmel) nur noch 0x00 an. Das Hardware-SPI-Timing ist schon auf minimaler Geschwindigkeit ((1<<SPR0)|(1<<SPR1),(0<<SPI2X)). Beim Messen mit dem Oszi sehe ich die Flanken der Karte: Mehr als 10us Anstiegszeit! Bei 3.3V und wenn ich einen Widerstand gegen Masse haette von ca. 1kOhm wuerde mir irgendwo eine Kapazitaet von 1nF (!) so eine Flanke ergeben. Es haengt nur der uC und die Karte am MISO (naja... und das Oszi). Die Leitung ist <10cm. Das hat mit den Specs nun wirklich nix mehr zu tun. Kann doch garnicht sein - In den Specs heisst es, dass der Init langsamer sein muss als 400kHz. Wo in meiner Schaltung so eine Kapazitaet sitzen sollte ist mir voellig schleierhaft. Der angehaengte Oszi-Screenshot zeigt folgendes: CLK (5V, am AVR) und MISO (an SD-Karte) * links: Reste von der Init-Sequenz (...0x95) * kurz warten * 1 Dummy write (ich schreibe 0xFF) * dann kommt eine Antwort von der SD-Karte - ich erwarte ein 0x01, d.h. Idle-Mode ready. 0x01 kommt - total ausgewaschen - Atmel erkennt 0x00. * danach kommt fast SPI zum Display schreiben Nun einige Fragen: Gibt es irgendwie die Moeglichkeit den Hardware-SPI noch langsamer zu schalten? Oder muss ich dann 'von Hand' nen Software SPI bauen? Ich habe bereits den Pull-Up am MISO ein- und ausgeschaltet - kein Unterschied. Wenn Levelshifter: Welcher laeuft gut an der SD-Karte? Reicht es, dass ich nur MISO ueber nen Levelshifter laufen lasse? Gibt's nen einfachen Weg die aktuelle Flanke irgendwie zu verkuerzen? Sowas wie PullUp oder PullDown auf GND? Meine Versuche MISO mit 1kOhm auf 5V zu ziehen waren leider nicht erfolgreich... Die anderen Implementationen mit ner SD-Karte direkt am MISO von nem 5V-Atmel laufen ja auch... Uebersehe ich was? Gruesse - Ilja


