Hallo zusammen
Ich bin einen Mp3 Player am machen mit SD / MMC Karten und einem
PIC16f87x. Da der PIC nicht viel internal RAM hat (vorallem für das
FAT16 system) besorgte ich mir ein SPI fähiges externes flash ram von ST
(M25P80 8mbit um genau zu sein), nun lesen kann ich ohne problem, ich
kann auch schön das Status register auslesen, und es macht auch sinn.
Doch das schreiben bereitet mir noch mühe, wenn ich einlese bekomme ich
immer auch für das byte das geschrieben werden sollte 0xFF zurück. 0xFF
ist der Anfangs zustand des Speichers. Ich wäre sehr dankbar wenn jemand
mir ein ratschlag geben könnte oder schnell in den Source und das
Datasheet zu schauen!
Vielen Dank!
Grüsse Tom
link zum datasheet
http://www.alldatasheet.com/datasheet-pdf/pdf/103477/STMICROELECTRONICS/M25P80-VMW6G.html
Lesen kannst du? Bist du dir da sicher? Wenn du nur 0xFF liest, dann
heißt das noch lange nicht, dass es korrekt ist.
Ich habe das gleiche Flash in einem Biosignal Generator verwendet. Soll
ich dir den Code schicken?
Aber ich würde kein Flash zum Speichern des FAT Systems verwenden, es
sei denn du liest es nur einmal aus und schreibst es nur einmal... Flash
Bausteine kann man zwar recht häufig beschreiben, aber irgendwann ist
Schluss... Aber abgesehen davon sind Flash sehr langsam, vor allem beim
Schreibzyklus. SPI Flash sowieso. Ich habe mir auch einen MP3 Player
gebaut und ich verwende 1MB externes SRAM und 512kB Flash. Alles mit
separatem Adress- und Datenbus. Ich lese die FAT32 Einträge nur Ordner
weise aus und das soll relativ schnell gehen, also wirds im SRAM
gespeichert. "Gleichzeitige" Ansteuerung von Display, Codec und
Festplatte ist bereits in diesem Fall eine Herausforderung und stößt an
seine Grenzen. Verwende jedoch einen PIC der größer, schneller und
besser ist als deiner.
Das Flash dient als zusätzlicher Programm- und Datenspeicher
(Konstante...)
Ich bin mir ziemlich sicher das ich lesen kann, wenn ich mir das ganze
mit dem oszilloscop anschaue, dann krieg ich als antwort immer einfach 8
taktzyklen high am ausgang(dann noch ne welle bis es wieder auf 0 V ist,
soll ich ein pull down einbauen um dies zu verhindern?)
Ich bin mir auch am überlegen ein neuen processor zu suchen, jedoch bin
ich mir nicht sicher ob ich ein pic18 oder ein 32bit atmel nehmen
sollte, was würdest du empfehlen für jemand der sich beim pic16
auskennt? Und was für ein sram würdest du empfehlen, und mit welcher
ansteuerung, parallel oder seriel?
Das ganze mit dem mp3 hab ich mir so vorgestellt, ich schreibe alle
wichtige FAT16 informationen ins Flash, dann noch alle datei namen inkl.
ID3 tags und cluster location etc. Dann lese ich pro "play - zyklus"
genau 1 mal das zeugs ein. Das problem mit dem lesen schreiben wäre erst
gekommen wenn ich dann nach artist etc gesortet hätte. Aber deine lösung
gefällt mir auch!
Ich wäre sehr intressiert an deinem source für das Biosignal Generator,
also für den flash!
Vielen dank für deine Hilfe
Grüsse Tom
Ich werd dir den Code erst am Freitag schicken können. Bin jetzt in der
Arbeit und mach einen 48er...
Ich bin PIC Fan, weil ich dafür sämtliche Entwicklungstools besitze.
Debugger, Compiler, Evalkits... free samples.
Wenn du mehr Leistung brauchst würde ich einen PIC24 oder DSPic nehmen
oder einen ATMEL. Wenn ATMEL dann gleich einen SAM7 oder ähnliches.
Ich verwende einen PIC18F8722 und steuere das SRAM über das externe
Speicherinterface an. ATMEL hat so etwas nicht, da muss man eben mit den
Pins "manuell" toggeln. Da es aber nur Speicher für FAT Einträge sind
ist das sicherlich nicht so ein großer Nachteil. Was du brauchen wirst
ist viel Programmspeicher. Mein MP3 Player ist high-sophisticated und
sicherlich Top was Funktionsumfang betrifft. Mit 128k Programmspeicher
wird’s da auch schon recht knapp.
Parallel oder seriell? Natürlich parallel, ist schneller… außerdem weiß
ich nicht, ob es serielle SRAMs überhaupt gibt. Sollte es so etwas
geben, dann ist das teuer und schwer erhältlich.
Warum FAT16? Würde FAT32 nehmen, dann ist es wenigstens mit den neueren
Betriebssystemen kompatibel.
Wie bringst die Daten auf die Festplatte?
Ich würde aus Performancegründen immer nur das lesen was du wirklich
brauchst. Wenn du also im Root Verzeichnis bist, wäre es nicht sehr
sinnvoll, wenn du auch sämtliche Einträge von den Unterverzeichnissen
liest. Folglich musst du relativ oft die FAT Table auslesen und
abspeichern. Deswegen Finger weg vom Flash. Flash Speicher kannst du
verwenden um irgendwelche Einstellungen des Players zu speichern. Z.b.
Kontrasteinstellung fürs Display, Treble/Bass Einstellung… Die meisten
PICs haben ein internes EEPROM, dieses kannst du für diese Zwecke
anstelle des Flash verwenden (vorausgesetzt du kommst damit aus). Aber
für die FAT G’schichten und ID3 Sachen definitiv nur SRAM verwenden.
ID3 musst du aber nicht speichern. Wenn du dein Verzeichnis auflistest
und am Display ausgibst, ich nehme an, dein Player hat so etwas, dann
willst ja nur die Dateinamen angeben oder ID3 auch? Wenn nicht, dann
solltest du ID3 erst auslesen wenn du die Datei zum Decoder schickst.
Hier mein MP3 Player
http://www.poms-engineering.at/html/index.php?lang=de&inc=projects_mp3_player
Einen MP3 Player zu bauen ist nicht so trivial wie jeder sagt. Wenn du
etwas Besonderes haben möchtest dann musst du dir vorher sehr viele
Gedanken machen. Mein Player z.B. ist für den Batteriebetrieb absolut
untauglich. Seine Größe ist für portable Dinge unbrauchbar. Ich wollte
einen MP3 Player für Heim und Auto, der nicht nur MP3 abspielen kann
sondern auch als Steuergerät für irgendwelchen Zusatzschnickschnack
verwenden werden kann. Und genau das habe ich mir gebaut…
Wenn du Hilfe brauchst, ich unterstütze dich gerne.
Hab gerade das Datasheet vom PIC18F8722 angeschaut und ich muss sagen,
ich bin begeistert! Du hast geschrieben das es eval boards gibt, welches
kannst du mir empfehlen? Sollte wenn möglichst in Europa sein, da ich in
der Schweiz wohne.
Die I/Os gehen verloren wenn man ein SRAM anschliesst nehm ich mal
schwer an, oder hast du die pins doppelt verwendet? Dann zum downloader,
was hast du benutzt? Für den PIC16 benutze ich im moment ein PPF87x
downloader, der für den PIC16f87x gemacht wurde, kann es auch sein das
der gehen würde für den 18er?
FAT16 sollte bei mir reichen, da es noch keine SD Karten gibt mit über 2
Giga Speicher.
Wenn es keine gescheite eval kits gibt, werde ich mal versuchen das
ganze zu verdrahten, dafür bräuchte ich aber noch TQPF adapter, gibt es
sowas in Europa, am besten nicht bei reichelt, könnte man solche sachen
über dich beziehen?
Grüsse und vielen dank für deine Hilfe!!!!
Tom
Also kommt drauf an was du haben möchtest. Ich habe ein Evalboard für
den PIC18LF8722 selbst entwickelt. Obwohl entwickelt kann man das nicht
nennen...
Das Board besitzt eine 3.3V und 5V Versorgung. Über Jumper läßt sich der
Controller also unterschiedlich betreiben.
Es ist sowohl eine ICD Schnittstelle drauf als auch eine herkömmliche
Programmierschnittstelle.
Resetbeschaltung und sämtliche Pins auf Stiftleisten geführt. Also nix
aufregendes. Den ganzen Schnickschnack wie Displays, Taster... hab ich
auf einem Steckboard und schließ es über Kabel an die Stiftleisten des
Boards.
http://www.poms-engineering.at/images/shop_microcontroller_pic18f8x2x_evalboard_assembled.jpg
Ich könnte dir auch ein Evalboard mit VS1002 (MP3 Decoder) anbieten.
Sämtliche Steuersignale sind über eine Stiftleiste abgreifbar und kann
somit direkt an das PIC18LF8722 Board angeschlossen werden.
Oder den gesamten MP3 Player... jedoch willst du diesen ja selbst
entwickeln.
IOs gehen natürlich verloren wenn du es fürs SRAM verwendest, aber die
IOs brauchst sowieso zum HDD ansteuern und über etwas externe Logik kann
man SRAM und HDD am gleichen Bus betreiben.
Was ist das für ein Downloader?
Ich lade es via FTP runter (noch in Entwicklung), sagte doch
high-sophisticated.
Achso du verwendest SD... ich habe eine Festplatte.
Wenn du eine SD Karte hast, dann kannst die ganzen Flash-basierenden
Dinge doch in die SD Karte pfuschen!?
Genau sowas wie das Eval board hab ich gesucht! Falls du eins loswerden
willst dann schreib mir doch ne emal an tkurmannATgeosig.com und schreib
doch bitte gleich wieviel du dafür verlangst, und wieviel das board mit
dem VS1002 kosten würde! Ein neuen downloader zu finden ist
warscheinlich kein problem, als compiler brauch ich ein CC5X, welches
ein gängiges standard hex kreiert.
Das mit der SD Karte war meine 2 Idee, doch ich hatte noch ein Flash ram
im geschäft rumliegen, und wolltes mal probieren.
Vielen dank nochmals
Grüsse
Tom
Okay mach ich. Morgen Abend bzw. Freitag früh genug?
Bestückt oder unbestückt? Teilweise bestückt?
Lieferbar wäre alles sofort. Von Österreich in die Schweiz etwa 7
Werktage.