Comunicación entre un dispositivo USB / serie y un microcontrolador AVR (atmega / Arduino)

4

Tengo un dispositivo que proporciona un puerto USB. Si lo conecto a una PC con Windows, se reconoce como "CP2103 USB a UART Bridge Controller". De acuerdo con la documentación del dispositivo, debe comunicarse en formato serial a 38400bps.

Tengo que hablar con este dispositivo con un microcontrolador atmega.

Dado que el pinout del USB es diferente de la UART serie de la uC, en primer lugar pensé que necesitaría un circuito para convertir las señales. Encontré el proyecto AVR-CDC y coloqué un CDC-232 para convertir USB ( GND , D+ , D- , VCC ) a RS232 ( TX , RX , GND ):

Parahacerlo,utilicéotroatmega328comouC,flasheadoconelhexágonoespecífico,conuncristalde16Mhzenlugardelde12Mhzespecificadoeneldiagrama.

LuegoconstruíotrocircuitoparaconvertirlaseñalRS232aTTL:

Por lo tanto, la conversión de señal debería ser USB - > RS232 - > TTL.

Programé mi uC para enviar algunos datos al dispositivo y puedo seguir la señal con el osciloscopio hasta que entre en el CDC-232, luego lo pierdo. No tengo salida en los pines 4 y 5 del CDC-232 uC, donde debería tener una señal USB.

¿Mi enfoque general es correcto? ¿Debo seguir depurando la parte CDC-232 o hay algún problema en otra parte?

    
pregunta etuardu

3 respuestas

3

Si su dispositivo se muestra como un CP2013 cuando lo conecta al puerto USB de una computadora, y desea reemplazar su computadora con un Arduino, eso no es realmente fácil o generalmente no es posible. Los métodos que menciona en la pregunta tienen que ver en dónde está el dispositivo AVR / Arduino, no el Host.

El dispositivo ya tiene un convertidor USB-UART incorporado y solo muestra el lado USB. Esto significa que su arduino debe funcionar como un host USB. El funcionamiento como host USB no es sencillo. Debe configurar un controlador de host / concentrador USB y descubrir cómo manejar la pila de protocolos USB para hablar con el dispositivo USB-UART compatible con CDC. El uso de un controlador USB OTG Host puede ser un poco más fácil, pero aún así no es tan fácil. Lo mejor 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 alguna otra pieza de hardware o firmware que se hace pasar por un CP2013, entonces no tiene suerte.

    
respondido por el Chintalagiri Shashank
1

CP2103 es un puente de USB a UART, habla en niveles TTL, no necesita nada extra 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 debe ser así:

PC --usb-- CP2103 --rx / tx-- MICROCONTROLLER

Configure su microcontrolador para que emita algo a través de UART y podrá verlo en un programa de terminal de comunicaciones en serie en su PC.

    
respondido por el miceuz
-1

primero debe programar la clase completa de cdc en su microcontrolador , una llamada anterior sei () llamando a usbinit () y otra función de configuración usb .. inténtalo de nuevo ..!

    
respondido por el morteza

Lea otras preguntas en las etiquetas