Tengo un dispositivo que proporciona un puerto USB. Si lo conecto a una PC con Windows, se reconoce como un "Controlador de puente USB a UART CP2103". De acuerdo con la documentación del dispositivo, debería comunicarse en formato serial a 38400bps.
Tengo que hablar con este dispositivo con un microcontrolador atmega.
Dado que el pinout USB es diferente del UART serial de la uC, primero pensé que necesitaría un circuito para convertir las señales. Encontré el proyecto AVR-CDC y puse un CDC-232 para convertir USB ( GND
, D+
, D-
, VCC
) a RS232 ( TX
, RX
, GND
):
Para hacerlo usé otro atmega328 como uC, flasheado con el hex específico, con un cristal de 16Mhz en lugar del de 12Mhz especificado en el diagrama.
Luego construí otra pieza de circuito para convertir la señal RS232 a TTL:
Entonces, la conversión de señal debe ser USB -> RS232 -> TTL.
Programé mi uC para enviar algunos datos al dispositivo y puedo seguir la señal con el osciloscopio hasta que ingresa al CDC-232, luego lo pierdo. No tengo salida en los pines 4 y 5 del CDC-232 uC, donde debería tener señal USB.
¿Es correcto mi enfoque general? ¿Debería seguir depurando la parte CDC-232 o hay algún problema en otro lugar?
Si su dispositivo aparece como un CP2013 cuando conecta el dispositivo al puerto USB de una computadora y desea reemplazar su computadora con un Arduino, entonces eso no es realmente fácil de hacer, o generalmente posible. Los métodos que menciona en la pregunta tienen que ver donde el AVR/Arduino es el dispositivo, no el Host.
El dispositivo ya tiene un convertidor USB-UART incorporado y solo muestra el lado USB. Esto significa que su arduino necesita funcionar como un host USB . Funcionar como host USB no es sencillo. Debe configurar un controlador USB Host/Hub y descubrir cómo manejar suficiente pila de protocolos USB para comunicarse con el dispositivo USB-UART compatible con CDC. El uso de un controlador de host USB OTG puede ser un poco más fácil, pero aún no está cerca de ser trivialmente fácil. Su mejor apuesta sería ver si puede omitir el CP2013 en el dispositivo y acceder a las líneas UART directamente. Esto puede no ser siempre posible. Si el CP2013 es en realidad otra pieza de hardware o firmware disfrazada de CP2013, entonces no tiene suerte.
CP2103 es un puente USB a UART, habla en niveles TTL, no necesita nada adicional para comunicarse con él. Debe conectar los pines TX, RX, GND del microcontrolador a los pines RX, TX, GND de la placa CP2103. Su configuración debería ser así:
PC --usb-- CP2103 --rx/tx-- MICROCONTROLADOR
Configure su microcontrolador para generar algo a través de UART y podrá verlo en un programa de terminal de comunicaciones en serie en su PC.
primero debe programar la clase completa de cdc en su microcontrolador, antes de llamar a sei () llamando a usbinit () y otra función de configuración de usb ... intente nuevamente ...!
ratones
PedroJ