M5CardComputer SD-Card
https://community.m5stack.com/topic/6128/cardputer-sd-card-issues-how-to-format/6
SD-Card initialisieren
Bevor wir eine SD-Card benutzen können, muss das Gerät erst initialisiert werden.
In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:
Die Übersetzung in Micopython sieht dann so aus:
import os, sys, io import M5 from M5 import * from hardware import * import time from hardware import sdcard sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12) # sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12, freq=1000000) # Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL]
Sonderbarer Weise gibt das Original eine Fehlermeldung. Siehe Auskommentierte Zeilen im Listing. Nach dem Entfernen der Frequenzangabe erscheint sie nicht mehr. Es funktionierte aber auch mit der Fehlermeldung.
Die Fehlermeldung: [Errno 22] EINVAL] tritt wohl an verschiedenen Stellen auf. Sie deutet darauf hin, dass ein falscher Wert übergeben wurde.
SD-Card formatieren
Ich habe keine Möglichkeit gefunden die SD-Card im M5CardComputer zu formatieren. Deshalb habe ich sie unter Linux Mint formatiert und gleich ein Verzeichnis mit einigen Dateien darauf kopiert.
Zugriff auf die SD-Card
Mit den Dateifunktionen aus dem Modul os funktionierte der Zugriff auf die SD-Card sofort problemlos.
Sie ist als '/sd' ins Filesystem eingehängt.
Ein Beispiel
import os, sys, io import M5 from M5 import * from hardware import * import time from hardware import sdcard # sdcard initialisieren sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12) # Datei anlegeb und 2 Zeilen hineinschreiben with open('testdatei', 'w') as f: f.write('Erste Datei auf SD Card!\n') f.write('2. Zeile\n') # Eine weitere Zeile anhängen with open('testdatei', 'a') as f: f.write('Noch eine Zeile drangehängt.\n') # Datei zeilenweise auslesen und anzeigen with open('testdatei', 'r') as f: for zeile in f: print(zeile)
Da die Datei mit with geöffnet wird muss sie nicht geschlossen werden. Das macht with im Hintergrund wenn der with-Block verlassen wird.