Forum: Mikrocontroller und Digitale Elektronik SD-Card an NUCLEO Board


von martin (Gast)


Lesenswert?

Ich habe eine SD Karte mit dem Nucleo Noard STM32f4 verbunden und mit 
CubeMX lasse ich mir den notwendigen Code erzeugen.

Meine Frage geht erstmal richtung Hardware.
Benötigt die SD Card Anbindung am STM32f4 Pull up Widerstände an den 
Datenleitungen oder geht das ohne?

Frage, weil es auf anhieb eben nicht lief.

von DraconiX (Gast)


Lesenswert?

WIE hast du das denn mit dem Nucleo Board verbunden?

von maritn (Gast)


Lesenswert?

Scho richtig.

Die Frage ist ob es Pull Ups benötigt oder nicht.

Das da was zappelt sehe ich mit dem Oszi.

Ich versuche mal den Clock runterzuschrauben.

von Jim M. (turboj)


Lesenswert?

martin schrieb:
> Benötigt die SD Card Anbindung am STM32f4 Pull up Widerstände an den
> Datenleitungen oder geht das ohne?

SD kommen hoch als "open drain", brauchen also einen Pullup an MISO und 
an den anderen bei SPI unbenutzten Datenleitungen.

von Stefan F. (Gast)


Lesenswert?

> SD kommen hoch als "open drain", brauchen also einen Pullup

Die CrumbX1 Boards funktionieren ohne Pull-Up Widerstände. Und glaube 
mit, die habe ich intensiv getestet.

http://www.chip45.com/products/crumbx1-net_avr_xmega_module_board_atmega128d3_embedded_internet_ethernet_webserver_usb.php

von Jim M. (turboj)


Lesenswert?

Stefan U. schrieb:
>> SD kommen hoch als "open drain", brauchen also einen Pullup
>
> Die CrumbX1 Boards funktionieren ohne Pull-Up Widerstände. Und glaube
> mit, die habe ich intensiv getestet.

Sich auf die internen Pullups im µC zu verlassen kann auch ins Auge 
gehen. Die haben teilweise recht hohe erlaubte Werte im Datenblatt. Ein 
paar Leckströme oder EMV Störungen und schon hat man den (Daten-)Salat.

SD Karte ohne geschaltete Stromversorgung ist auch doof - die Dinger 
kenne keinen Reset, und ich habe eine Charge auch schon so abschiessen 
können dass man sie komplett vom Strom nehmen musste um sie 
wiederzubeleben.

von Rene K. (xdraconix)


Lesenswert?

Das ist ja die Frage die ich oben gestellt habe. WIE ist die SD Card 
verbunden. Direkt oder über ein Breakout? Sind auf dem Breakout bereits 
Pull-Ups drauf? Reichen diese? Sind sie zu stark? Ist ein Pegel Wandler 
mit drauf?

Das eine SD Card immer mit Pull-Up betrieben wird sollte aber definitiv 
klar sein. Denn eine einfache Suche wie "SD Card Pullup" bringt 
Hunderttausende Treffer und alle sprechen von "Ja". Und da spielt es 
keine Rolle ob wie auf dem Nucleo ein STM32 oder ein AVR oder PIC 
werkelt. Das spielt dafür absolut keine Rolle.

Und vorsicht bei CubeMx, sollte das SPI Interrupt gesteuert sein: CubeMx 
startet in seinem Code die Interrupts nicht, das musst du händisch 
selbst machen.

von Stefan F. (Gast)


Lesenswert?

> Sich auf die internen Pullups im µC zu verlassen kann auch ins
> Auge gehen.

Die sind beim CrumbX1 NET Board nicht aktiviert.

von maritn (Gast)


Lesenswert?

Nun, was soll ich sagen, es tut jetzt.

Habe erstmal mühselig Widerstände im KOhm bereich gesucht, diese 
glücklicherweise gefunden .... allerdings im 0402 Format. Beim Löten 
also paarmal geflucht und das Ergebnis war, dass es wie davor nicht 
ging.

Also einige Datenblätter und Tutorials im www gesucht und Anweisungen 
umgesetzt. Ergebnis ... es ging nicht.

Die 16GB SD aus meinem alten Handy genommen, formatiert, in Adapter und 
Card Connector gesteckt und .... es tat.

Gegenprobe mit vorheriger SD Card gestartet und es ging wieder nicht.

Also denke ich , dass die alten SD Karten in der Initialisierung nicht 
unterstützt werden.

Benutzt hatte ich:
Canon    16MB ---- MegaByte ging nicht
SanDisk 256MB ---- MegaByte ging nicht
SanDisk  16GB ---- GigaByte ging

Das statistische Pech für diese Woche sollte somit ausgeschöpft sein.

Vermutlich hätte es die Widerstände auch nicht benötigt aber wie oben 
bereits geschrieben, ist es für den definierten Zustand wohl besser.

von maritn (Gast)


Lesenswert?

Ach ja, eine 128MB von SanDisk hatte ich auch noch dran und es ging 
natürlich nicht.

von Stefan F. (Gast)


Lesenswert?

Ich kenne das. Ich hatte auch einige Karten, die gar nicht gingen.
Dafür verweigert mein Fototapparat wiederum ein anderes Set von Karten.

Nur im Smartphone gehen alle. Komisch.

von Jim M. (turboj)


Lesenswert?

Stefan U. schrieb:
>> Sich auf die internen Pullups im µC zu verlassen kann auch ins
>> Auge gehen.
>
> Die sind beim CrumbX1 NET Board nicht aktiviert.

Dann hättest Du aber arge Probleme bei der Initialisierung. Die Spec auf 
SDcard.org sagt eindeutig dass die Karten als Open Drain hoch kommen bei 
Power-ON.

maritn schrieb:
> Canon    16MB ---- MegaByte ging nicht
> SanDisk 256MB ---- MegaByte ging nicht
> SanDisk  16GB ---- GigaByte ging
>
> Das statistische Pech für diese Woche sollte somit ausgeschöpft sein.

Karten ab 4GB sind SDHC und keine SD. Außerdem verwenden die kleinen 
FAT16 -die 16MB könnte auch FAT12 sein- und nicht FAT32 als Dateisystem. 
Es gibt also reichlich weitere Fehlerquellen.

von Stefan F. (Gast)


Lesenswert?

> Dann hättest Du aber arge Probleme bei der Initialisierung

Nein, es funktiuoniert tadellos. Irgend etwas macht die avrfat32 
Library, dass dort die Pull-Up Widerstände nicht nötig sind. Was genau, 
weiß ich nicht. Solange es funktioniert, nutze ich einfach die Hardware 
so, wie ich sie gekauft habe.

von Jim M. (turboj)


Lesenswert?

Stefan U. schrieb:
> ein, es funktiuoniert tadellos. Irgend etwas macht die avrfat32
> Library, dass dort die Pull-Up Widerstände nicht nötig sind.

Eventuell braucht man die bei aktuellen (Micro-)SD Karten auch nicht 
mehr, jedenfalls für die SPI Leitungen.

Der Teil mit dem Open Drain stammt noch aus der MMC Spec - ich dachte 
die wäre in der Beziehung kompatibel.

Dann erscheint aber die 400kHz Beschränkung - die noch immer nach 
Power-On besteht - nur bedingt sinnvoll.

Leider hält sich die öffentlich einsehbare SD Spec hier mit Details 
zurück. Ich würde die Pullups immer noch einbauen - insbesondere wenn 
der große Slot verwendet wird wo auch MMCs rein passen, denn die kommen 
als Open Drain laut MMC Spec hoch.

SPI Mode ist auch nicht sooo empfindlich, denn nach dem ersten 
erfolgreichen CMD0 ist die Karte im SPI Mode und hat denn MISO auf 
Push-Pull gestellt. Wenn der Host die Antwort nicht korrekt empfängt 
sendet er halt noch ein extra CMD0 das keine negativen Auswirkungen hat.

Ich hätte aber Kopfschmerzen - wegen EMV und Stromverbrauch - weil MISO 
in den Pausen dann gar nicht mehr getrieben wird und eventuell als 
Antenne arbeitet - also einen offenen CMOS Input darstellt...

von Stefan F. (Gast)


Lesenswert?

> Eventuell braucht man die bei aktuellen (Micro-)SD Karten auch
> nicht mehr

Ich habe auch mit ganz alten 32MB, 64MB 128MB (nicht GB!) Karten 
getestet. Die sind sehr alt.

> Dann erscheint aber die 400kHz Beschränkung - die noch immer
> nach Power-On besteht - nur bedingt sinnvoll.

Damit habe ich experimentiert. Wenn du die Karten schneller 
initialisierst, antworten sie nicht korrekt. Aber nach der 
Initialisierung kann man die Taktfrequenz erhöhen.

> Leider hält sich die öffentlich einsehbare SD Spec hier mit Details zurück.

Ja, und ich denke, daß ist der Hauptgrund für die zahlreichen 
Inkompatibilitäten.

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.