www.mikrocontroller.net

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


Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Trotzdem brauchst Du eine PC-Software, die den Treiber des FT2232H 
ansteuert.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennst Du so einen USB SD-CARD controller??

Gruß
Tom

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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=&...

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

Ach ja, wenns weiter nichts ist.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

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

Gruß
Tom

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Autor: Thomas Burkhart (escamoteur)
Datum:

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

Gruß

Tom

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, kannst Du ja machen. Schreibst Du auch die PC-Software?

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yep!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann...

Autor: Thomas Burkhart (escamoteur)
Datum:

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

Gruß
Tom

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich will eine fest eingeabute SD-Karte

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

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

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.