Hallo zusammen,
ich bin gerde auf der Suche nach einer Möglichkeit meine bestehende
Platine mit einer Möglichkeit zu versehen, den eingebauten SD Speicher
mittels USB als MSD anzusprechen.
Momentan kommuniziere ich über SPI mit der Karte, was auch gut
funktioniert, aber die Möglichkeit bequem und ohne Mittelsmann µC vom PC
aus darauf zugreifen zu können ist schon verlockend.
In anderen Threads habe ich gelesen, dass der Cypress CY7C68013A recht
gut sein soll. Das Ganze ist mir aber ein bißchen überdimensioniert,
finde ich, und bin daher auf der Suche nach einem Chip, der ohne zutun
meines µC zwischen PC und SD Karte fungiert und noch dazu klein, billig
und in kleinen Stückzahlen lieferbar ist. (eine eierlegene Wollmilchsau
eben) Leider habe ich noch nichts gefunden. Hab ihr da nen Tipp?
Am einfachsten wäre es, glaube ich, wenn es einen Chip gäbe, der ein
SPI-Master Interface hat. Damit könnte ich direkt auf die SD schreiben
lassen und mit ner Logik den CS abfragen und damit meinen µC verbieten
darauf zuzugreifen.
Hab aber noch keinen gefunden.
Ich habe kürzlich ein MassStorageDevice auf einem PIC18F67J50
realisiert. Ist zwar nur FullSpeed-USB, dafür ist der Chip aber sehr
billig. Der PIC18F4550 ist sogar noch etwas pflegeleichter.
gruß
daniel
Mit dem Cypress FX2 wäre gar keine schlechte Lösung, die Quellcodes für
das MSD gibts bei Cypress, ist zwar ATA, aber da muss man ja "nur" den
untersten Teil anpassen, und die Sektoren nicht von ATA sondern von SD
Karte lesen/schreiben. Ansonsten natürlich fertige Chips aus Fernost,
aber die sind nur in großen Stückzahlen zu bekommen. SMSC wäre ein
Kandidat.
@Daniel
Der PIC18F4550 scheint mir ja ein vollwertiger µC zu sein. Das ist mir
zu viel. Wollte eigentlcih etwas, was "selbstständig" arbeitet.
Prinzipiell einfach einen umsetzter. Das wird mit sons tzu viel. Oder
hab ich das falsch interpretiert?
@Christian
Die Quellcodes für das MSD umschreiben... Davon hab ich doch keinen
Dunst :)
> Wollte eigentlcih etwas, was "selbstständig" arbeitet.> Prinzipiell einfach einen umsetzter. Das wird mit sons tzu viel. Oder> hab ich das falsch interpretiert?
Nunja... der 18F67J50 benötigt (abgesehen von den üblichen
Kondensatoren) keinerlei externe Komponenten und kann (MSD-Firmware
vorausgesetzt) die Massenspeicheroperationen selbständig durchführen.
Natürlich musst Du die Firmware vor der Benutzung in den PIC brennen,
aber wenn die Software erst einmal steht kommen doch keine weiteren
Kosten hinzu (außer natürlich der Aufwand um den IC zu flashen). Oder
interpretiere ich da grad irgendwas falsch?
Oder meinst Du mit "selbständig" einen Chip, der out-of-the-box auf die
Platine gelötet wird und dann direkt funktioniert? Dann führt natürlich
kein Weg an den Spezial-ICs für Cardreader vorbei...
gruß
daniel
Ja, ich wollte eigentlich nicht noch weitere Controller auf dem Board
haben, die ich flashen muss.
Ich suche sozusagen diesen "out-off-the-box" funktionierenden Chip, der
direkt mit meiner SD-Karte kommunizieren kann. Eben, wie du schon
sagtest, wie in einem Cardreader. Will aber nicht zwingend für jede
Platine extra nen Cardreader zerlegen müssen um an den Chip zu kommen.
Sowas muss es doch auch zu kaufen geben?!
Den hab ich mir heute auch schon mal angeschaut, aber ich dachte da
noch, dass es minimalistischere lösungen giebt.
Naja. Jetzt frag ich einfach mal nach ob ich n Sample haben kann und wie
die Stückzahlen bei denen sind :)
Sepp wrote:
> Hat eigentlich jemand Ahnung wie man SD-Karten mit dem CY7C68300> betreibt. Ich hab nämlich keine...
Gar nicht. Der 300er ist nur für ATA-Geräte. CF-Karten gehn prima,
Festplatten auch.
Also ich gebe auf. Scheint wirklich nicht so schön und einfach zu
funktionieren wie ich dachte.
Die beste Lösung ist wohl immer noch der von Daniel vorgeschalgene
18F67J50 mit MSD Firmaware.
Btw: @Daniel
Könntest du die Firmware hier als Download bzw. Link posten, oder ist
das dein Werk und du möchtest es lieber nicht posten?
Sorry, meine MSD-Firmware funktioniert zwar schon zuverlässig, es wird
aber noch ein wenig dauern, bis ich die Sache veröffentlichen kann. USB
ist leider nicht besonders trivial, entsprechend ist das ein großer
Batzen Code, der noch kommentiert werden will. Zudem führe ich gerade
die Portierung auf den C18 Compiler durch.
Auf der Microchip-Seite gibt es ebenfalls eine MSD-Firmware für den
PIC18F4550, wenn Du alles entsprechend der Application Notes aufbaust,
wird diese Lösung ebenfalls quasi "out of the box" funktionieren ;-)
Hier der Link:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1999&ty=&dty=§ion=&NextRow=&ssUserText=mass%20storage
Der Nachteil: Die Lese- / und Schreibgeschwindigkeiten sind bei solchen
Lösungen im Vergleich zu Spezial-ICs natürlich geringer. Mit meiner
Firmware komme ich z.B. nur auf ~400kB/s lesend und max. 180kB/s
schreibend. Allerdings bestehen noch Optimierungspotentiale
(PingPong-Buffering, usw....)
Gruß
daniel
Also ich bin auf das Projekt MyUsb gestoßen.
http://www.fourwalledcubicle.com/MyUSB.php
Wie man in solch jungem Alter schon so tolle Sachen schreiben kann...
(Neid)
Naja. Ich schreib darauf gerade die Dataflash_Read() und
Dataflash_Write() Funnctionen um, so dass es mit SD Karten funktionieren
soll. Ist eigentlich nicht viel Stress glaube ich. Sobald ich zu meinem
Hex auch ne Hardware habe und das ganze testen konnte, werde ich hier
mal was posten.
@ Daniel P.,
habe das selbe auf einem ARM7-SAM von Atmel gemacht. Was erreichst du
für effektive Datenraten? Also ich kann in Windows mit ca. 700KB/s
lesen/schreiben. ARM->SD->MSD