Forum: Mikrocontroller und Digitale Elektronik SD an Nucleo-144 direkt?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marko R. (dr_marko_rocznik) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Darf ich eine SD-Karte direkt ans Nucleo-144 ohne Level-Translater 
hängen?

Wie auf dem Bild zu sehen:
- nehme ich die 5V vom Board und schicke sie über einen 3.3V-LDO
- LDO-En schaltbar vom Board
- D[3:0] jeweils mit 10k an 3.3V gehängt

Sind die I/Os des STM32H7A3 auf 1.8 oder 3.3V?

Und was wähle ich dann im CubeMX aus?
Ich denke: "SD 4 bits Wite buss"  (also ohne voltage converter)

Viele Grüße!
 Marko

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So simpel ist das nicht zu erklären.

Im RM mehrere Kapitel.

Geh im CubeMX auf Connectivity, dann mit der Maus über SDMMC1.
Mit Ctrl+D in das RefMan - dann wird dir geholfen.

von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Das habe ich.
Ich hatte gehofft nicht der erste zu sein der auf diese Frage eine 
Antwort sucht.

Marko

von pegel (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe leider keine Erfahrung mit H7.

Ich würde einfach das 3V3 Beispiel "von der Stange" nehmen.

https://www.st.com/en/evaluation-tools/stm32h7b3i-dk.html

Dort ist die Schaltung für die µSD Karte zu finden. (siehe Anhang)

Die Software dazu gibt es hier:
~/STM32Cube/Repository/STM32Cube_FW_H7_V1.8.0/Projects/STM32H7B3I-DK

von dasrotemopped (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das geht eleganter.
Die 3,3V kannst du direkt vom Board ziehen.

Gruß,
dasrotemopped

von dasrotemopped (Gast)


Bewertung
0 lesenswert
nicht lesenswert
vergessen, den Pegelwandler braucht man wegen der SD-Karte, nicht wegen 
dem uC. Die schnellsten SD Karten laufen mit 1,8 V statt 3,3V. WEnn die 
Karte <32GB ist man auf der sicheren Seite.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Aus dem Datenblatt:

Two SDMMC interfaces (one can be supplied from a supply voltage separate 
from that of all other I/Os)

Ich hatte das so verstanden, dass der Pegelwandler eingebaut ist!?

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Alle SD-Karten müssen mit 3.3V funktionieren.
Die schnelleren Übertragungsmodi (UHS-I) erfordern aber 1.8V. Hast Du 
das nicht, bist Du auf 25MByte/s Interface-Transferrate beschränkt. So 
wie ich das sehe, reicht das für Dich nicht.

Ich vermute mal, ST sieht für UHS-I das hier vor:

https://www.st.com/en/interfaces-and-transceivers/st6g3244me.html

Das ist nämlich genau so ein applikationsspezifischer Levelshifter für 
SD und SDIO.

fchk

von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
dasrotemopped schrieb:
> das geht eleganter.
> Die 3,3V kannst du direkt vom Board ziehen.
>
> Gruß,
> dasrotemopped

Ich habe den LDO eingebaut um über den EN-Pin die 3.3V abschaltbar zu 
machen und damit der SD-Karte von µC einen Reset verpassen zu können. 
Braucht man das nicht?

Und du hast ja direkt mein Board und bis auf den LDO alles gleicht 
angeschlossen :-)
Könntest ich den Source-Code des SD-Teils deines Projekte haben?
Wie schnell bist du mit dem direkten Anschluss?

PS:
Schickes Bild! Erst der 2te Blick fiel auf die SD ;-)

: Bearbeitet durch User
von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Frank K. schrieb:
> Alle SD-Karten müssen mit 3.3V funktionieren.
> Die schnelleren Übertragungsmodi (UHS-I) erfordern aber 1.8V. Hast Du
> das nicht, bist Du auf 25MByte/s Interface-Transferrate beschränkt. So
> wie ich das sehe, reicht das für Dich nicht.
>
> Ich vermute mal, ST sieht für UHS-I das hier vor:
>
> https://www.st.com/en/interfaces-and-transceivers/st6g3244me.html
>
> Das ist nämlich genau so ein applikationsspezifischer Levelshifter für
> SD und SDIO.
>
> fchk

Ich wundere mich warm keiner für das Nucleo-144 eine SD-Demo-Platine 
herstellt die man einfach drauf steckt und gut ist.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Marko R. schrieb:
> Ich habe den LDO eingebaut um über den EN-Pin die 3.3V abschaltbar zu
> machen und damit der SD-Karte von µC einen Reset verpassen zu können.
> Braucht man das nicht?

Doch doch, das ist eine gute Idee. So kannst du auch die Stromaufnahme 
beim Einstecken begrenzen.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Marko R. schrieb:
> Ich wundere mich warm keiner für das Nucleo-144 eine SD-Demo-Platine
> herstellt die man einfach drauf steckt und gut ist.

Weil SD Karten alles andere als unproblematisch sind. Kein hersteller 
will sich den Stress mit Support antun. Aus Asien bekommst du diverse 
SD-Karten Adapter aber ohne Support und ohne Garantie, dass sie 
funktionieren.

von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
>
> Doch doch, das ist eine gute Idee. So kannst du auch die Stromaufnahme
> beim Einstecken begrenzen.

Du hast keinen LDO drauf?
Wie machst du dann einen Reset?
Kommt man auch ohne diese Möglichkeit aus?

Den EN würde ich sonst einfach auf die 5V hängen.

Ist dein Boad dieses hier?
https://eckstein-shop.de/Waveshare-SD-Storage-Board-SD-card-Micro-SD-card-module?curr=EUR&gclid=Cj0KCQjw6575BRCQARIsAMp-ksPDIzlmxrXJ7A0Ynu-XknlnVX_sd2h7RJpIdh5N5DrF8f0n5a-CbB0aAsrAEALw_wcB

von dasrotemopped (Gast)


Bewertung
0 lesenswert
nicht lesenswert
https://www.st.com/en/evaluation-tools/stm32h743i-eval.html

Mit SD Slot gibt es von ST, aber nicht zum Nucleo Preis.

von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
dasrotemopped schrieb:
> https://www.st.com/en/evaluation-tools/stm32h743i-eval.html
>
> Mit SD Slot gibt es von ST, aber nicht zum Nucleo Preis.

Ne, das Teil ist übertrieben.
Ich mach mal 'ne Weile und hoffe heute Abend den SD am laufen zu haben.

Eine Sache noch:
Ich würde gern printf sowohl für COM als auch SD nutzen. Mir würde da 
jetzt nur einfallen eine globale Variable zu definieren und in der 
"_write" dann entsprechend umzuschalten.
Gibt es da eine elegantere Lösung?

von dasrotemopped (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Und du hast ja direkt mein Board
fast, meins ist ein STM32F7 Nucleo-144

>Könntest ich den Source-Code des SD-Teils deines Projekte haben?
ist schon ein älteres Projekt, muss ich mal schauen ob ich das noch 
finde
Aber mit CubeMX erstellt, SDMMC und FATFS mit installiert und fertig.
Und natürlich noch einen BMP Loader geschrieben. Nur Proof of concept, 
nix belastbares.

>Wie schnell bist du mit dem direkten Anschluss?
Nie einen Benchmark gemacht, das Bild von SD auf TFT laden hat 
funktioniert, das hat mir gereicht.

>PS: Schickes Bild! Erst der 2te Blick fiel auf die SD ;-)
Pressefoto von der analogen Halluzinelle.
https://de.wikipedia.org/wiki/Ijon_Tichy:_Raumpilot
Kann sein das sie noch andere Filme gemacht hat.

von dasrotemopped (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>> Mit SD Slot gibt es von ST, aber nicht zum Nucleo Preis.
>Ne, das Teil ist übertrieben.
man kann aber den Schaltplan abkupfern ...

von Marko R. (dr_marko_rocznik) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
SDMMC und FATFS habe ich im MX bereits drin.
Jetzt muss ich nur noch schauen mit welchen Befehlen ich ein File 
erzeugen und da reinschreiben kann.

Marko

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Marko R. schrieb:
> Du hast keinen LDO drauf?
> Wie machst du dann einen Reset?

Gar nicht

> Kommt man auch ohne diese Möglichkeit aus?

Habe ich bisher noch nicht gebraucht. Ich habe SD Karten aber auch nur 
für unwichtige Spielereien benutzt, die man ggf. manuell auf und wieder 
ein schalten kann. Allerdings kann ich mich daran erinnern, dass sich 
meine  Karten jemals spontan aufgehängt hätten - nachdem anfängliche 
Fehler in Hard- und Software behoben waren.

> Ist dein Boad dieses hier?

Habe kein Board verwendet, sondern was eigenes auf Lochraster und das 
CrumbX1-NET Modul von Chip45.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Marko R. schrieb:
> Gibt es da eine elegantere Lösung?

Nimm fprintf, da kannst du angeben, über welches File-Handle du etwas 
"printen" willst.

Oder (vielleicht einfacher) sprintf() da macht du die Ausgabe in einen 
Puffer (Array von Zeichen).

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.