Hallo, Das Endziel ist es, die Musik von der SD Karte ab zu spielen. Da ich mit der SD Karte keine Erfahrung habe, wollte ich fragen, wie ich die Adressen erfahre? Ich kopiere eine MP3 datei auf eine leere Karte. Wie kann ich jetzt erfahren, bei welcher Adresse ich die Daten lesen soll? Danke
Ich rate mal: Du willst die MP3 mit einem PC auf die Karte kopieren und dann mit einem µC wieder abspielen? Wenn ja, dann soltest du dich mal mit Dateisystemen (bei SD Karten z.B. FAT) beschäftigen.
Das steht im FAT. https://de.wikipedia.org/wiki/File_Allocation_Table Es gibt aber schon diverse Projekte, die eben das tun. http://www.elm-chan.org/works/sd20p/report.html Solche Module gibt es auch fertig zu kaufen.
Es ist also einfacher die Datei selbst auf die Karte zu kopieren, damit man weiß, wo sich was befindet?
Nils T schrieb: > Das Endziel ist es, die Musik von der SD Karte ab zu spielen. > Da ich mit der SD Karte keine Erfahrung habe, wollte ich fragen, wie ich > die Adressen erfahre? Aus dem Dateisystem. Genau dazu gibt es das. > Ich kopiere eine MP3 datei auf eine leere Karte. > Wie kann ich jetzt erfahren, bei welcher Adresse ich die Daten lesen > soll? Du liest den Header des Mediums, um die Adresse der grundlegenden Dateisystemstrukturen zu ermitteln. Dann liest du diese Strukturen und interpretierst sie. Der ganze Rest hängt allein von eben diesem Dateisystem ab.
Mit welchem Tool kann man die Datei (egal ob mp3 oder sonst was) per COM Schnittstelle zum uC übertragen? Dann würde ich einfach die Datei Byte für Byte einlesen und auf die SD Karte platzieren. Oder ich das der falsch Weg? Mir geht es momentan primär um das Lesen, also möchte ich nicht zu viel Kraft in Dateisystem investieren.
Nils T schrieb: > Oder ich das der falsch Weg? ja, warum speicherst du nicht Byte für Byte von deinem PC auf die SD-Karte?
Peter II schrieb: > Nils T schrieb: >> Oder ich das der falsch Weg? > > ja, > > warum speicherst du nicht Byte für Byte von deinem PC auf die SD-Karte? Unter Linux get das mit:
1 | dd if=[/pfad/zur/datei] bs=1 skip=[offset_einsetzen] of=/dev/[name_des_sdkartendevicefiles] |
PS: nicht das falsche Device überschreiben :)
Bis jetzt habe ich mit SD Karte nicht mehr als ein normaler "user" zu
tun gehabt.
Also Karte rein, Video drauf kopieren und woanders anschauen.
Sonst in keinem Elektronikprojekt benutzt.
Deswegen klingt
>warum speicherst du nicht Byte für Byte von deinem PC auf die SD-Karte?
für mich leider nicht verständlich :(
Ich weiß momentan, dass die Karte per SPI gelesen und beschrieben wird.
SPI beherrsche ich dagegen bestens.
Du willst sicher nicht einfach nur den Dateieinhalt über einen COM Port an den µC senden. Denn die Datei soll ja auch einen Namen haben und einen Eintrags ins Inhaltsverzeichnis bekommen. Eben dazu dienst das FAT Filesystem. Es gibt zwei Standard Protokolle zur Übertragung, beide sind USB basiert und daher für Hobbyprogrammierer eher nicht zugänglich. Aber du kannst Dir ein eigenes Übertragunstool programmieren.
Ich habe auch noch so ein Teil hier liegen: S25FL164K http://www.cypress.com/file/196886/download Das ist praktisch sogar noch besser als die SD Karte. Bleibt nur noch die Frage, wie ich die Daten da rein bekomme. Was ich einfach umsetzen könnte, wäre Byte per UART empfangen und per SPI im Flash speichern. Es hackt aber an der Stelle, dass ich kein Ansatz habe, wie ich die Datei Byte für Byte verschicke. Dateiname ist unwichtig.
Nils T schrieb: > Es hackt aber an der Stelle, dass ich kein Ansatz habe, wie ich die > Datei Byte für Byte verschicke. Dateiname ist unwichtig. du kannst doch wohl Programmieren oder nicht? Datei öffnen com-öffnen while( !Ende) Byte von Datei lesen Byte auf Com schreiben eventuell reicht es ja schon von der Kommandozeile zu schreiben cat Datei.mp3 > COM2
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.