Hallo,
ich möchte gerne mit einem ESP32-Wroom-32 und ESP-IDF Daten von einer SD-Karte lesen.
Dazu habe ich einen mikroSD-Karten-Modul wo man über SPI kommunizieren kann.
Verbunden habe ich das Modul an HSPI und mit dem 3,3 V vom ESP-Board.
Jetzt habe ich das Beispiel sdspi (esp-idf-v5.4) genommen und die Pins aus der Konfig angepasst. Dennoch bekomme ich einen Fehler
1
I (317) main_task: Started on CPU0
2
I (327) main_task: Calling app_main()
3
I (327) example: CONFIG_EXAMPLE_FORMAT_IF_MOUNT_FAILED: 1
4
I (327) example: CONFIG_EXAMPLE_DEBUG_PIN_CONNECTIONS: FALSE
Die Fehlermeldung ist sehr ausführlich und gibt Hinweise, was Du Dir
ansehen solltest.
Hast Du irgendwas davon berücksichtigt?
die erste Fehlermeldung sagt mir, dass keine SD-Karte drinn ist.
Die ist aber eingelegt.
Die zweite sagt, dass ein pull-up resistor vorhanden sein soll.
Da lese ich aber immer unterschiedliches. In den ganzen Tutorials ist nirgends ein Widerstand eingesetzt.
Von wo nach wo (und wie groß) müsste dieser denn sein?
Von wo nach wo (und wie groß) müsste dieser denn sein?
Eine der Fehlermeldungen verweist auf "readme.md". Hast Du da
reingesehen?
(Ich kann das nicht für Dich, weil ich da erst mal rauskramen müsste,
was auch immer Du Dir da für Libraries zusammengeklickt hast)
Zusammengeklickt habe ich nichts. Ich habe eins zu eins das Beispiel genommen und die Pins angepasst.
1
Although it is possible to connect an SD card breakout adapter, keep in mind that connections using breakout cables are often unreliable and have poor signal integrity. You may need to use lower clock frequency when working with SD card breakout adapters.
die habe ich auf 400 khz gesetzt
Pins (siehe Anhang)
Wobei bei mir
MISO auf GPIO12
CS auf GPIO15
SCK auf GPIO14
MOSI auf GPIO13
If your host and slave device are on separate boards, replace one of them with a board that has pull-ups. For the list of Espressif's development boards with pull-ups, go to Development Boards.
5
6
Attach external pull-ups by connecting each pin which requires a pull-up to VDD via a 10 kΩ resistor.
aber auch mit 10kOhm bekomme ich die selben Fehler
Damit hatte ich auch gekämpft:
SD_MMC.h benutzt den ESP32 MMC Code, ist etwas schneller.
SD.h ist allgemeiner und benutzt standarmässig HSPI, kann aber eine grössere Anzahl dateien gleichzitig öffnen(wenn konfiguriert).
Wichtig ist das immer die richtige von 4 internen SPI Engines verwendet wird, Nummer 1 und 2 werden Intern benutzt.
Hier meine Test mit auskommmentieten Fehlern.
1
//#define VSPI 3 //SPI 3 bus normally attached to pins 5, 18, 19 and 23, but can be matrixed to any pins
2
SPIClass SD_SPI = SPIClass(VSPI); // Neither HSPI nor VSPI=CYD seem to work
3
//SPIClass SD_SPI = SPIClass(BOARD_SDCARD_MISO,BOARD_SDCARD_SCK,BOARD_SDCARD_MOSI,BOARD_SDCARD_CS); // Neither HSPI nor VSPI seem to work
SD_MMC 1-bit mode bei ESP32 funtioniert nur bei feste pinbelegung ! Da kan mann nicht ueber die pin matrix andere pins auswahlen ! Nur folgende pins functionieren :
#define SDCARD_SS 13
#define SDCARD_CLK 14
#define SDCARD_MOSI 15
#define SDCARD_MISO 2
SD_CARD_MISO wird nicht genutzt, soll aber mit ein pullup initialisiert werden.
Oder du verwendet SPI mode, dort sind die pins frei wahlbar.
Siehe auch https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/sdmmc_host.html
Dir ist klar das der Reader auf 5 Volt läuft und der ESP32 mit 3,3 Volt
?
mhh, war davon ausgegangen, dass die Signale trotzdem mit 3V laufen würden.
habe jetzt einen SD-karten adapter direkt angeschlossen. Damit scheint es dann zu funktionieren.
Für die Spannung nehme ich dann jetzt natürlich nur die 3,3V