Programador Multi-Protocolo
El usuario debe cargar el firmware específico según sus necesidades.
Este programador requiere que cargues el firmware correspondiente al protocolo que deseas utilizar:
- Firmware AVR para dispositivos ATmega/ATtiny
- Firmware CMSIS-DAP para microcontroladores ARM Cortex-M
- Firmware CPLD para dispositivos Intel/Altera MAX II
Sin el firmware apropiado, el dispositivo no funcionará correctamente.
Descripción General
El Programador Multi-Protocolo es un dispositivo USB versátil basado en el microcontrolador CH552 que soporta múltiples protocolos de programación y depuración. Compatible con dispositivos AVR, ARM Cortex-M y CPLD Intel/Altera MAX II.
Características Principales
- 🔌 Interfaz USB Full-Speed (CDC/HID según firmware)
- ⚡ Selector de voltaje: 3.3V / 5V con interruptor
- 🔄 Firmware intercambiable para diferentes protocolos
- 🛠️ Compatible con herramientas estándar de la industria
Recursos y Documentación
Recurso | Descripción | Enlace |
---|---|---|
📚 Documentación Completa | Guía detallada del programador | Ver Documentación |
🚀 Primeros Pasos | Tutorial de configuración inicial | Comenzar Aquí |
📋 Esquemático | Diseño del circuito electrónico | Ver Esquemático |
🔧 Diseño PCB | Archivos de diseño de la placa | Ver Diseño |
💻 Firmware | Código fuente y binarios | Ver Código |
🧪 SDK de Desarrollo | Herramientas para CH55x | Ver SDK |
📦 Repositorio Principal | Código fuente completo | GitHub |
Especificaciones Técnicas
Hardware Base
- Microcontrolador: CH552G / CH552E / CH552P
- Interfaz USB: Full-Speed (12 Mbps)
- Alimentación: Bus USB (5V) con regulador interno
- Voltaje de salida: Seleccionable 3.3V / 5V mediante interruptor
- Conectores: Pin headers estándar para conexiones de programación
Protocolos Soportados
- 🔌 AVR: USBasp, Serial UPDI
- 🛡️ ARM: SWD (CMSIS-DAP)
- ⚙️ CPLD: JTAG (compatible con USB-Blaster)
Perfiles de Firmware Disponibles
Cada firmware está optimizado para un tipo específico de dispositivo. Debes cargar el firmware correcto antes de usar el programador.
1. 🔧 Firmware Programador AVR
Para microcontroladores AVR (ATmega, ATtiny, etc.)
Características:
- Protocolos: USBasp
- Dispositivos objetivo: Toda la familia AVR de Microchip
- Interfaz USB: HID (USBasp) / CDC (Serial UPDI)
- Voltaje: Seleccionable 3.3V o 5V
Herramientas compatibles:
- ✅
avrdude
- ✅ Arduino IDE
Compilación:
# Compilar con SDCC
make all
# O flashear binario precompilado
python3 ./tools/chprog.py build/main.bin
Ejemplo de flasheo de binario precompilado:
Python3 es nativo en la mayoría de distribuciones Linux, pero puedes instalarlo en Windows o macOS con soporte limitado.
make flash
Compilando main.c ...
Compilando src/delay.c ...
Compilando src/isp.c ...
Compilando src/tpi.c ...
Compilando src/updi.c ...
Compilando src/usb_asp.c ...
Compilando src/usb_cdc.c ...
Compilando src/usb_descr.c ...
Compilando src/usb_handler.c ...
Enlazando IHX...
Generando BIN...
------------------
FLASH: 5341 bytes
IRAM: 36 bytes
XRAM: 480 bytes
------------------
Eliminando temporales...
Flasheando a CH55x...
Connecting to device ...
FOUND: CH552 with bootloader v2.5.0.
Erasing chip ...
Flashing build/main.bin to CH552 ...
SUCCESS: 5341 bytes written.
Verifying ...
SUCCESS: 5341 bytes verified.
DONE.
El modo USBasp se enumera como dispositivo HID, mientras que Serial UPDI utiliza puerto CDC virtual.
2. 🛡️ Firmware Depurador ARM (CMSIS-DAP)
Para microcontroladores ARM Cortex-M
Características:
- Protocolos: SWD y JTAG (estándar CMSIS-DAP)
- Dispositivos objetivo: STM32, PY32, RP2040, etc.
- Interfaz USB: HID + CDC opcional
Herramientas compatibles:
- ✅ OpenOCD
- ✅ PyOCD
- ✅ Visual Studio Code (Extensión PlatformIO)
- ✅ Visual Studio Code (Extensión Raspberry Pi Pico)
Controladores:
- Linux/macOS: Soporte nativo (sin drivers adicionales)
- Windows: Drivers automáticos via WinUSB
Algunos IDEs pueden requerir configuración específica para reconocer el dispositivo como CMSIS-DAP.
3. ⚙️ Firmware Programador CPLD
Para dispositivos Intel/Altera MAX II
Características:
- Dispositivos objetivo: EPM240, etc.
- Protocolo: JTAG via emulación USB-Blaster
- Compatibilidad: Intel Quartus Prime (versión lite)
- Velocidad: Compatible con especificaciones USB-Blaster
Opciones de configuración:
- Modo seguro (predeterminado): VID:
0x16C0
PID:0x05DC
- Modo compatibilidad: VID:
0x09FB
PID:0x6001
El modo de compatibilidad usa VID/PID de Intel. Úsalo solo para desarrollo personal y cumpliendo las licencias correspondientes.
Instalación y Configuración
Requisitos del Sistema
Software requerido:
# Ubuntu/Debian
sudo apt install build-essential sdcc python3 python3-pip git
# Instalar dependencias Python
pip3 install pyusb
# Verificar instalación
sdcc --version
python3 --version
Para Windows:
SDK Docker CH55x
Proceso de Flasheo del Firmware
1. Entrar en Modo Bootloader
- Desconectar completamente el programador del USB
- Mantener presionado el botón
BOOT
en la placa - Conectar el cable USB mientras mantienes presionado
BOOT
- Soltar el botón - el dispositivo entra en modo bootloader
- El LED debería cambiar de estado indicando modo bootloader
2. Flashear el Firmware
# Método 1: Usando chprog.py (Recomendado)
python3 ./tools/chprog.py build/main.bin
# Método 2: Usando WCHISPTool (Windows)
# Abrir WCHISPTool y seleccionar el archivo .bin
3. Verificar la Instalación
# Verificar que el dispositivo es reconocido
lsusb | grep -i "ch55"
# Para Windows, verificar en Device Manager
Configuración de Permisos (Linux)
# Crear reglas udev para acceso sin privilegios
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="4348", ATTR{idProduct}=="55e0", MODE="666"' | sudo tee /etc/udev/rules.d/99-ch55x.rules
# Recargar reglas
sudo udevadm control --reload
sudo udevadm trigger
# Agregar usuario al grupo dialout (para puertos serie)
sudo usermod -a -G dialout $USER
Tabla de Compatibilidad de Firmware
Firmware | Protocolos | Dispositivos Objetivo | Modo USB | Herramientas Principales |
---|---|---|---|---|
AVR | USBasp | ATmega, ATtiny, AVR-DA/DB | CDC/HID | avrdude, PlatformIO |
CMSIS-DAP | SWD | STM32, RP2040, PY32 | HID+CDC | OpenOCD, PyOCD |
CPLD | JTAG (USB-Blaster) | EPM240, EPM570, MAX II | HID | Quartus Prime |
Solución de Problemas Comunes
❌ El dispositivo no es reconocido
Posibles causas y soluciones:
-
Firmware incorrecto cargado
- Verificar que el firmware corresponde al uso deseado
- Re-flashear el firmware correcto
-
Problemas de drivers (Windows)
# Instalar Zadig para drivers libusb
# Seleccionar el dispositivo y instalar WinUSB driver -
Permisos insuficientes (Linux)
# Verificar reglas udev
sudo udevadm test /sys/bus/usb/devices/[device_path]
❌ Error de programación
- Verificar conexiones de cables
- Comprobar voltaje objetivo (3.3V vs 5V)
- Verificar que el dispositivo objetivo está alimentado
- Revisar compatibilidad del protocolo
❌ Velocidad de programación lenta
- Reducir frecuencia de JTAG/SWD
- Verificar calidad de conexiones
- Usar cables más cortos
Licencias y Atribuciones
Este proyecto se distribuye bajo múltiples licencias dependiendo del componente:
- Hardware: Creative Commons Attribution-ShareAlike 4.0
- Firmware base: MIT License
- Componentes derivados: Licencias específicas de cada proyecto base
Consulta el archivo LICENSE
en cada directorio de firmware para detalles específicos de licenciamiento.