Programación C/C++/C# para conectar USB a microcontrolador PIC

Soy un estudiante de ciencias de la computación que busca hacer algo de programación de microcontroladores PIC para algunos proyectos pequeños en el hogar. Domino C/C++/C#/Java y también tengo conocimientos de programación de microprocesadores (ALP - el 8086). Planeo construir una interfaz USB para controlar algunas luces y un motor en uno de mis proyectos. Tengo los componentes del circuito y el diseño planeado. Tengo el PIC 18f4550 en mente y ya he descargado las bibliotecas del sitio web de microchip. El único problema es que no sé qué código escribir para esto. Las bibliotecas son enormes y realmente no necesito entrar en todos los detalles (eso es lo que creo). Traté de encontrar otros recursos, pero parece que el PIC es antiguo y la mayoría de los enlaces fuera de Google solo han sido callejones sin salida. ¿Alguien sabe de un blog, un video, o algo que pueda ayudarme a empezar? Espero que sea posible hacer esto usando uno de los idiomas que mencioné anteriormente.

¿Le echaste un vistazo a los ejemplos proporcionados con la biblioteca USB de Microchip? Cuando busque en Google, intente no buscar solo PIC18f4550, sino ejemplos de PIC18f USB en general. Los dispositivos PIC18 son lo suficientemente similares como para transferir (la mayoría) el código USB de uno a otro.
Si no le importa no subir la curva de aprendizaje de USB, usar un chip/conector/cable USB FTDI puede ser la forma más fácil de obtener un PIC en USB. ftdichip.com/FTProducts.htm y digikey.com/PTM/…
¿Nadie menciona MPLAB X aquí? ¿Me estoy perdiendo de algo?

Respuestas (3)

En primer lugar, debe echar un vistazo a los ejemplos proporcionados con Microchip USB Framework (parte de las bibliotecas de aplicaciones de Microchip ). Los documentos dan algunas descripciones sobre las demostraciones individuales. En mi opinión, el archivo de ayuda en sí está un poco oculto, pero puede encontrarlo en<YourInstallLocation>\Microchip\Help\MCHPFSUSB Library Help.pdf

Para comenzar y dependiendo de cómo desee que aparezca su dispositivo en la PC anfitriona, revisaría el código de las siguientes demostraciones:

  • Dispositivo - Demostración básica de CDC
  • Dispositivo - HID - Demostración personalizada

Ambos indican en la descripción que pueden ejecutarse en la 'Placa de desarrollo USB de bajo número de pines', que utiliza un PIC18F14K50 . El PIC18F4550 debe ser lo suficientemente similar para permitirle transferir la mayor parte del código, tal vez incluso todo.

Otro enfoque, como recomendó kenny , es usar un IC que maneje la mayoría de las cosas USB por usted. Una opción popular son los de FTDI . Cuando toma el FT232R , conecta el UART de su microcontrolador al IC. Escribir código para transmitir/recibir datos ahora es mucho más sencillo.

Similar al FT232R es el IC MCP2200 fabricado por Microchip. Cuál elija es una cuestión de gusto (y tal vez soporte de controlador).

+1 por descargar el dolor a un chip FTDI. La vida es demasiado corta para rodar su propia pila USB a menos que le paguen por hacer exactamente eso y no aceptarán FTDI como respuesta. Hay muchos más problemas "divertidos", como cómo colocar un ladrillo en la nariz.

Construcción de un dispositivo USB PIC18F

He usado su biblioteca C# y funciona muy bien y es fácil de usar. Se puede ampliar o modificar fácilmente para satisfacer cualquier necesidad que tenga. Sus tutoriales también son muy completos y fáciles de entender y, por lo general, responde rápidamente en los foros si tiene preguntas.

Como ya mencionó PetPaulsen, revise todo el código y los proyectos de muestra proporcionados por Microchip. No necesita entender cómo funciona el protocolo USB. Realmente solo necesita modificar el archivo principal y el archivo usb_descriptors para que todo funcione.

Puede probar el código de http://tomeko.net/miniscope.php?lang=en Hay una "Demostración de HID genérica" ​​ligeramente simplificada de muestras de Microchip (se eliminaron algunas secciones de código redundantes de múltiples placas) para MPlab + C18 y consola más antiguos. Proyecto basado en Code::Blocks para Windows (conmutación de LED, botón de lectura, ADC de lectura). Si no necesita muchos GPIO, pruebe con un PIC18F2550 más pequeño. Dicho esto, no creo que estos MCU sean competitivos en este momento con, por ejemplo, STM32F042F (paquete TSSOP20, dispositivo USB sin cristal externo, más memoria, cargador de arranque USB en ROM) o STM32F103 (las miniplacas están disponibles solo por $ 4, UART -cargador de arranque basado).

Tenga en cuenta que para PIC18F2550/4550 probablemente necesite comprar un programador (a menos que tenga una PC antigua con RS-232 adecuado para conectar un programador simple de estilo JDM).