Forum: Mikrocontroller und Digitale Elektronik Vor- und Nachteile von USB-Lösungen für ATMEL's


von Johannes M. (jo-loom)


Lesenswert?

Hallo zusammen,

zahllose ATTiny/ATMega-Applikationen erfordern eine PC-Kommunikation, 
wofür heutzutage am ehesten USB in Frage kommt.

Meines Wissens gibt es eine ganze Reihe bekannter Umsetzungen.
Die Frage, die sich mir stellt: Wo liegen jeweils die Vor- und 
Nachteile?

Ich selber habe bislang immer die Variante mit externem 
UART-auf-USB-Umsetzer gewählt.

Ich mache hier mal den Anfang und fände es klasse, wenn Ihr Eure 
Einschätzung ergänzt:

Hardware-Umsetzung mit PL2303HX Baustein:
+ Für < 3 Euro als Leiterplatte erhältlich
+ Einfachste Handhabung durch UART-Nutzung
+ Ebenso mit digitalen Portpins nutzbar
+ Keine Prozessor-Belastung / kein Speicherverbrauch
+ Funktioniert selbst für kleinste ATTiny
- Zusatz-Hardware im System erforderlich
o Vor-/Nachteile gegenüber FT232RL unbekannt

Hardware-Umsetzung mit FT232RL Baustein:
+ Für < 4 Euro als Leiterplatte erhältlich
+ Einfachste Handhabung durch UART-Nutzung
+ Ebenso mit digitalen Portpins nutzbar
+ Keine Prozessor-Belastung / kein Speicherverbrauch
+ Funktioniert selbst für kleinste ATTiny
- Zusatz-Hardware im System erforderlich
o Vor-/Nachteile gegenüber PL2303HX unbekannt

Integrierte Mikrocontroller-USB-Schnittstelle
+ Nahezu keine externe Hardware erforderlich
+ Reduzierter Software-Aufwand, da Low Level Behandlung verfügbar
- Nur bei einzelnen Derivaten verfügbar

Software USB-Lösung (z. B. V-USB)
+ Für die meisten ATMega / ATTiny implementierbar
+ Nur ca. 1 KB Code-Größe
+ Läuft mit zwei beliebigen Portpins
+ Anpassbar an diverse Taktfrequenzen
+ Lediglich ein Portpin-Interrupt erforderlich
- Deutliche Prozessorlast
- Immerhin 1KB Speicherverbrauch (relevant bei kleinsten Derivaten)

Was meint Ihr?

Gruß,
Johannes

von Wusel D. (stefanfrings_de)


Lesenswert?

Der PL2303 braucht einen Quarz und eine externe Spannungsversorgung.

Der FT232R hingegen braucht beides nicht. Er hat einen internen 
Oszillator und einen internen Spannungsregler.

Alterantive: Der CP2102 hat ebenfalls einen internen Oszillator und 
Spannungsregler.

>Integrierte Mikrocontroller-USB-Schnittstelle
>+ Reduzierter Software-Aufwand, da Low Level Behandlung verfügbar

Falsch, denn diese Schnittstelle erfordert, dass man sich mit dem USB 
Protokoll auseinander setzt und man muss einen "Treiber" für die 
Schnittstelle (µC-Seitig) programmieren. Bei USB-UART Chips entfällt 
dieser Schritt.

>Software USB-Lösung (z. B. V-USB)
>+ Anpassbar an diverse Taktfrequenzen

Das ist kein Vorteil gegenüber den anderen Methoden.
Zwei Nachteile sehe ich: Unterstützt nur USB Low-Speed (soweit ich weiß) 
und die HW Schnittstelle ist nicht Standard-Konform. Das heisst: Ob und 
wo sie funktioniert ist mehr oder weniger Glückssache.

von Frank K. (fchk)


Lesenswert?

1. Die ganzen Software-only Lösungen sind Low-Speed only und nicht 100% 
standardkonform und haben nicht den Segen des USB Implementers' Forum 
(der Standardorganisation) und werden den auch niemals bekommen. Heißt 
also: Das Zeug funktioniert oft, aber für Kundenprojekte werde ich den 
größtmöglichen Abstand halten.

2. Treiberschnittstelle
Windows mag ja nur noch zertifizierte Treiber. Wenn man externe 
USB-Brücken nimmt (USB-Seriell, USB, SPI, USB-I2C, gibts alles), dann 
muss man entweder die Standard VID/PID vom Hersteller nehmen und dafür 
in Kauf nehmen, dass man sein eigenes Gerät nicht so einfach automatisch 
identifizieren kann, oder man muss jedes Mal den für die eigene VID/PID 
angepassten Treiber neu signieren lassen, was Geld kostet.
Wenn man sein eigenes Gerät als HID darstellt, braucht man keine 
speziellen Kernel-Treiber, und Du kannst Dein Gerät zweifelsfrei 
identifizieren und musst den Benutzer nicht fragen, welcher COM-Port es 
jetzt nun ist. Für den User ist das idiotensicher. USB-HID geht aber nur 
mit einem eingebauten USB Device, nicht mit einer externen USB-Brücke.
Nachteil von USB-HID ist die begrenzte Geschwindigkeit (64kB/s), aber 
wenn seriell reicht, reicht USB-HID auch dicke. Wenn Du volle 
Geschwindigkeit brauchst, dann muss es entweder ein USB-CDC oder ein USB 
Custom Device sein.

Das sind jetzt einige spezielle Begriffe, und wenn Du USB effizient und 
unter Nutzung aller Vorteile nutzen willst, dann solltest Du dich im 
Netz auf den einschlägigen Seiten schlau machen. Dieses Forum ist nicht 
der Platz für die Vermittlung von Grundlagenwissen, sondern nur für 
einzelne konkrete Fragen.

PS: Der Microchip MCP2200 ist eine USB-Seriell Brücke, die die 
Standard-USB-Klassen CDC (für seriell) und HID (für Bit Banging) 
implementiert. Du brauchst hier keine speziellen Kerneltreiber, sondern 
für Windows nur ein .inf. An MAC und Linux geht das Teil einfach so ohne 
Treiberinstallation. Bei Windows XP vor SP3 hat Microsoft das Handling 
von USB-CDC vergurkt, aber das ist nicht die Schuld von Microchip oder 
dem USB-Standard, das ist halt MS, wenn die Standards nicht im Hause 
entwickelt wurden. Daher brauchst Du für USB-CDC auch ein .inf, auch 
wenn es technisch nicht notwendig ist. Auf dem Mac gehts ja auch ohne. 
Intern ist der MCP2200 ein vorprogrammierter PIC18F13K50 mit dem 
Microchip USB-Stack.

fchk

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Eine weitere Alternative, wenn man nur einen Virtual-COM-Port benötigt: 
FT230X. Kostet <2€ und braucht wenig Außenbeschaltung.

von Barnabas (Gast)


Lesenswert?

Nachteil: Kabelverbindung nötig. Entsprechend Unterstützung für 
drahtlose Netzwerke wäre moderner gewesen.

von Johannes M. (jo-loom)


Lesenswert?

Vielen Dank für Eure Beiträge und Euer Know How, welches Ihr zur 
Verfügung stellt!

Im Grunde genommen sehe ich nahezu keine Anwendung, bei der reine 
SW-Lösungen wirklich vorteilhaft sind. Einzig vorstellbar, wenn ein 
extremer Kostendruck vorherrscht (günstiger/kleiner ATTiny gefordert mit 
minimaler externer HW) oder der Layout-Platz einfach nicht für einen 
HW-Konverter ausreicht.

Die Controller-Derivate mit integriertem USB-Interface (z. B. 
ATMega23U4) begeistern zwar in vielen Aspekten, sind aber für 
Serienanwendungen noch arg teuer und haben mitunter auch Nachteile (z. 
B. keine 20 MHz Varianten).

Da in praktisch allen meinen Anwendungen nur mäßige Übertragungsraten 
benötigt werden (19,2 kBaud völlig ausreichend), dafür aber Rechenzeit 
und Speicher mit Bedacht genutzt werden müssen (zumeist 
Realtime-Anwendungen), läuft alles auf USB über FT232RL hinaus.

von Frank K. (fchk)


Lesenswert?

Johannes M. schrieb:

> Die Controller-Derivate mit integriertem USB-Interface (z. B.
> ATMega23U4) begeistern zwar in vielen Aspekten, sind aber für
> Serienanwendungen noch arg teuer und haben mitunter auch Nachteile (z.
> B. keine 20 MHz Varianten).

ok, dann mal auf zum Realitätscheck zu Digikey: (alles Nettopreise)

Mega324 TQFP 20 MHz + FT232RL:
768-1007-1-ND (FT232RL) 3.77€
ATMEGA324PA-AU 4.83€
Summe: 8.60€

MCP2200-I/SO-ND 1.95€ -> nur halb so teuer wie der FTDI-Chip

Zum Vergleich:
ATMEGA32U4-AU-ND  5.06€
ATXMEGA32A4U-AU-ND 2.87€ (32MHz XMega)

Gut, dass wir verglichen haben.

fchk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johannes M. schrieb:

> Ich selber habe bislang immer die Variante mit externem
> UART-auf-USB-Umsetzer gewählt.

Nachteil bei all diesen ist, dass der Controller einen RS-232-
nutzbaren Takt braucht.  Für den RC-Oszillator wird dies nicht
garantiert.

Als Alternative dafür, sofern man genügend Portpins hat: FT245.
Benimmt sich aus Sicht des Hosts wie ein FT232, benutzt aber
8 parallele Datenleitungen plus 4 Steuerleitungen zur
Kommunikation mit dem Controller.


> Integrierte Mikrocontroller-USB-Schnittstelle

- Bei einem Controller-Reset verabschiedet sich das Device vom Bus
  und muss vom Host neu eingegliedert werden (neudeutsch:
  "enumeriert")

Frank K. schrieb:
> 1. Die ganzen Software-only Lösungen sind Low-Speed only und nicht 100%
> standardkonform und haben nicht den Segen des USB Implementers' Forum
> (der Standardorganisation) und werden den auch niemals bekommen.

Nun, ohne den Segen des USB-IF wird man auskommen. ;-)

Was daran nicht standardkonform ist, ist die Nutzung einer solchen
Lowspeed-Schnittstelle als CDC (communication device class).  Das
liegt vor allem daran, dass ein CDC drei Endpunkte braucht (Daten
in beiden Richtungen plus Interrupt-EP), ein lowspeed-Device aber
nur zwei EPs zugestanden bekommt.

Ein lowspeed-Device als HID (human interface device) dürfte meiner
Meinung nach konform sein.  Viele Tastaturen oder Mäuse arbeiten
auf dieser Basis.

von Pit (Gast)


Lesenswert?

Wenn man mit grob geschätzten 20 kBytes/s auskommt, dann sollte man sich 
mal HID anschauen. Microchip (und andere sicher auch) stellt da z.B. 
fertige Demos für die Controller-Seite bereit.

Die drei entscheidenden Vorteile:
- Keine Kosten für externe Bausteine
- Extrem einfache Nutzung auf Host-Seite
- Große Flexibilität auf uC-Seite (falls man sich dann
  doch mal entschließt in USB einzuarbeiten)

von Michael A. (Gast)


Lesenswert?

Johannes M. schrieb:
> Hardware-Umsetzung mit PL2303HX Baustein:
> ...
> o Vor-/Nachteile gegenüber FT232RL unbekannt

Der Windows 8 Treiber unterstützt den Chip erst ab PL-2303HXD (HX Rev D)
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41

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.