M5CardComputer SD-Card: Unterschied zwischen den Versionen

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen
Peter (Diskussion | Beiträge)
Peter (Diskussion | Beiträge)
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:<br>
In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:<br>
[[file:sdcard_init_01.png]]
[[file:sdcard_init_01.png]]
<br>
Die Übersetzung in Micopython sieht dann so aus:
Die Übersetzung in Micopython sieht dann so aus:
<pre>
<pre>
Zeile 19: Zeile 20:
# Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL]
# Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL]
</pre>
</pre>
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.
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.
<br>
Die Fehlermeldung: [Errno 22] EINVAL] tritt wohl an verschiedenen Stellen auf. Sie deutet darauf hin, dass ein falscher Wert übergeben wurde.


== SD-Card formatieren==
== 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.<br>
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.
Mit den Dateifunktionen aus dem Modul os funktionierte der Zugriff auf die SD-Card sofort problemlos.
== Zugriff auf die SD-Card==
Mit den Dateifunktionen aus dem Modul '''os''' funktionierte der Zugriff auf die SD-Card sofort problemlos.<br>
Sie ist als '<nowiki/>'''/sd'''' ins Filesystem eingehängt.


==Navigation==
== Ein Beispiel==
 
<pre>
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 anlegen 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)
</pre>
Da die Datei mit '''with''' geöffnet wird muss sie nicht geschlossen werden. Das macht '''with''' im Hintergrund wenn der '''with-Block''' verlassen wird.
 
== Aus der M5Stack Doku==
Die SD-Card muss wohl gemountet werden. Bei meiner ging es auch ohne, war vielleicht Zufall?
<br>
Das Thema '''slot''' muss ich noch mal bearbeiten!
<pre>
import machine, os
 
# Slot 2 uses pins sck=18, cs=5, miso=19, mosi=23
sd = machine.SDCard(slot=2)
os.mount(sd, "/sd")  # mount
 
os.listdir('/sd')    # list directory contents
 
os.umount('/sd')    # eject
</pre>
 
== Navigation==
[[M5CardComputer|Zurück zur '''M5CardComputer''' Startseite]]
[[M5CardComputer|Zurück zur '''M5CardComputer''' Startseite]]

Aktuelle Version vom 19. April 2024, 16:43 Uhr

https://community.m5stack.com/topic/6128/cardputer-sd-card-issues-how-to-format/6

SD-Card initialisieren[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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 anlegen 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.

Aus der M5Stack Doku[Bearbeiten | Quelltext bearbeiten]

Die SD-Card muss wohl gemountet werden. Bei meiner ging es auch ohne, war vielleicht Zufall?
Das Thema slot muss ich noch mal bearbeiten!

import machine, os

# Slot 2 uses pins sck=18, cs=5, miso=19, mosi=23
sd = machine.SDCard(slot=2)
os.mount(sd, "/sd")  # mount

os.listdir('/sd')    # list directory contents

os.umount('/sd')     # eject

Navigation[Bearbeiten | Quelltext bearbeiten]

Zurück zur M5CardComputer Startseite