studio que programador programacion microcontrolador linea libreria como comandos c++ windows usb

que - Programación C++ USB



programacion avr (5)

¿Qué tipo de microprocesador y qué tipo de placa?

Muchos procesadores vienen con soporte para puertos USB. Además, algunas tarjetas de hardware vienen con controladores USB también.

Por ejemplo, el procesador que está utilizando mi tienda viene con dos controladores USB que pueden actuar como concentrador o como dispositivo. Incluso estamos agregando otro procesador para que actúe como un controlador USB.

Soy nuevo en la programación de hardware (especialmente en USB), así que tenga paciencia conmigo y con mis preguntas. Estoy utilizando C ++ y necesito enviar / recibir algunos datos (una matriz de bytes) a / desde un puerto USB en una placa de microprocesador.

Ahora, he hecho algo de programación de puerto serie antes y sé que para un puerto serie tiene que abrir un puerto, configurar, realizar una E / S y finalmente cerrar el puerto. Supongo que usar un puerto USB, no es tan simple como lo que mencioné anteriormente.

Sé que quiero usar los controladores estándar de Microsoft e implementar los comandos estándar de Windows IO para lograr esto, ya que creo que no hay controladores para la placa del microprocesador con los que pueda interactuar.

Si alguien me puede orientar en la dirección correcta en cuanto a los pasos necesarios para "hablar" con un puerto USB (abrir, configurar, i / o) a través de los comandos estándar de Windows IO, realmente lo apreciaría y lo apreciaría enormemente. ¡¡Muchas gracias!!


Descubra el conjunto de chips USB utilizado en la placa del microprocesador, por ejemplo, Ftdi, Cypress, etc. Estos fabricantes suministran controladores, bibliotecas y programas de ejemplo para las comunicaciones; esta es la forma más fácil.

No hay controladores "estándar" como tales a menos que su placa esté configurada como un dispositivo HID, sin embargo, si está utilizando Windows, Microsoft suministra un controlador "genérico" de WinUSB.sys que puede o no satisfacer sus necesidades (no apoyo a las transferencias isócronas).


En caso de que escriba un controlador para el dispositivo USB que se adjuntará. Si conoce el tipo de chip que tiene la entrada / salida USB en la placa, el controlador será para ese dispositivo.

Es posible que ya haya controladores para ese chip si es un STM o puede haber una API para ayudar a desarrollar controladores para él. Probablemente sea un dispositivo personalizado, pero debería revisar los tipos de dispositivos para ver si hay un tipo existente que coincida con su dispositivo. Si es así, también puede haber un controlador para él que puede usar. La información sobre el tablero es necesaria.

ESCRIBA SU PROPIO CONTROLADOR Sin llegar demasiado lejos, debería conocer el modelo de controlador de Microsoft, la diferencia entre el modo de usuario y los controladores de modo de kernal, qué representan los nodos de controlador, la jerarquía de controladores y cómo se conectan entre sí, diferentes tipos de controladores (filtro, función, bus), cómo se comunican los controladores del kernal con la interfaz de usuario, las bibliotecas de vínculos dinámicos, los marcos y las API, el marco / API WDM, las API de KMDF y UMDF, y esto es solo una breve lista.

O puede utilizar un controlador existente.

UTILICE EL CONTROLADOR SUMINISTRADO POR EL MICROCONTROLADOR USB No sabemos qué firmware está utilizando el microcontrolador USB, si corresponde. Si no hay firmware (si el chip viene sin él o depende de eprom para almacenarlo y no flash), entonces sabríamos si el chip es compatible con el cargador de arranque usb, puede actualizarlo o cargar su firmware a través del USB y hay No hay necesidad de JTAG u otros periféricos. Es probable que solo el usb sea capaz de despegar del suelo y de cualquier lugar desde allí. Típicamente, este tipo de preguntas surgen cuando se consideran las tarjetas sin un microcontrolador USB.

Aquí hay un enlace a un controlador ligeramente relacionado. La mayoría de los microcontroladores USB tienen el propósito de cambiar la comunicación USB a UART, ya que la mayoría de los microcontroladores que realmente piensan y controlan todo no están equipados con USB i / o, sino que UART u otros pines de i / o como I2C o SPI, etc.

https://www.silabs.com/products/mcu/Pages/USBXpress.aspx

Ese controlador puede funcionar, si no es algo similar, pero para el fabricante de su microcontrolador USB; seguramente hará el trabajo Espero que esto ayude.


Por programación de hardware, ¿quieres decir que estarás programando el microcontrolador? Si es así, no hay forma de usar "controladores de Windows estándar" o algo así.

El estándar USB es muy grueso. Mira here

Es un tema muy complicado y recomiendo encontrar implementaciones USB ya creadas para su microcontrolador. (que podríamos encontrar si nos dio más información)


USB en pocas palabras es una excelente lectura de fondo.

Para un módulo USB genérico, pruebe LibUSB que incluye algunos ejemplos de hablar con dispositivos estándar. LibUSB-Win32 es el puerto de Windows de esa biblioteca.

Sin embargo, tienes razón, no es tan simple como un puerto RS232.

¿Qué microprocesador estás usando? ¿Viene con algún hardware USB o está pensando en intentar implementarlo todo en software (no es algo que recomiendo siquiera contemplar )? Muchos microprocesadores vienen con muestras de código que pueden emular dispositivos USB HID simples, como teclados / ratones, etc., que puede usar como punto de partida. Si eso falla, probablemente haya algunas opciones disponibles que le ahorrarán muchos dolores de cabeza :-)