Forum: Mikrocontroller und Digitale Elektronik welches ist das einfachste "USB-Kochrezept"?


von Carsten P. (papa_of_t)


Lesenswert?

Liebe Mit-Bastler,

ich habe mich etwas belesen zum Thema USB am AVR und 3 generelle Ansätze 
gefunden: mit dem AVR selbst (wenn er USB hat),

mit schnellem Assembler-Programm
http://www.obdev.at/products/avrusb/index.html

oder mit externen Chips (FT232, "Vinculum" usw.)

Viele von Euch haben schon Erfahrung auf dem Gebiet, daher die Frage, 
welche Variante Eurer Meinung nach einfacher (wieviele km Quelltext) und 
welche bastelfreudiger (SMD, extra Boards benötigt, Beschaffbarkeit, 
Preis) ist.

Ich will Sektoren von CF-Karten per PC mit USB lesen und später evtl. 
auch schreiben. Die Anbindung der Karten an den uC habe ich im Griff 
(also vom uC aus kann ich Sektoren lesen und scheiben). Jetzt brauche 
ich eine PC-Anbindung, aber der uC muß trotzdem auch (parallel, aber 
nicht gleichzeitig) auf die Karte zugreifen können. Ich will aus 
Performance- und anderen Gründen nicht mit FAT oder Laufwerksbuchstaben 
arbeiten (dann könnte ich einfach einen Kartenleser nehmen), sondern vom 
PC aus will ich einfach eine Routine / dll oder was auch immer aufrufen 
wie

lies_sektor_vom_usb_geraet(zu_lesende_Sektornummer, 
Puffer_fuer_die_Daten)

und der uC soll die Daten von der Karte sozusagen an den PC/USB 
"durchreichen". Wie man das notwendige Protokoll dazu auf dem uC 
integrieren müßte, ist mir auch noch nicht klar, aber dazu wäre es 
schön, wenn Ihr Eure Erfahrungen kurz schildern könntet, oder auch, wenn 
etwas sehr mühsam war..

danke vorab!

von Logasta (Gast)


Lesenswert?

Also ich habe sowas (zwar mit MMC aber egal) schonmal mit einem Silabs 
8051 (F34x) gemacht. Die haben einen gute USB Implementierung und auf 
www.silabs.com gibt es auch viele AN zu dem Thema.

Außerdem hab ich auch einen FT232RL benutzt als USB->Seriell Wandler. 
Handhabung sehr einfach, da du am PC einfach einen Com-Port hast und am 
µC den normalen UART nutzt.

Zu AVR/ARM USB-Implementierung kann ich leider nix sagen. Aber ich halte 
es so, bei viel USB-Transfer (und relativ wenig Rechenlast)nutze ich 
einen F34x (der mit immerhin 48MHz schon was kann), bei einfacheren 
Aufgaben einen FTDI (Statusausgabe etc.), wobei ich über den FTDI auch 
schon >1Mbps geschossen habe.

von Joe (Gast)


Lesenswert?

Deinem Link folgend "Fully USB 1.1 compliant low-speed device". Wenn ich 
das richtig Seh dann ist das IGOR Plug gegen Cash.

Was ich bestätigen kann ist die "low speed", very low. Ich denke das 
kommt nicht in Frage für deine Anwendung.

von kai (Gast)


Lesenswert?

es gibt noch zwei implementierungen wie igor plug, dessen methode 
übrigens auch in den atmel appnotes steht. eine kostet teilweise, die 
andere ist hier mal im forum aufgetaucht, wenn ich recht erinnere.

von Carsten P. (papa_of_t)


Lesenswert?

Danke für Eure Hinweise! Die Lösung mit "Silabs F34x" sieht 
professionell aus, aber so gar nicht bastelfreundlich (Beschaffung, 
spez. Board, SMD, spezielle Programmierung), oder? Ich bin ja kein Profi 
mit Profi-Budget..

Ich hab inzwischen noch eine andere Idee: Ich nehme doch einen einfachen 
Kartenleser und bau mir eine Art "Umschalter", so daß entweder der uC 
oder der PC die Karte ansprechen kann. Bischen fummelig aber sollte 
gehen.

Andere Ideen? - herzlich willkommen!

von Jörg (Gast)


Lesenswert?

Ich halte das mit dem Kartenleser für am Sinnvollsten. Auch damit kann 
man Sektoren lesen/schreiben (das Dateisystem macht schließlich der PC 
und nicht der Kartenleser).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wichtig ist hierbei nur, daß der µC "die Pfoten" von der Karte lassen 
muss, wenn der Kartenleser am PC angeschlossen ist. Der nämlich bekommt 
es nicht mit, wenn ihm "hinterrücks" auf der Speicherkarte 
herumgeschrieben wird. Also: Sobald erkannt wird, daß der Kartenleser am 
PC hängt (USB-Versorgungsspannung auswerten o.ä.), sofort den Betrieb 
des µC einstellen und erst nach Trennung des Kartenlesers vom PC wieder 
aufnehmen.

von Logasta (Gast)


Lesenswert?

Für den F34x ist ein bisschen was nötig. Bekommen tut man sie recht gut 
(auch als Sample) z.B. bei DigiKey oder Mouser. Farnell wenn man geld 
rausschmeißen möchte. Zusätzlich braucht man aber noch von Silabs den 
Debugger ($49). IDE ist kostenlos und unterstützt SDCC.

Am schnellsten ist aber die Variante mit dem Kartenleser.

von Propper (Gast)


Lesenswert?

> Zusätzlich braucht man aber noch von Silabs den Debugger ($49).

Das ist der alte Adapter mit RS232. Der neuere USB Debug Adapter kostet 
aktuell bei Mouser nur noch $35 und bei DigiKey EUR 27,13.

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.