USB CDC device <-> UART?

OP #3730938
Hallo,

Ich möchte hier ein einen AVR mit einem Gerät verheiraten, das per USB 
CDC kommuniziert. D.h. ich brauche irgendetwas, das sich dem Gerät 
gegenüber als USB-Host präsentiert und die Daten des CDC-Kanals per UART 
weiterreicht.

LUFA unterstützt zwar theoretisch genau diese Hostrolle, allerdings 
nicht mit dem ATMega32U4, den ich hier noch rumliegen habe.

Kennt jemand einen günstigen Chip, den ich dafür verwenden kann? Den es 
am besten als Board und nicht nur als SMD gibt? :-)
OP
Jim Meba schrieb:
> Du bis Dir auch 100%ig sicher, das es USB CDC und nicht ein FTDI, Silabs
> oder Prolific Chip ist? Die machen alle USB VCOM, aber keins ist CDC.

Ziemlich:
1
[ 3548.104076] usb 1-1.2: new high-speed USB device number 12 using ehci-pci
2
[ 3548.207139] usb 1-1.2: New USB device found, idVendor=2108, idProduct=780b
3
[ 3548.207146] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
4
[ 3548.207150] usb 1-1.2: Product: Neato Robotics USB v2
5
[ 3548.207153] usb 1-1.2: Manufacturer: Linux 2.6.33.7 with fsl-usb2-udc
6
[ 3548.212158] cdc_acm 1-1.2:2.0: This device cannot do calls on its own. It is not a modem.
7
[ 3548.212245] cdc_acm 1-1.2:2.0: ttyACM0: USB ACM device
OP
Uwe S. schrieb:
> Hallo,
> man kann mit diesem atMega32U2 [1] und per USB mit der LUFA Library [2]
> ein CDC bereitstellen.
Du hast die Frage nicht verstanden - ich will kein CDC-*Device* bauen, 
sondern einen Host, der mit einem vorhandenen CDC-Gerät kommuniziert.
Mit dem ATMega32U2 oder U4 geht das nicht, wie man im LUFA-Code 
(LUFA/Drivers/USB/Core/USBMode.h) sieht:
1
                        #if (defined(__AVR_AT90USB162__) || defined(__AVR_AT90USB82__)  || \
2
                             defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega8U2__))
3
                                #define USB_SERIES_2_AVR
4
                                #define USB_CAN_BE_DEVICE
5
                        #elif (defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__))
6
                                #define USB_SERIES_4_AVR
7
                                #define USB_CAN_BE_DEVICE
8
                        #elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__))
9
                                #define USB_SERIES_6_AVR
10
                                #define USB_CAN_BE_DEVICE
11
                        #elif (defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__))
12
                                #define USB_SERIES_7_AVR
13
                                #define USB_CAN_BE_DEVICE
14
                                #define USB_CAN_BE_HOST
Persönliche Seite
Recht geringen Aufwand dürftest Du haben, wenn Du einen VNC1L 
("Vinculum") verwendest und in den passende Firmware hineinlädst.

Sonst müsstest Du einen anderen USB-Host-Controller verwenden und die 
Ansteuerung (den USB-Host-Stack) auf Deinem eigenen µC umsetzen. Kann 
man machen, ist aber mehr Aufwand.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.