Forum: Mikrocontroller und Digitale Elektronik SD - USB MassStorageDevice


von Sepp (Gast)


Lesenswert?

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?

von Karl (Gast)


Lesenswert?

Adapter kaufen und ausschlachten.

von Sepp (Gast)


Lesenswert?

:) Das schreibt jeder. Soll aber "serientauglich" sein.

von Sepp (Gast)


Lesenswert?

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.

von Daniel P. (ppowers)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

@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 :)

von Daniel P. (ppowers)


Lesenswert?

> 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

von Sepp (Gast)


Lesenswert?

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?!

von Christian R. (supachris)


Lesenswert?

Klar gibts das auch out of the box:

http://www.smsc.com/main/catalog/usbprods.html

Aber wie gesagt: Nur in großen Stückzahlen oder sonst sehr schwer zu 
bekommen.

von Sepp (Gast)


Lesenswert?

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 :)

von Dave (Gast)


Lesenswert?

kuck ma hier:

www.ghielectronics.com

von Sepp (Gast)


Lesenswert?

Hat eigentlich jemand Ahnung wie man SD-Karten mit dem CY7C68300 
betreibt. Ich hab nämlich keine...

von Christian R. (supachris)


Lesenswert?

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.

von Sepp (Gast)


Lesenswert?

Hab noch den hier gefunden. Leider bin ich bei der Suche nach einem 
genaueren Datenblatt wieder auf die usb222X Serie gestoßen, und die 
bekommt man ja so toll. Bin mir nicht sicher was ich davon halten soll.
 http://www.digchip.com/datasheets/download_datasheet.php?id=889294&part-number=SN11020F

von Sepp (Gast)


Lesenswert?

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?

von Daniel P. (ppowers)


Lesenswert?

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=&section=&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

von Sepp (Gast)


Lesenswert?

Gibt es auch fertige stacks für atemga µC?

von Daniel P. (ppowers)


Lesenswert?

Für den AT90USB gibts was Fertiges. Allerdings kenne ich mich nicht 
damit aus; ich bin nichtmal sicher, ob der AT90USB überhaupt ein AVR 
ist...

von Josef K. (josefk)


Lesenswert?

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.

von T.R. (Gast)


Lesenswert?

@ 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

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
Noch kein Account? Hier anmelden.