Categories
Electrónica

ESP32-S3 Pi Zero 2 W. USB-UART y USB-OTG. Parte I. Funciones.

USB-UART y USB-OTG

La placa de desarrollo se puede alimentar, y programar, de la misma manera que lo hace cualquier versión Pi Zero 2W, con dos puertos USB (USB-C en el caso de Orange Pi Zero 2W y Micro USB en el caso de Raspberry Pi Zero 2 W). En el diseño del ESP32-S3 Pi Zero 2 W se utilizan dos USB-C. Son más modernos y más versatiles. Están dispuestos a la misma distancia que los Micro USB de la Raspberry Pi Zero 2 W.

Raspberry Pi Zero 2 W Dimensions
Raspberry Pi Zero 2 W Dimensions
ESP32-S3 Pi Zero 2 W Dimensions USB
ESP32-S3 Pi Zero 2 W Dimensions USB

El estandar USB-C describe los conectores como reversibles y pueden existir con un número diferente de PINes, hasta 12+12. Dado que mécanicamente estamos usando dos puertos USB-C que funcionan como USB 2.0, solo necesitamos 4 pines (VBUS con GND y D- con D+) mas los pines CC1 y CC2 (Configuration Channel).

Los puertos están etiquetados como USB-OTG y USB-UART.

El situado a la izquierda (USB-OTG) es directo a los PINes USB_D- y USB_D+ en el ESP32-S3. El situado a la derecha, a través de un chip, CH343K, se puede utilizar como interfaz serie RS-232. Ambos son válidos para programar y alimentar el ESP32-S3 Pi Zero 2 W.

USB-OTG

El puerto USB-OTG es un interfaz USB Serial/JTAG nativo con capacidades OTG (On-The-Go). Esto permite disponer de un interfaz que permite que el ESP32-S3 cambie de rol según lo que necesites, bien sea, Host (Maestro) o Device (Esclavo).

Device (Esclavo)

Es el más común. Puedes conectar la placa al PC, y el ESP32-S3 se puede comportar como se desee:

  • HID: Un teclado, un ratón o un gamepad.
  • MSC: Una unidad de disco flash (puedes hacer que los 16MB de memoria interna aparezcan como un pendrive en tu PC).
  • CDC: Un puerto serie de alta velocidad (más rápido que el CH343K).
  • MIDI: Un instrumento musical digital.

Host (Maestro)

En este modo permite conectar periféricos USB al ESP32-S3 a través de cable adaptador OTG, algunos de estos podrían ser:

  • Un teclado USB y leer lo que se escribe.
  • Una cámara USB (UVC) y capturar imágenes.
  • Un pendrive y leer/escribir archivos en él.

No será viable conectar todos los dispositivos USB de está manera, no al menos de una manera simple, generalmente por problemas de alimentación. El USB funciona a 5V y el ESP32-S3 funciona a 3.3V, este no puede alimentar un dispostivo conectado en el puerto USB-C OTG a 5V. Existen soluciones a este asunto pero no están implementadas específicamente en esta placa.

Para poner el ESP32-S3 en modo ROM Bootloader Mode (Download Mode o Boot Mode), el ordenador envía un comando especial a través del protocolo USB (cambiando la velocidad de baudios a 1200 bps, que es el estándar para forzar el ROM Bootloader Mode). El chip ESP32-S3 entra en modo programación en ese momento, y es posible subir el nuevo firmware al chip.

USB-UART

El puerto USB-UART es un interfaz RS-232 (U0RXD, U0TXD, RTS y CTS/DTR), a través de un chip CH343K que se puede utilizar para programar el ESP32-S3, con funciones de auto reseto para no tener que pulsar la secuencia RESET/BOOT en el ESP32-S3. También como consola serie para depurar el programa.

El interfaz USB-UART puede ser más lento que USB-OTG pero dado que en un reseteo inesperado del ESP32-S3 este interfaz no desaparece del PC puede resultar más conveniente utilizarlo.

Para poner el ESP32-S3 en modo ROM Bootloader Mode (Download Mode o Boot Mode) existen dos alternativas.

Download Mode manual

Se puede establecer el modo programación manualmente siguiendo este procedimiento:

  1. Se mantiene pulsado el botón BOOT, indicando al micro que se prepare para Boot Mode.
  2. Se pulsa el botón RESET una vez, forzando un reseteo que leerá el estado Boot Mode.
  3. Se puede soltar el botón BOOT.
  4. El micro debería estar en Boot Mode.

Download Mode Automático

El proceso para establecer el modo programación automáticamente, se basa en utilizar los PINes, DTR (Data Terminal Ready) y RTS (Request To Send) del puerto RS-232 que originalmente servían para controlar módems de una forma particular.

Cuando el software de programación (esptool) quiere subir el código, manipula estas líneas DTR/RTS de forma precisa y en orden, a través del puerto USB-UART y el chip CH343K. Usando dos transitores, es posible replicar los pasos que se realizan en el modo Download Mode manual. Un esquema de como están conectados DTR y RTS es el siguiente:

Esquemático RTS y DTR
Esquemático RTS y DTR

En el proximo articulo veremos como son los esquemáticos de los puertos USB-OTG y USB-UART.