Interfaz USB con microcontrolador PIC con código
INTERFAZ USB con MICROCONTROLADOR PIC: El propósito de este artículo es crear un concepto sobre la interfaz USB para el microcontrolador PIC. El programador se utiliza por primera vez para cargar el código en el microcontrolador y después de eso podemos cargar directamente el código en el microcontrolador a través de este circuito más simple. PIC18F2550 y PIC18F4550 son famosos por su módulo USB.
Tabla de Contenidos
USB (Bus Serie universal)
Es la conexión más común utilizada para conectar una computadora a diferentes dispositivos, como cámaras digitales, impresoras, escáneres y discos duros externos, etc.
VELOCIDADES DE TRANSFERENCIA USB
USB 1.0 Admite velocidades de transferencia de datos de:
- 5 Megabits por segundo Mbps (baja velocidad), utilizados para Dispositivos de entrada humana, por ejemplo, teclado, ratón, joysticks, etc.
- 2 Mbps (alta velocidad) utilizados para impresoras, escáneres, etc.
USB 2.0 conocido como USB de alta velocidad y capaz de soportar una velocidad de transferencia de hasta 480 Mbps.
USB 3.0 También conocido como USB de súper velocidad y admite velocidades de transferencia de hasta 5,0 gigabits por segundo (Gbps).
USB 3.1 También conocido como super speed+ y capaz de soportar velocidades de transferencia de hasta 10 Gbps.
USB Tipo C Su conector se conecta a «hosts y dispositivos».
SALIDA DE PIN USB:
Los pasos principales de este proyecto son:
Paso#1 Generación de reloj
Paso#2 Construcciones de circuitos
Paso#3 Programación del Microcontrolador
Paso#4 Grabación del código en Microcontrolador
Paso#5 Controladores de dispositivo
Paso#6 Funcionamiento del circuito
GENERACIÓN de RELOJ para USB la interfaz con el microcontrolador pic
P18F2550/4550 admite velocidad baja (1,5 Mb/s) y Velocidad completa (12 Mb/s), por lo que para USB tenemos que seleccionar un reloj específico. Se requiere un reloj interno de 6 MHz o 48 MHz debido a los requisitos de sincronización impuestos por USB.Pero hay un problema en el uso del cristal de 48MHz. Este cristal es de alto costo y también crea ruido. Como más alto es el cristal, mayor será el ruido.Hay numerosas opciones para lograr el requisito de reloj del módulo USB que aún proporcionan flexibilidad para registrar el resto del dispositivo desde la fuente del oscilador primario.Aquí, el oscilador de cristal utilizado con PIC18F4550 para la interfaz USB es un oscilador de cristal de 20 MHz. Se utiliza para la oscilación interna del microcontrolador y está conectado a 13 y 14 pines de MCU.
CONFIGURACIÓN de BITS PARA interfaz USB con microcontrolador pic
En el caso de cristal de 20 MHz:
- Establezca la «Selección del oscilador» en HSPLL. Dará 20 MHz en la entrada de»oscilador primario»
- Establezca la » selección de pre-escalador PLL «para dividir por 5, por lo que obtenemos 4 MHz que se multiplican por 24 para obtener los 96 MHz para USB
- Establezca la» selección de reloj USB «a 96 MHz dividido por 2
- Establezca la» Selección de post-escalador de reloj del sistema » a 96 dividido por dos.
Finalmente, la frecuencia del oscilador se establece en 48 MHz. (96 MHz/2 = 48 MHz
Circuito de interfaz USB con microcontrolador pic
Haga el diagrama de circuito como se muestra en el esquema:
- El voltaje de entrada a un microcontrolador PIC18F4550 nunca debe exceder los 5 V.
- El oscilador de cristal utilizado es un oscilador de cristal de 20 MHZ que está conectado a 13 y 14 pines.
- Pin corto 11 y 32 juntos a 5v, del mismo modo pin 12 y 31 a TIERRA. Pero aquí MCU tiene conexiones integradas.
- Los dos led están en RD0 y se agrega resistencia RD1 y 1 kΩ a cada LED. Se utilizan para el propósito de comunicación solo para ver que existe la comunicación USB.
- Mediante este circuito de interfaz USB vamos a controlar 2 pines, RD2 y RD3.
- Un interruptor es para el botón de reinicio y está conectado con el pin 1.
- Otro interruptor es para la carga de arranque conectado con el pin 37.
Los led encendidos (RD2, RD3) se utilizan como pines de control, pero estos pines de control también se pueden usar para controlar otras cosas. Se puede interconectar fácilmente con el controlador de motor L293D, el motor de CC, el Motor paso a paso , los interruptores de relé, el servo, etc.
Esquema en Proteus
LA programación DEL MICROCONTROLADOR PIC
El código para la interfaz USB con el microcontrolador se muestra a continuación. Pero para usar este código, también debe agregar el controlador del dispositivo. Antes de usar este código, el usuario debe crear el controlador de dispositivo USB yendo a herramientas de Mikro C para pic y hacer clic en el terminal HID y generar descriptor.archivo c y pegue este archivo en su carpeta de código principal.
unsigned char readbuff absolute 0x500; // Buffers should be in USB RAM, please consult datasheetunsigned char writebuff absolute 0x540;char cnt;char kk;void interrupt(){ USB_Interrupt_Proc(); // USB servicing is done inside the interrupt}void main(void){ ADCON1 |= 0x0F; // Configure all ports with analog function as digital CMCON |= 7; // Disable comparators HID_Enable(&readbuff,&writebuff); // Enable HID communication while(1){ while(!HID_Read()) ; for(cnt=0;cnt<64;cnt++) writebuff=readbuff; while(!HID_Write(&writebuff,64)) ; }}
El código para el microcontrolador está escrito con algún software especial que tiene un lenguaje de programación propio similar a C, por ejemplo: mplab, software microC. El código se compila a continuación en una salida respectiva. En este proceso el».se genera un archivo hexadecimal que se quemará / fusionará en el microcontrolador.
GRABAR EL CÓDIGO EN EL MICROCONTROLADOR
La salida cargada en la EPROM del microcontrolador se llama firmware. Necesitamos un hardware especial para fusionar este código de salida (archivo hexadecimal) en la MCU. El programador JDM es un ejemplo de este dispositivo que se utiliza para cargar el archivo hexadecimal en la MCU. Es fácil de hacer y barato.Después de cargar, desconecte el PIC18F4550 del programador (carga del código hexadecimal por primera vez) e insértelo de nuevo en el circuito de interfaz USB.Después de esto, tenemos que proporcionar el conductor.
No tenemos que seguir este paso (uso del programador) cada vez que cargamos el firmware (archivo hexadecimal). Una vez que el firmware base se carga en el chip, podemos actualizar el archivo hexadecimal de salida directamente con el circuito de desarrollo de la interfaz con el software smallbootloading.
CONTROLADORES DE DISPOSITIVO PARA interfaz USB con microcontrolador pic
Conecte el cable USB del ordenador a la interfaz USB. Incluso después de completar el circuito y también la programación en el microcontrolador, no comenzará a funcionar correctamente. Como sabemos, la nueva instalación de hardware requiere un controlador para Windows para que el sistema lo detecte.
Para la instalación de controladores y la operación de carga de arranque, necesitamos descargar e instalar el MARCO de MICROCHIP USB desde el sitio web de microchip.
FUNCIONAMIENTO DEL CIRCUITO de interfaz USB
Para iniciar el circuito, tenemos que inicializarlo en modo de carga de ARRANQUE. En el circuito de interfaz USB, como ya se ha explicado, hay dos botones, uno es el botón SET y otro es el botón BOOTLOAD.
- MANTENGA presionado el botón Conjunto
- Mantenga presionado el REINICIO y, a continuación, presione el botón Cargar una vez
- Y suelte ambos botones.
- La ventana detectará el hardware USB PICI8F4550 y pedirá controladores para este circuito/placa IC18F4550.
- Si la ventana no pide controladores, puede haber algunos problemas con el circuito.
- Supongamos que los controladores de este dispositivo USB se encuentran en
C:\MCUSB\MCUSB Driver \ Debug
Cuando Windows solicite controladores, vaya a búsqueda manual de controladores y busque la carpeta de ubicación mencionada anteriormente para Controladores.Después de instalar los controladores, el Led 1 y el Led 2 (conectados en RD0 y RD1) comenzarán a parpadear alternativamente, lo que significa que nuestro circuito USB se comunica perfectamente con nuestro PC.Después de instalar los controladores, cada vez que conectemos este circuito con nuestro ordenador, no necesitamos presionar los botones reset o bootload y los LED comenzarán a parpadear alternativamente.Ahora la placa de circuito de interfaz USB está lista, y podemos CARGAR nuestro propio archivo hexadecimal en el chip Directamente desde la PLACA USB (sin programador JDM).
No es necesario utilizar un programador (circuito de grabación) para grabar el firmware (archivo hexadecimal) en el PIC18F4550. El programador JDM se utiliza solo para la programación por primera vez del código y para otras etapas podemos usar un Software de carga de arranque para grabar nuevo código directamente desde el circuito de interfaz USB a la MCU. Ese MCU se puede utilizar para otros circuitos específicos para los que se diseñó el código de salida.