Introducción
El RP2040 es el primer silicio de Raspberry Pi, y se ha vuelto increíblemente popular para proyectos de hardware personalizados. Mientras que la placa Raspberry Pi Pico es excelente para prototipado, muchos proyectos requieren factores de forma personalizados, diferentes configuraciones de I/O, o diseños optimizados en costo para producción.
Esta guía proporciona todo lo que necesitas para diseñar tu propia placa basada en RP2040 desde cero. Cubriremos el circuito mínimo requerido, explicaremos cada decisión de diseño, y proporcionaremos números de parte listos para JLCPCB para que puedas ir del esquemático a la placa ensamblada rápidamente.
Prerrequisitos: Esta guía asume familiaridad básica con herramientas de diseño de PCB (EasyEDA, KiCad o Altium) y conceptos fundamentales de electrónica como desacoplo y ruteo de señales.
¿Por qué diseñar con el RP2040?
Ventajas
- +Dual ARM Cortex-M0+ núcleos @ 133MHz
- +264KB SRAM (más que la mayoría de chips Cortex-M0)
- +Máquinas de estado I/O programables (PIO)
- +Programación UF2 arrastrar y soltar via USB
- +Bajo costo (~$0.70-1.00 en volumen)
- +Excelente documentación de Raspberry Pi
Consideraciones
- !Sin flash interno - requiere QSPI externo
- !Encapsulado QFN-56 requiere soldadura cuidadosa
- !Solo bootloader USB (sin boot UART)
- !Único pad GND bajo el chip - crítico soldar
- !ADC de 12-bit (sin DAC, 4 canales)
Requisitos Mínimos del Circuito
A diferencia de muchos microcontroladores que pueden funcionar solo con alimentación y algunos capacitores, el RP2040 tiene requisitos específicos para un sistema funcional:
Componentes Requeridos
Esenciales
- 1x Microcontrolador RP2040
- 1x Flash QSPI externo (2MB-16MB)
- 1x Cristal 12MHz + 2 capacitores de carga
- 1x Regulador de voltaje 3.3V
- 11x Capacitores de desacoplo 100nF
- 2x Capacitores 1µF (VREG entrada/salida)
Para Programación USB
- 1x Conector USB (Tipo-C recomendado)
- 2x Resistores serie USB 27Ω
- 2x Resistores CC 5.1kΩ (USB-C)
- 1x Botón BOOTSEL
- 1x Resistor BOOTSEL 1kΩ
- 1x Protección ESD (recomendado)
Diagrama de Bloques del Sistema
Antes de profundizar en cada subsistema, aquí está cómo se conectan todas las piezas:
Diseño de Fuente de Alimentación
Visión General de la Arquitectura de Alimentación
El RP2040 requiere dos rieles de voltaje para operar:
- IOVDD (3.3V) - Alimenta todos los I/O, USB PHY y periféricos
- DVDD (1.1V) - Alimenta el núcleo digital (núcleos ARM, SRAM)
El RP2040 incluye un regulador lineal interno que genera 1.1V desde la alimentación de 3.3V. Esto simplifica el diseño de alimentación externa - solo necesitas proporcionar 3.3V.
Regulador Interno de 1.1V
El regulador interno requiere:
- VREG_VIN - Conectar a 3.3V con capacitor 1µF
- VREG_VOUT - Conectar a todos los pines DVDD con capacitor 1µF
Aplicaciones de Batería: El LDO interno es eficiente cuando el núcleo está dormido, pero para aplicaciones de batería con alta carga de trabajo, considera una fuente conmutada externa de 1.1V para mejor eficiencia.
Opciones de Alimentación Externa 3.3V
Para diseños alimentados por USB, necesitas convertir 5V USB a 3.3V:
| Regulador | Tipo | Corriente | JLCPCB | Notas |
|---|---|---|---|---|
| XC6206P332MR | LDO | 200mA | C5446 | Recomendado - Basic Part |
| AP2112K-3.3 | LDO | 600mA | C51118 | Elección popular (SparkFun, Adafruit) |
| ME6211C33 | LDO | 500mA | C82942 | Bajo dropout (100mV @ 500mA) |
Evitar AMS1117: A pesar de su popularidad, el AMS1117 tiene alta corriente de reposo (~5mA), requiere capacitores grandes, y tiene bajo rendimiento con poca carga. Usa XC6206 o AP2112K en su lugar.
Capacitores de Desacoplo
El desacoplo adecuado es crítico para la estabilidad del RP2040. El chip tiene múltiples pines de alimentación que cada uno necesita su propio capacitor:
| Pines | Cantidad | Valor | Propósito |
|---|---|---|---|
| IOVDD (pines 1,10,22,33,42,49) | 6x | 100nF | Desacoplo de alimentación I/O |
| DVDD (pines 23, 50) | 2x | 100nF | Desacoplo de alimentación núcleo |
| USB_VDD (pin 48) | 1x | 100nF | Alimentación USB PHY |
| ADC_AVDD (pin 43) | 1x | 100nF | Referencia ADC |
| VREG_VIN (pin 44) | 1x | 1µF | Entrada regulador |
| VREG_VOUT (pin 45) | 1x | 1µF | Salida regulador |
Layout Crítico: El RP2040 solo tiene una conexión de tierra - el pad grande en el centro del chip. Todos los capacitores de desacoplo deben tener el bucle más corto posible desde capacitor → pin de alimentación → a través del chip → pad GND central → de vuelta al capacitor. Usa vías directamente debajo de los capacitores al plano de tierra.
Oscilador de Cristal
Aunque el RP2040 tiene un oscilador interno, se requiere un cristal externo de 12MHz para timing USB preciso y operación estable.
Selección del Cristal
El cristal debe cumplir estas especificaciones:
- Frecuencia: 12.000 MHz
- Capacitancia de Carga: Típicamente 10-20pF
- ESR: <100Ω recomendado
- Tolerancia de Frecuencia: ±30ppm o mejor
Cristal Recomendado
Parte JLCPCB: C9002
12MHz, encapsulado 3225 (3.2mm × 2.5mm), capacitancia de carga 20pF, ±10ppm. Este es un JLCPCB Basic Part, manteniendo los costos de ensamblaje bajos.
Cálculo de Capacitores de Carga
Los capacitores de carga (CL1 y CL2) deben calcularse basándose en la capacitancia de carga especificada del cristal y la capacitancia parásita del PCB:
C_carga = (CL1 × CL2) / (CL1 + CL2) + C_parásita
Para capacitores iguales (CL1 = CL2 = C):
C = 2 × (C_carga - C_parásita)
Ejemplo con capacitancia de carga 20pF y 3pF parásita:
C = 2 × (20pF - 3pF) = 34pF
Valores estándar más cercanos: 33pF o 27pFGuías de Layout del Cristal
- Coloca el cristal lo más cerca posible de los pines XIN/XOUT (pines 20/21)
- Mantén los capacitores de carga inmediatamente adyacentes a los pads del cristal
- Rutea las pistas XIN/XOUT lejos de señales de alta velocidad (especialmente QSPI)
- Considera un anillo de guarda de tierra alrededor del cristal para inmunidad al ruido
- Mantén el cristal en el lado opuesto del chip al flash QSPI
Memoria Flash QSPI
El RP2040 no tiene memoria flash interna - todo el código del programa se ejecuta desde un chip flash QSPI externo. Este es un componente crítico que debe elegirse y conectarse cuidadosamente.
Selección del Chip Flash
El bootloader del RP2040 está optimizado para flash Winbond serie W25Q. Aunque otros chips pueden funcionar, Winbond es la opción más segura:
| Número de Parte | Tamaño | Encapsulado | JLCPCB | Notas |
|---|---|---|---|---|
| W25Q16JVSNIQ | 2MB | SOIC-8 | C131024 | Mínimo recomendado |
| W25Q32JVSSIQ | 4MB | SOIC-8 | C179171 | Bueno para proyectos más grandes |
| W25Q128JVSIQ | 16MB | SOIC-8 | C97521 | Máximo soportado |
Advertencia: Macronix y algunos otros chips flash no funcionan como reemplazos directos. Usa la serie Winbond W25Q para compatibilidad garantizada.
Conexiones del Flash
| Pin Flash | Pin RP2040 | Función |
|---|---|---|
| 1 (/CS) | QSPI_SS (pin 57) | Selección de Chip |
| 2 (DO/IO1) | QSPI_SD1 (pin 53) | Data Out / IO1 |
| 3 (/WP/IO2) | QSPI_SD2 (pin 54) | Protección Escritura / IO2 |
| 4 (GND) | GND | Tierra |
| 5 (DI/IO0) | QSPI_SD0 (pin 52) | Data In / IO0 |
| 6 (CLK) | QSPI_SCLK (pin 56) | Reloj |
| 7 (/HOLD/IO3) | QSPI_SD3 (pin 55) | Hold / IO3 |
| 8 (VCC) | 3.3V | Alimentación (con cap 100nF) |
Pull-up QSPI_SS: Agrega un resistor pull-up de 10kΩ desde QSPI_SS a 3.3V. Esto asegura que el chip-select del flash esté alto durante el encendido, evitando que el flash entre en un estado indefinido.
Guías de Layout del Flash
- Coloca el flash lo más cerca posible de los pines QSPI del RP2040
- Longitud máxima de pista: 20mm (más corto es mejor)
- Ancho de pista recomendado: 0.15mm (6 mil)
- Mantén la pista de reloj como la más larga entre todas las señales QSPI
- Agrega capacitor de desacoplo 100nF directamente en el pin VCC del flash
- Mantén plano de tierra sólido bajo el flash y las pistas
Interfaz USB
USB es la interfaz de programación principal para el RP2040, permitiendo la conveniente carga de firmware UF2 arrastrando y soltando.
Diseño del Conector USB-C
Para diseños modernos, USB-C se recomienda sobre Micro-USB debido a su reversibilidad y durabilidad. Conexiones clave:
| Pin USB-C | Conexión | Notas |
|---|---|---|
| VBUS (A4, B4, A9, B9) | Entrada 5V | Al regulador de voltaje |
| D+ (A6, B6) | RP2040 USB_DP via 27Ω | Unir A6 y B6 |
| D- (A7, B7) | RP2040 USB_DM via 27Ω | Unir A7 y B7 |
| CC1 (A5) | 5.1kΩ a GND | Detección de dispositivo |
| CC2 (B5) | 5.1kΩ a GND | Detección de dispositivo |
| GND (A1, A12, B1, B12) | Tierra | Conectar todos los pines GND |
Crítico: Tanto CC1 como CC2 deben tener resistores de 5.1kΩseparados a tierra. Nunca unas CC1 y CC2 - esto viola la especificación USB-C y causa problemas de detección. (Este fue el bug de lanzamiento del Raspberry Pi 4B.)
Protección ESD
Aunque no es estrictamente requerido, la protección ESD en las líneas USB es altamente recomendada para cualquier producto que será manejado por usuarios:
Protección ESD Recomendada
USBLC6-2SC6: Array de diodos TVS para líneas D+/D-
Parte JLCPCB: C7519
Protege contra descarga de contacto ±15kV y descarga de aire ±8kV. Baja capacitancia (0.5pF típ.) preserva la integridad de la señal.
Layout de Pistas USB
USB es una señal diferencial que requiere impedancia controlada:
- Impedancia objetivo: 90Ω diferencial
- Ancho de pista: 0.8mm (para espesor de placa 1.6mm)
- Espaciado de pistas: 0.15mm entre D+ y D-
- Resistores serie 27Ω: Colocar cerca de los pines del RP2040
- Igualación de longitud: Mantener D+ y D- de igual longitud
Circuito de Modo Boot
El RP2040 usa un bootloader basado en ROM que verifica la condición BOOTSEL al encender. Entender la secuencia de boot es esencial para diseñar una interfaz de programación confiable.
Diseño del Botón BOOTSEL
La función BOOTSEL usa el pin QSPI_SS. Cuando QSPI_SS se mantiene bajo durante el reset, el RP2040 entra en modo de almacenamiento masivo USB para carga de firmware:
QSPI_SS (pin 57)
|
+--- Pull-up 10kΩ a 3.3V (opcional pero recomendado)
|
+--- Resistor serie 1kΩ --- Botón BOOTSEL --- GND
Secuencia de Boot:
1. Presionar y mantener botón BOOTSEL
2. Aplicar alimentación (o presionar RESET mientras se mantiene BOOTSEL)
3. RP2040 ve QSPI_SS bajo → entra en modo boot USB
4. Soltar botón
5. Arrastrar archivo UF2 a la unidad USB¿Por qué el resistor de 1kΩ? El resistor en serie limita la corriente cuando el pin QSPI_SS está siendo usado como salida durante operación normal. Sin él, presionar el botón durante operación cortocircuitaría la salida a tierra.
Circuito de Reset
El pin RUN (pin 26) es la entrada de reset del RP2040 (activo-bajo):
RUN (pin 26)
|
+--- Pull-up 10kΩ a 3.3V
|
+--- Capacitor 100nF a GND (anti-rebote/filtro)
|
+--- Botón RESET --- GND
Uso típico:
1. Encendido: RUN se lleva a alto, chip inicia
2. Presionar RESET: RUN se lleva a bajo, chip se resetea
3. Soltar: RUN regresa a alto, chip reinicia
4. Para modo BOOTSEL: Mantener BOOTSEL, presionar RESETBreakout de GPIO
El RP2040 proporciona 30 pines GPIO con mapeo de periféricos flexible. Para un diseño mínimo, considera cuáles GPIOs exponer:
| GPIO | Pin | Funciones Comunes |
|---|---|---|
| GPIO0-1 | 2, 3 | UART0 TX/RX, I2C0, SPI0 |
| GPIO2-5 | 4-7 | SPI0, I2C1, PWM |
| GPIO6-9 | 8-11 | SPI0, I2C0/1, PWM |
| GPIO10-13 | 12-15 | SPI1, I2C0/1, PWM |
| GPIO14-17 | 16-19 | SPI1, I2C0/1, PWM |
| GPIO18-21 | 24-27 | SPI0, I2C0/1, PWM |
| GPIO22-25 | 29-32 | PWM, PIO, LED (GPIO25 en Pico) |
| GPIO26-29 | 34-37 | ADC0-3, PWM |
Consejo: Reserva GPIO0/GPIO1 para debugging UART - son los pines UART0 predeterminados y extremadamente útiles para salida serial durante el desarrollo.
Guías de Layout de PCB
Stackup de Capas
El diseño mínimo oficial usa una placa de 2 capas, pero se recomienda 4 capas para mejor rendimiento y ruteo más fácil:
2 Capas (Económico)
- Capa 1: Señales + componentes
- Capa 2: Plano de tierra + ruteo de alimentación
- Desafío: Distribución de alimentación bajo RP2040
- Rutear 1.1V y 3.3V en espacio restante
4 Capas (Recomendado)
- Capa 1: Señales + componentes
- Capa 2: Plano GND sólido
- Capa 3: Plano de alimentación 3.3V
- Capa 4: Señales + ruteo 1.1V
- Mejor desacoplo y rendimiento EMI
Estrategia de Plano de Tierra
El pad central de tierra del RP2040 es la única conexión de tierrapara todo el chip. Esto hace crítico el diseño del plano de tierra:
- Usa mínimo 9 vías bajo el pad de tierra para conexión térmica y eléctrica
- Crea plano de tierra sólido directamente bajo el RP2040
- Conecta todas las tierras de capacitores de desacoplo a este plano con vías
- Mantén tierra continua bajo las pistas QSPI
- Usa vías de costura de tierra alrededor del perímetro
Ruteo de Señales Críticas
| Grupo de Señales | Longitud Máx | Ancho Pista | Notas |
|---|---|---|---|
| QSPI (flash) | 20mm | 0.15mm | CLK más larga, GND sólido debajo |
| USB D+/D- | 50mm | 0.8mm | Par diferencial, 0.15mm espaciado |
| Cristal XIN/XOUT | 5mm | 0.2mm | Mantener lejos de QSPI |
| Alimentación (3.3V, 1.1V) | - | 0.3mm+ | Cortas a caps de desacoplo |
Lista de Materiales
JLCPCB Basic Parts
Usar JLCPCB Basic Parts minimiza las tarifas de ensamblaje ($3 por tipo de parte Extended). Aquí están las partes básicas donde sea posible:
BOM Completo
| Ref | Valor | Encapsulado | Parte JLCPCB | Tipo |
|---|---|---|---|---|
| Componentes Principales | ||||
| U1 | RP2040 | QFN-56 | C2040 | Extended |
| U2 | W25Q16JVSNIQ | SOIC-8 | C131024 | Extended |
| U3 | XC6206P332MR | SOT-23 | C5446 | Basic |
| Y1 | 12MHz | 3225 | C9002 | Basic |
| Capacitores | ||||
| C1-C10 | 100nF | 0402 | C1525 | Basic |
| C11-C12 | 1µF | 0402 | C52923 | Basic |
| C13-C14 | 27pF | 0402 | C1557 | Basic |
| Resistores | ||||
| R1-R2 | 27Ω | 0402 | C25100 | Basic |
| R3-R4 | 5.1kΩ | 0402 | C25905 | Basic |
| R5-R6 | 10kΩ | 0402 | C25744 | Basic |
| R7 | 1kΩ | 0402 | C11702 | Basic |
| Conectores y Botones | ||||
| J1 | USB-C | 16-pin | C2765186 | Extended |
| SW1-SW2 | Botón | 3x6mm | C318884 | Basic |
Costo estimado: ~$2-3 por placa para componentes (mínimo 5 placas), más ~$5 tarifa de ensamblaje + ~$3 por tipo de parte extended.
Errores Comunes a Evitar
1. Mala Conexión del Pad de Tierra
El pad central es la ÚNICA conexión de tierra. Si no se suelda correctamente con suficientes conexiones de vías, nada funciona. Usa soldadura reflow o aire caliente para asegurar conexión correcta.
2. Chip Flash Incorrecto
Usar chips flash que no son Winbond frecuentemente causa fallas de boot. Quédate con la serie W25Q. Si usas un chip diferente, asegúrate de que soporte exactamente el mismo conjunto de comandos y timing de encendido.
3. Pull-up QSPI_SS Faltante
Durante el encendido, QSPI_SS puede flotar brevemente. Sin un pull-up, el chip flash puede entrar en un estado indefinido, causando fallas de boot.
4. CC1/CC2 Unidos (USB-C)
Cada pin CC necesita su propio resistor de 5.1kΩ. Unirlos viola la especificación USB-C y causa problemas de detección intermitentes.
5. Cristal Muy Lejos del RP2040
Pistas largas agregan capacitancia parásita, cambiando la capacitancia de carga efectiva. Esto causa errores de frecuencia que rompen el timing USB.
Pruebas y Depuración
Después del ensamblaje, sigue esta secuencia de pruebas:
- Inspección visual: Verifica puentes de soldadura, especialmente en el RP2040 y conector USB. El encapsulado QFN-56 es propenso a puentes.
- Verificación de alimentación (sin USB): Mide los rieles 3.3V y 1.1V antes de conectar USB. Verifica que estén estables y con voltaje correcto.
- Prueba BOOTSEL: Mantén BOOTSEL, conecta USB. La computadora debería mostrar una nueva unidad USB llamada "RPI-RP2".
- Prueba de flash: Arrastra un archivo UF2 (como el ejemplo blink de Pico) a la unidad. Debería desaparecer y el código debería ejecutarse.
- Prueba UART: Conecta un adaptador USB-UART a GPIO0/GPIO1 y verifica que funcione la salida serial.
¿Placa atascada en modo BOOTSEL? Esto usualmente significa que el chip flash no está respondiendo - verifica conexiones del flash, alimentación y selección de chip. El bootloader solo entra en modo USB si no puede leer código válido del flash O si BOOTSEL se mantiene durante el reset.
Conclusión
Diseñar una placa RP2040 personalizada requiere atención al detalle en la fuente de alimentación, memoria flash, cristal y circuitos USB. Sin embargo, con la excelente documentación de Raspberry Pi y la creciente comunidad de diseños open-source, es un proyecto alcanzable para cualquiera con experiencia básica en diseño de PCB.
Los puntos clave a recordar:
- Usa flash serie Winbond W25Q para compatibilidad garantizada
- Presta especial atención a la conexión del pad de tierra central
- Mantén las pistas QSPI cortas y el cristal cerca del chip
- No escatimes en capacitores de desacoplo
- Incluye botones BOOTSEL y RESET para programación fácil
Descarga los archivos de diseño mínimo KiCad oficiales de Raspberry Pi como punto de partida, y no dudes en referenciar otros proyectos RP2040 open-source para inspiración.