SD Karte geht nicht

Hallo ich habe vor ein paar Jahren einen ESPuino für meinen Junior gebaut. Hat auch gut funktioniert. Jetzt wollte ich eine neue Box bauen mit den selben Komponenten wie früher. Leider bekomme ich jetzt die SD Karte ums verrecken nicht zum laufen. Ich habe alles genau so aufgebaut wie bei der anderen Box nur die Firmware ist neuer. Vielleicht kann mir ja einer von euch helfen?

Ich habe dieses SD Karten Modul. Ich habe jetzt glaube ich jede Möglichkeit bei „select SD card mode“ in der settings.h ausprobiert. Mit verschiedenen Fehlern. Den ersten PullUp Widerstand habe ich entfernt. Ich nutze dieses Board. Ich habe zwei Mosfets von Biologist verlötet. Wenn ich das Board starte liegen 3,3V an, nach einiger Zeit fällt es dann auf zw 0,8V und 1,2V ab. Angeschlossen habe ich bis jetzt nur das SD Karten Modul, die Mosfets und das MAX95357A. Ich wollte erstmal alles testen, bevor ich den rest anschließe.

Hier mal die verschiedenen Fehler bei verschiedenen konfigurationen.

#define SD_MMC_1BIT_MODE
#define SINGLE_SPI_ENABLE

E (6672) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

//#define SD_MMC_1BIT_MODE
#define SINGLE_SPI_ENABLE

[E][sd_diskio.cpp:123] sdSelectCard(): Select Failed
[E][sd_diskio.cpp:775] sdcard_mount(): f_mount failed: (3) The physical drive cannot work
[E][sd_diskio.cpp:123] sdSelectCard(): Select Failed
[ 19575 ] SD-Karte konnte nicht gemountet werden.

#define SD_MMC_1BIT_MODE
//#define SINGLE_SPI_ENABLE

E (7742) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

//#define SD_MMC_1BIT_MODE
//#define SINGLE_SPI_ENABLE

[E][sd_diskio.cpp:194] sdCommand(): Card Failed! cmd: 0x00
[E][sd_diskio.cpp:775] sdcard_mount(): f_mount failed: (3) The physical drive cannot work
[E][sd_diskio.cpp:194] sdCommand(): Card Failed! cmd: 0x00
[ 5270 ] SD-Karte konnte nicht gemountet werden.

Probiert habe ich es mit dem az-delivery-devkit-v4 und dem lolin32 env.

Ich hoffe jemand kennt das Problem und kann helfen. Ich komm einfach nicht weiter.

edit: Die Spannung am SD Karten Modul bricht auf 1,08V zusammen, Liegt aber daran, das der ESP in Deepsleep geht, weil der Bootgang (Soll vermutlich Bootvorgang heißen?!) wegen der SD Karte nicht klappt.

Bevor ich hier über Sinn und Unsinn der Kombinationen referiere…

a) Mit welchen GPIOs ist SD angebunden?
b) Mit welchen GPIOs ist RFID angebunden?

Ja das gewählte Layout muss schon zu deinem Board passen.

Sry für die Kombinationen, ich habe nur alles probiert. Ich versteh es leider nicht genau und wollte so jeden Fehler ausschließen.

Zu
a) CS=15, CLK=14, MOSI=13, MISO=16

b) SDA=21, MISO=19, MOSI=23, SCK=18

Ich weiß leider nicht genau welches Layout das richtige ist. Ich hatte bei meiner ersten Box ein kompilier Problem. Weiß aber leider nicht mehr wie ich es lösen konnte.

Daraus ergibt sich, dass weder SD_MMC_1BIT_MODE noch SINGLE_SPI_ENABLE Sinn machen.
Das Lolin32-Profil würde passen. Allerdings sei an dieser Stelle erwähnt, dass SD via SPI angebunden ist, was einerseits relativ langsam ist. Andererseits reißen beim Dateiupload via WLAN gerne mal die Datenübertragungen ab und man bekommt es nicht mit. Dann hat man unvollständige Dateien auf der SD.
Also wirklich empfehlen kann ich das nur, wenn keine Uploads per WLAN gemacht werden. Weil nur zum Abspielen wäre dieses Problem egal.

Die Daten spiele ich immer direkt auf die SD KArte, deshalb dürfte das kein Problem sein für mich. Hättest du den einen Lösungsanzatz für mich? Ich hab das ganze ja so schonmal aufgebaut und seit zwei Jahren oder so in Betrieb. Wenn beide keinen Sinn ergeben, muss ich sie also auskommentieren. Hat ja aber auch nicht funktioniert.

Ich kenne halt den Schaltplan nicht. Vielleicht sind auch Mosfets falsch eingelötet.
Im Endeffekt war der Ansatz, SD über SPI anzubinden, nur in der ersten Zeit von ESPuino aktuell. Es per SDMMC zu tun hat halt den Vorteil, dass es schneller ist und auch einen GPIO weniger benötigt.

Musst halt auf jeden Fall drauf achten, dass du das lolin32-Profil benutzt und die darin enthaltenen Einstellungen zu deinem Board passen.

Wichtig ist halt insbesondere GPIO 17, denn der steuert das Gate des N-Mosfet an, der dann das Gate des P-Mosfets auf GND zieht, so dass dieser die 3.3 V durchschaltet. Diese 3.3 V müssen halt da sein im Betrieb, weil sonst läuft z.B. SD nicht. Und ohne SD startet ESPuino nicht.

Hier mal die Bilder des Boards, da kann man den Schaltplan ganz gut erkennen. Ansonsten habe ich ihn damals nach deiner Vorlage verdrahtet. Ich geh auch davon aus, dass das passt. Ich habe das selbe Setup ja schon am laufen und das seit gut zwei Jahren.


Das Lolin Profil wird verwendet. Die GPIOs passen soweit auch. Das SD Karten Modul hat 3,3V bis der ESP in Deepsleep geht, laut Monitor.

GPIO17 geht bei meinem Schaltplan auf den 1K Widerstand, der dann auf das IRL3103 Mosfet geht.

@compactflash Du hast doch SD via SPI immer mal wieder im Einsatz. Das funktioniert grundsätzlich, oder?

@biologist
Schon länger nicht mehr . Das letzte mal ausführlicher hier. Ich wollte es immer nochmal testen weil damit keine Störgeräusche auftreten . Da ich aber neue Hardware in 4 Layer einsetzen will habe ich das nie mehr ausprobiert.

Gut, aber sieht so aus, als ob es grundsätzlich laufen müsste.
@maxxe Dann musst man alle GPIOs abgleichen. Und: Hast du auch wirklich in das passende Profil gewechselt? Bei VSC sieht man das links unten, was ausgewählt ist. Von dem, was standardmäßig in der settings.h steht, muss auf jeden Fall SDMMC deaktiviert werden. Der Rest müsste eigentlich so laufen (sofern alle GPIOs passen).

@biologist Hatte letztens SPI getestet sowohl mit Master als auch DEV-Branch, Board war Lolin D32 Pro (HAL=4) mit integrierten SD-Slot (SPI).
Funktioniert Alles, ist nur deutlich langsamer beim Web-Upload!

1 „Gefällt mir“

Profil
Hier sieht man das eingestellte Profil.

Profil2
Hier was alles eingestellt ist, hab ich aber so gelassen wie es vorgegeben ist. Ich hab nur ;board_build.flash_mode = qio auskommentiert, weil ich sonst nicht flashen konnte.


Hier die settings.h, wo ich die SD_MMC auskommentiert habe.


Und hier die GPIOs, die auch auf der Platine genau so angeschlossen sind. Ich habs extra durch gepiepst.



Hier nochmal die Leiterbahnen nach gezeichnet.

Vielleicht fällt euch ja was auf was nicht richtig ist. Ich werd als nächtes ein anderes SD Modul testen. Ich Depp hab aber alle fest verlötet und muss erst mal schaun wie ichs wieder weg bekomm. Ich hab Online noch gelesen, das es wohl probleme mit der arduino-esp32 lib ab 2.0 Probleme gibt. Aber ich glaub es wird eh die 1.6 eingebunden wenn ich das richtig gefunden habe.

Im Falle vom SD-Modul ist das gut, weil das zu sockeln führt zu Problemen.
Was ich allerdings immer sockeln würde, das ist das Develboard.

Ist es möglich, diese Software-revision: 20210930-1 herunter zuladen? Die läuft auf der anderen Box. Ich weiß sonst wirklich nicht mehr weiter.

Daraus ergibt sich:

git clone https://github.com/biologist79/ESPuino
cd ESPuino
git reset --hard 3c39718

Oder halt aus VSC heraus. Die Revision hast ja jetzt :slight_smile:

Ich habe jetzt mal diesen Arduino Sketch gefunden und auf den ESP kopiert. Er liest die Karte, schreibt eine Datei und benennt diese um. Heißt ja, dass das SD Modul funktioniert, oder? Verwendet werden die FS.h, SD.h und SPI.h lib.

Mit der alten Version funktioniert es sofort. :man_shrugging: Wie kann ich den jetzt rausfinden, welche Version noch geht und welche nicht? Kann ich Schritt für Schritt die git version hoch ziehen und testen? Iwann dürfte es ja dann nicht mehr klappen und dann könnte man schaun an was es liegt. Wenn du die Zeit dafür aufwenden möchtest.

Ja. Da hast bisschen Arbeit, hehe
Ob hoch nach reset geht weiß ich allerdings nicht. Ggf musst eher in der anderen Richtung gehen.

Also hochgehen mit --reset funktioniert. Ich bin jetzt bei Software-revision: 20211203-2 angekommen. Die geht noch. Ich werde weiter testen. Werde jetzt mal in 6 Monate Schritten hoch gehen.

Asche auf mein Haupt! Habe gerade die Revisionen durchgeschaut & hier wohl einen Copy&Paste Fehler verursacht:;-(

Es ging darum den ESPuino auch ohne SD Karte lauffähig zu machen z.B. für einen reinen Webplayer. Die Bedingung oben ist natürlich falsch. So ist es richtig:

#if !defined(SD_MMC_1BIT_MODE) && !defined(SINGLE_SPI_ENABLE)

Werde das gleich korrigieren, Sorry für diie Unannehmlichkeiten!