Forum: Mikrocontroller und Digitale Elektronik SD-Card über FT2232H ansprechen


von Thomas B. (escamoteur)


Lesenswert?

Hi,

bin gerade auf den FT2232H gestoßen, der könnte einige Probleme bei 
meinen Überlegungen für meinen speziellen MP3-Player lösen.

Hat einer von euch den schon mal eingesetzt um damit Daten auf eine 
SD-Card zu schreiben/lesen?

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wieso sollte man das tun wollen?
Das erfordert doch spezielle Software auf PC-Seite (denn ein FT2232 ist 
kein MSD), und ist obendrein auch noch ganz erheblich langsamer als ein 
üblicher USB-SD-Card-Reader.

von Thomas B. (escamoteur)


Lesenswert?

Ich will eine fest eingeabute SD-Karte die sonst vo AVR gelesen wird vom 
PC schnell beschreiben können. Mit dem FT2232H kann man SPI realisieren, 
also auf die SD-Karte zugreifen und zur gleichen Zeit RS232 um mit dem 
AVR zu kommunizieren.

Gruß
Tom

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Trotzdem brauchst Du eine PC-Software, die den Treiber des FT2232H 
ansteuert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sinnvoller ist es, einen USB-SD-Card-Controller zu verwenden, der 
parallel zum µC an die SD-Karte angeschlossen ist. Der µC muss 
erkennen können, wenn der USB-SD-Card-Controller mit dem PC verbunden 
wird und muss dann seine Leitungen zur SD-Karte deaktivieren 
(Hochohmig). Für diese Erkennung kann beispielsweise die 
USB-Versorgungsspannung verwendet werden.

Wird die Verbindung zum PC gekappt, kann der µC wieder auf die SD-Karte 
zugreifen.

Der SD-Card-Controller sollte natürlich so ausgelegt sein, daß er bei 
inaktivem USB die SD-Karte nicht anspricht bzw. die Leitungen zu ihr 
nicht belastet; notfalls muss das mit geeigneten Multiplexerbausteinen 
hergestellt werden.

So aufgebaut funktioniert das mit jedem PC, der ein MSD ansteuern kann 
und erfordert keinerlei Software auf der PC-Seite. Und ganz erheblich 
schneller ist es auch noch.

von Thomas B. (escamoteur)


Lesenswert?

Kennst Du so einen USB SD-CARD controller??

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nicht persönlich, aber so etwas ist logischerweise in jedem 
USB-SD-Card-Reader drin.

Und die bekannte Internetsuchmaschine spuckt beim Suchbegriff "usb sd 
card controller" unter anderem das hier aus:

http://www.genesyslogic.com/_en/product_01_1.php?id=31

Die Firma SMSC ist auch ein Kandidat, und hier 
Beitrag "Re: USB Controller CY7C63000A an SD-Card und ATMEGA" erwähnt jemand auch 
eine Bezugsquelle.

von Thomas B. (escamoteur)


Lesenswert?

Den Genesyslogic habe ich auch gerade gefunden, aber denke nicht dass 
der so einfach hier zu bekommen ist.

Der Cypress ist hat ein ATA-Interface für Compact Flash ok, aber nicht 
für SD.

Danke für die Tipps. Überlege immer noch den FTDI mit der SPI Variante 
auszuprobieren. Im prinzip muss man ja nur eine der AVR FAT 
Implemntierungen für SPI auf den PC portieren ;-)

Gruß
Tom

von Christian R. (supachris)


Lesenswert?

Thomas Burkhart schrieb:
> Den Genesyslogic habe ich auch gerade gefunden, aber denke nicht dass
> der so einfach hier zu bekommen ist.

Dann nimm den USB 2241, damit sparst du eine Menge Arbeit.
Allerdings ist dann schlecht mit gleichzeitig per RS232 ansprechen.

> Danke für die Tipps. Überlege immer noch den FTDI mit der SPI Variante
> auszuprobieren. Im prinzip muss man ja nur eine der AVR FAT
> Implemntierungen für SPI auf den PC portieren ;-)

Nuuuuur. Und dann kannst du nur mit deinem speziellen Programm auf die 
Karte zugreifen und musst auch den FTDI Treiber samt DLL drauf haben....

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Der Cypress ist hat ein ATA-Interface für Compact Flash ok, aber nicht
> für SD.

Sieh Dir mal den Beitrag genau an, den ich verlinkt habe. Nicht den 
Thread, sondern den Beitrag.

Darin wird das hier erwähnt:

http://www.smsc.com/index.php?tid=141&pid=11&cid=&tab=1

> Im prinzip muss man ja nur eine der AVR FAT
> Implemntierungen für SPI auf den PC portieren ;-)

Ach ja, wenns weiter nichts ist.

von Thomas B. (escamoteur)


Lesenswert?

Christian R. schrieb:
> Thomas Burkhart schrieb:
>> Den Genesyslogic habe ich auch gerade gefunden, aber denke nicht dass
>> der so einfach hier zu bekommen ist.
>
> Dann nimm den USB 2241, damit sparst du eine Menge Arbeit.
> Allerdings ist dann schlecht mit gleichzeitig per RS232 ansprechen.
>
Und genau das brauche ich auch, dann müste ich gleich noch eiknen 
USB-HUB mitdraufsetzen....


>> Danke für die Tipps. Überlege immer noch den FTDI mit der SPI Variante
>> auszuprobieren. Im prinzip muss man ja nur eine der AVR FAT
>> Implemntierungen für SPI auf den PC portieren ;-)
>
> Nuuuuur. Und dann kannst du nur mit deinem speziellen Programm auf die
> Karte zugreifen und musst auch den FTDI Treiber samt DLL drauf haben....

Ist mir shcon klar, für meine Anwendung aber durchaus wünschenswert wenn 
man nicht mit dem Windows Explorer auf die SD Karte schreiben kann.

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

>> Nuuuuur. Und dann kannst du nur mit deinem speziellen Programm auf die
>> Karte zugreifen und musst auch den FTDI Treiber samt DLL drauf haben....
>
> Ist mir shcon klar, für meine Anwendung aber durchaus wünschenswert wenn
> man nicht mit dem Windows Explorer auf die SD Karte schreiben kann.

Wenn das so ist - dann reiche doch einfach die zu schreibenden Daten an 
den µC durch, der ja sowieso schon die Karte ansteuern kann. Dann kannst 
Du den ganzen Aufriss sparen und musst nicht auch noch auf dem PC eine 
SPI-Ansteuerung der Karte nebst FAT-Treiber implementieren.

von Thomas B. (escamoteur)


Lesenswert?

Da wurde mir aber gesagt, dass das Schnarch langsam wird wenn ich ein 
paar MB übertragen will. Siehe oben.

Gruß
Tom

von Thomas B. (escamoteur)


Lesenswert?

Ich probier das jetzt einfach erst mal über den AVR und schau wie 
langsam es wird. Sonst probier ich das mit dem FT2232H mal aus.

Gruß
Tom

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Nadelöhr ist die SPI-Geschwindigkeit des AVR, die günstigenfalls 
10MBit ist. Darüber muß man sämtliche Kommandos dudeln und der AVR muß 
ja dann auch noch rechnen. Ja, das wird schnarchlangsam. Dann nimm doch 
besser die Karte aus dem Slot und stecke sie in einen CardReader am PC 
oder in den Laptop. Schneller geht´s nicht.

von Thomas B. (escamoteur)


Lesenswert?

Ich will abr nicht, dass die Karte von außen zugänglich ist. Ok, fürs 
erste ist da ne Lösung, aber später muss dass anders werden.

Gruß
Tom

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Richtig schnell ist aber nur der 4-Bit Modus mit extra 
USB-SD-Controller. Mit AVR als Zwischenglied kann man´s vergessen.

von Thomas B. (escamoteur)


Lesenswert?

@Travel: Nee, ich ich will das eine Interface  des FT2232H direkt als 
SPI an die SD Karte anbinden.

Gruß

Tom

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja, kannst Du ja machen. Schreibst Du auch die PC-Software?

von Thomas B. (escamoteur)


Lesenswert?

Yep!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Na dann...

von Thomas B. (escamoteur)


Lesenswert?

Eventuell werde ich einfach ELM Chans FAT nehmen und anpassen. Wenns tut 
poste ich es hier.

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was lässt Dich annehmen, daß die SPI-Variante mit dem FT2232 auch nur 
ansatzweise so schnell wäre, wie die des AVR?

Das ist sie nicht. Absolut und gar nicht.

von Thomas B. (escamoteur)


Lesenswert?

Wieso? Laut Datenblatt

MPSSE.Multi-Purpose Synchronous Serial Engines (MPSSE), capable of 
speeds up to 30 Mbits/s, provides
flexible synchronous interface configurations.

Wäre immerhin 3xSo Schnell wie ein AVR alleine.
Gruß
Tom

von ... (Gast)


Lesenswert?

> Ich will eine fest eingeabute SD-Karte

was verstehst du eigentlich unter "fest eingebaut"?
Direkt anlöten oder doch einen Slot?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas Burkhart schrieb:
> Wieso? Laut Datenblatt
>
> MPSSE.Multi-Purpose Synchronous Serial Engines (MPSSE), capable of
> speeds up to 30 Mbits/s, provides
> flexible synchronous interface configurations.
>
> Wäre immerhin 3xSo Schnell wie ein AVR alleine.

Das ist die reine Taktrate. Du musst aber die Daten auch an den PC 
übertragen bekommen bzw. den PC dazu bringen, welche zu senden. Und da 
kommt die USB-Trägheit ins Spiel, die nur im Millisekunden-Raster 
Operationen auf dem USB zulässt. Und obendrein das Betriebssystem, das 
zwischen einzelnen Schreib- und Lesevorgängen, die per Usermode-Programm 
durch den Devicetreiber geschleust werden können, einen Taskwechsel 
erfordert. Unter Windows geschehen die im 10 msec-Takt, sofern nicht mit 
den Multimediatimern die Schedulergranularität verändert wurde.

Und damit wird das ganze verdammt langsam.

Mit ziemlicher Sicherheit noch langsamer als das der AVR mit seinen 
"nur" 10 MHz SPI-Takt hinbekommt.

von Christian R. (supachris)


Lesenswert?

Rufus t. Firefly schrieb:

> Das ist die reine Taktrate. Du musst aber die Daten auch an den PC
> übertragen bekommen bzw. den PC dazu bringen, welche zu senden. Und da
> kommt die USB-Trägheit ins Spiel, die nur im Millisekunden-Raster
> Operationen auf dem USB zulässt.

Der FT2232H arbeitet mit USB 2.0 HighSpeed, hat also 125µs Microframes. 
Allerdings ist das Konzept trotzdem fragwürdig, weil die Latenzen und 
der Overhead viel zu hoch sind. Für sowas gibts das USB Mass Storage 
Protokoll.

von Thomas B. (escamoteur)


Lesenswert?

Das würde dann aber heißen, dass ich einen Hub brauche und eben einen 
USB-SD Controller, da ich zu der Mass storage noch RS232 brauche.

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja.

Die Alternative wäre ein anderer µC, der USB-Device ist und beide 
USB-Gerätefunktionen selbst anbieten kann.

von Thomas B. (escamoteur)


Lesenswert?

Dann müsste es aber schon ein deutlich schnellerer als ein AVR sein und 
es musse ne ganze Menge USB-Software geschrieben werden.

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, Implementierungen sowohl von MSD als auch CDC sind als 
Quelltextbeispiele für entsprechende µCs verfügbar. Von Null an muss man 
da also nicht anfangen.

Hier eine Anlaufstelle für die AVR-basierenden Controller mit 
USB-Interface:

http://www.fourwalledcubicle.com/LUFA.php

von Thomas B. (escamoteur)


Lesenswert?

@Rufus: An einen USB-AVR hatte ich auch schon gedacht, aber hat der 
nicht genau das gleiche Problem was die Performance beim Schreiben auf 
die SD-Card angeht, wie wenn ich einen FT-Controller an einen normalen 
AVR hänge?

Gruß
Tom

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ziemlich sicher nicht, da auf der PC-Seite die Nutzung des VCOM-Treibers 
sowie das darüber abgewickelte von Dir zu implementierende Protkoll für 
Dateiübertragungen entfällt, und auf der Hardwareseite entfällt dir 
Nutzung der seriellen Schnittstelle zur Kommunikation FT2232<-->µC.

von Christian R. (supachris)


Lesenswert?

Für sowas bietet sich der Cypress FX2 ja schon fast an. Der hat ja den 
HighSpeed Device Controller, der universell programmierbar ist. Da 
kannst du auch ein USB Verbundgerät erstellen, in dem ein 
Kommunikationsmudul (am einfachsten über HID) und eben das MSD sitzt. 
Klar, 8051 Programmierung ist krank, aber machbar ist es.

von Thomas B. (escamoteur)


Lesenswert?

Dann vielleicht doh eher ein ARM derivat? Oder?
Bisher hab ich halt auf AVR gesetzt. Aber vielleicht ist ein  USB-AVR ja 
ne gute Variante.

Gruß

Tom

von Mars (Gast)


Lesenswert?

@Christian R
Wie willst du den FX2 an die SD Karte anbinden? GPIF und Slave FIFO 
unterstützen ja nur 8 bzw. 16 Bit Interfaces.

von holger (Gast)


Lesenswert?

>Dann vielleicht doh eher ein ARM derivat? Oder?
>Bisher hab ich halt auf AVR gesetzt. Aber vielleicht ist ein  USB-AVR ja
>ne gute Variante.

Oh man, je mehr du da einbaust desto länger wird es
dauern bis du mal fertig wirst. Mach nen Push-Pull Sockel
für die SD rein und bespiel das Teil vom PC aus.
SD Card Reader gibts im USB Stick Format. Und die
sind mindestens zehn mal schneller als jeder AVR.

Zum ARM: Im SPI Mode nützt dir auch ein ARM wenig.
Die Karten sind dort einfach langsam. Selbst wenn du
im Multiblock-Mode sendest. Wenn schon ARM dann einer
mit echtem SD Karten Interface. Dann wirds aber wohl sehr
schwer deine beiden MP3 Player AVR mit anzukoppeln.
Der ARM sollte also auch diese beiden AVR ersetzen.
Und USB Interface sollte der dann auch haben. Dann aber
High-Speed. Sonst bremst der USB Teil wieder.

von Thomas B. (escamoteur)


Lesenswert?

@Holger: Ich denke ein SPI-Interface an sich sollte schon ok sein. 
Schließlich geht es in meiner Anwendung nicht darum dauernd große 
Datenmengen draufzukopieren.
Ich probiere einfach mak aus, was ich auf diese Weise so drüberbekomme.

Danke & Gruß
Tom

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.