Forum: Mikrocontroller und Digitale Elektronik USB CDC device <-> UART?


von Stefan T. (tommie)


Lesenswert?

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? :-)

von waddehaddedudeda (Gast)


Lesenswert?

Nabend,

hab bei einem Projekt den AT90USBKEY 
[http://www.atmel.com/tools/at90usbkey.aspx] zusammen mit LUFA 
verwendet, hat bestens funktioniert.

Gibt bestimmt noch andere Boards mit dem AT90USB1287, die man verwenden 
kann, wenn einem die Pinheader auf dem AT90USBKEY zu lütt sind.

MfG

von Jim M. (turboj)


Lesenswert?

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.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Der maximite macht CDC den gibt es auch  UBW.....

Es handelt sich um einen Pic32 für den es entsprechende USB-Treiber zu 
gibt.
mehr dazu findest bei http://geoffg.net/maximite.html

von Stefan T. (tommie)


Lesenswert?

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

von Uwe (de0508)


Lesenswert?

Hallo,
man kann mit diesem atMega32U2 [1] und per USB mit der LUFA Library [2] 
ein CDC bereitstellen.
Oder einen AVRISP-MKII Clone [3] aufbauen.

Link
[1] 
http://www.ehajo.de/baus%C3%A4tze/smd-baus%C3%A4tze/atmega32u2-breakout-board.html?search=atmega32u
[2] http://www.fourwalledcubicle.com/LUFA.php
[3] http://www.fourwalledcubicle.com/AVRISP.php

von Stefan T. (tommie)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

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.