Por lo que parece, uart y usb son solo dos formas diferentes de comunicación digital, por lo que parece que si solo programa un microcontrolador para aceptar uart a través de un par de pines io y apaga usb en un par de otros pines podría hacer un uart al puente usb sin comprar nada. Algo así como traducir idiomas. ¿Así es como funciona? ¿Me estoy perdiendo de algo? Estoy usando un pic16f84a.
Cualquier IC de puente USB a UART que vea en el mercado ya es una MCU que tiene firmware comprometido permanentemente (puede estar en Flash o ROM). Estos también suelen tener un bloque periférico UART y USB dedicado en el chip. El uso de software puro para implementar UART y el protocolo de nivel de línea USB limita severamente las posibilidades de velocidad y, en general, no sería práctico.
Muchas de las MCU más modernas que tienen periféricos de controlador USB integrados tendrán notas de aplicación disponibles y un código de referencia que muestra cómo construir un puente USB UART. En algunos casos, esto solo se convierte en parte de una aplicación mucho más grande que se ejecuta en la MCU. En particular, si tiene una MCU de 200 MHz y 32 bits, esto se vuelve muy práctico incluso para admitir un RTOS y el procesamiento de tareas para una aplicación además de la funcionalidad del puente.
Nota: Una MCU que funciona de esta manera como puente se denomina dispositivo USB de clase CDC.
si solo programa un microcontrolador para aceptar uart a través de un par de pines io y apaga usb en un par de otros pines, podría hacer un puente uart a usb sin comprar nada. Algo así como traducir idiomas. ¿Así es como funciona?
No precisamente. Desde un alto punto de vista teórico de la informática, desde una vista de 20.000 pies, podría parecer así. Sin embargo, en realidad es bastante diferente.
El UART es un protocolo de transferencia serie primitivo, INICIO+cambio de ocho bits+DETENER, sin estructuras, direcciones, corrección de datos ni reconocimiento. Enviado y espero que otro receptor lo atrape. A lo sumo se espera un LF de vuelta. Pero uno puede llamarlo un "paquete UART".
El USB básico requiere seguir un protocolo estricto para el intercambio de datos altamente estructurados, que se organizan en "paquetes". Los paquetes USB tienen SYNC, ID de paquete, DATA, CRC y EOP. Los PID-DATA+CRC están codificados de una manera especial para mantener una señal + balanceada, para evitar que las líneas de datos permanezcan en un estado por mucho tiempo, a diferencia de UART. USB clásico utiliza codificación NRZI con "relleno de bits".
El intercambio de paquetes requiere cierto orden llamado "transacción", que generalmente incluye la fase de CONFIGURACIÓN con la DIRECCIÓN, la fase de DATOS y el dispositivo USB debe responder con algún paquete que reconozca la exactitud de los datos recibidos. Por lo general, se necesitan tres paquetes individuales para una "transacción".
Luego, las transacciones USB se organizan en "transferencias", que incluyen CONFIGURACIÓN, DATOS (pueden ser muchos paquetes de DATOS) y paquetes de confirmación para cada DATO, en ambos sentidos. También hay transferencias de CONTROL, que tienen etapa de CONFIGURACIÓN, etapa de DATOS y etapa de ESTADO, por lo que la transferencia de control típica (para configurar u obtener algún parámetro del dispositivo) toma 9 paquetes USB individuales, cada uno con estructura SYNC-PID/ADDRESS-CRC_EOP.
Además, las respuestas a los paquetes entrantes tienen un límite de tiempo de respuesta de menos de 1,7 us, por lo que no muchas MCU pueden decodificar un paquete, verificar su suma de verificación y responder en menos de 2 microsegundos. Por lo tanto, el soporte para el protocolo USB generalmente se implementa en el hardware, al menos en las partes críticas en cuanto al tiempo. Esto se llama USB SIE - Motor de interfaz en serie. Si bien el orden y la generación de transferencias es responsabilidad de USB HOST y no es de su incumbencia, los dispositivos deben obedecer las reglas de SIE, decodificar todos los paquetes y responder correctamente a tiempo.
Un dispositivo USB se vuelve funcional después de un proceso llamado "enumeración", que incluye leer las capacidades del dispositivo y el propósito funcional (también conocido como "descriptores del dispositivo"), recibir la dirección USB individual, seleccionar/iniciar la "configuración del dispositivo". Esta enumeración generalmente toma una docena de transferencias de control y debe ocurrir antes de que se pueda establecer cualquier puente entre los DATOS USB y los DATOS UART.
Dado este breve curso de "aplastamiento" en USB, ahora decide si puede implementar este SIE ("apagar usb en un par de pines más") en su microcontrolador PIC16.
Hogar
viejo contador de tiempo
viejo contador de tiempo
usuario11937382