Categories
Electrónica USB

ESP32-S3 Pi Zero 2 W. USB-UART y USB-OTG. Parte II. Esquemático.

Presentamos a continuación los esquemáticos de los puertos USB-UART y USB-OTG. Es la manera de conectar nuestra ESP32-S3 Pi Zero 2 W al PC para programarla, depurar y simplemente alimentarla. Utilizamos puertos USB-C en vez de micro USB porque son más flexibles, robustos y fáciles de utilizar.

USB 3.0 pinout
USB 3.0 pinout

Aunque se usan puertos USB-C, las funciones que se utilizan son únicamente USB 2.0 (D+, D-, GND y VBUS).

CC1 y CC2

Para la compatibilidad USB 3.0 se necesita establecer una resistencia de pull-down de 5.1kΩ (±10%) en sus pines CC1 y CC2. Esos 5.1kΩ, conectados a GND. Identifican a la placa como un consumidor de corriente que suministra el puerto USB del PC. Existen otros valores pull-down y pull-up para CC1 y CC2 pero no son el propósito de este proyecto.

VBUS y +5V

Los pines VBUS son los pines de alimentación de la placa (5V positivos). Provienen del puerto USB del PC o de una fuente externa con USB. Los identificamos como VBUS_UART y VBUS_OTG cuando provienen de un conector USB-C.

Separamos la alimentación (VBUS_UART y VBUS_OTG con 5V) con un diodo Schottky en los dos puertos USB-C, con el objetivo de evitar el riesgo de que se conecten dos cables a la vez, en USB-UART y USB-OTG. Sin esos diodos la corriente podría fluir desde uno de los puertos hacia el otro. Esto podría dañar los puertos del PC.

Se producirá una caida de voltaje en ese diodo de aproximadamente 0,3V que deberán ser tenidos en cuenta en la entrada del regulador de voltaje LDO a 3.3V.

Se puede alimentar con votaje directo la placa desde la salida de este diodo y existe un PIN disponible a tal efecto en la placa, sin tener que utilizar un conector USB.

D+ y D-

Las líneas D+ (Data Plus) y D- (Data Minus) son las comunicaciones de los datos entre el PC el microcontrolador. A diferencia de un cable de alimentación simple, estas líneas forman un par diferencial.

USB 2.0 no envía los datos por un solo cable comparándolos con masa (GND), sino que compara el voltaje entre D+ y D-.

  • Si D+ > D−, el sistema interpreta un estado lógico.
  • Si D+ < D−, interpreta el estado contrario.

La comunicación mediante par diferencial se elige principalmente por su gran inmunidad al ruido. Si una interferencia electromagnética afecta al cable, lo hará en ambos hilos por igual. Dado que el receptor solo interpreta la diferencia de voltaje entre ellos, esa interferencia se cancela automáticamente, garantizando la integridad del mensaje.

Diodos TVS

Los diodos TVS (Transient Voltage Suppressor) se utilizan para proteger el circuito contra picos de voltaje extremadamente rápidos y altos, como la electricidad estática (ESD). La ESD (Electrostatic Discharge) o descarga electrostática es un fenómeno físico repentino y momentáneo, en el que la electricidad fluye entre dos objetos con distinto potencial eléctrico. Típicamente la descarga que se produce cuando frotamos la alformbra o la ropa contra la piel y la electricidad salta desde nosotros a los componenente eletronicos.

En este diseño protejemos: la entrada de VBUS-OTG y VBUS-UART junto con las entradas D+ y D-.

USB-UART

Esquemático USB-UART
Esquemático USB-UART

USB-OTG

Esquemático USB-OTG
Esquemático USB-OTG
Categories
Electrónica USB

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 2 W, 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.