INFORMACIÓN
El Adaptador DVI a FPC permite acceder directamente a las señales DVI a través de un conector FPC, facilitando el desarrollo de video definido por software. Es un modulo es completamente pasivo, lo que significa que no procesa la señal, sino que preserva la integridad de los pares diferenciales TMDS para transmisiones de alta velocidad.
El Adaptador DVI a FPC es útil para microcontroladores como RP2040/RP2350 vía header o por conectores Qwiic. Exponiendo señales TMDS y DDC, integrando FPC HSTX y QWIIC para facilitar acceso a video, control y comunicación I²C sobre DVI.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Marca: UNIT Electronics
- País de origen: Hecho en México
- Tipo: Adaptador de interfaz pasivo (Pass-through)
- Voltaje de alimentación: 3.3V a 5.5V
- Corriente: < 1 µA
- Compatibilidad : RP2040 y RP2350 (Raspberry Pi Pico 2).
- Interfaz: DVI, HSTX e I2C
- Conector de Entrada: FPC de 22 pines (paso de 0.5 mm), compatible con interfaces HSTX
- Conector de Salida: DVI estándar (con acceso total a los 19 pines de señal)
- Puerto QWIIC: Conector JST de 1 mm para acceso directo al canal DDC (I²C) y alimentación.
- Sin Procesamiento: No realiza conversión de protocolo ni acondicionamiento de señal; actúa como un puente directo.
- TMDS Optimizado: Mantiene la impedancia necesaria para los pares diferenciales de video de alta velocidad.
- Acceso Total: Expone todas las líneas auxiliares críticas: CEC (Consumer Electronics Control), HPD (Hot Plug Detect) y DDC.
- Temperatura de operación: –40 °C a +85 °C.
- Dimensiones: 43.18 mm x 30.48 mm
- Peso: 7 g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Aplicaciones
- Generación de video DVI desde microcontroladores (RP2040 / RP2350)
- Depuración y análisis de señales TMDS y sincronización
- Lectura de EDID y control de display vía DDC/CI (I²C)
- Desarrollo de interfaces gráficas embebidas (HUD / UI)
- Validación de hardware y pruebas de enlace DVI
- Uso de cable DVI como medio físico para comunicación I²C
- Prototipado de sistemas de salida de video sin PHY dedicado
- Instrumentación de señales de control (CEC, HPD, SCL, SDA)
Código de ejemplo con el adaptador DVI a FPC – UNIT DevLab
El siguiente test de prueba se podrá visualizar en el monitor al que sea conectado el adaptador DVI a FPC , la gama de colores primarios en RGB, realizando un loop en donde se verán barras horizontales, verticales, un tablero de ajedrez y 8 variaciones de colores en toda la pantalla del monitor.
Para este ejercicio se usara una tarjeta con RP204, en nuestro caso utilizamos la tarjeta de desarrollo Dual ONE , en su modo de programacion hacia el MCU RP2040.
Diagrama de conexión

Código
El programa nos ayudara a realizar un testeo de la visualización en patrones y colores, previamente requeriremos la librería upico

Recuerda que para hacer uso de la Dual MCU ONE en su variante de RP2040, tendrás que verificar el puerto y seleccionar la tarjeta como se muestra a continuación:
![]() |
![]() |
Posteriormente realizaremos la carga del siguiente programa
// Pantalla de prueba DevLab para diagnosticar problemas de señal DVI
// Muestra patrones de color para verificar todos los canales TMDS
#include <upicodvi.h>
// Configuración DevLab - CORRECTA y VERIFICADA
static const struct dvi_serialiser_cfg devlab_dvi_cfg = {
.pio = pio0,
.sm_tmds = {0, 1, 2},
.pins_tmds = {16, 18, 20}, // TMDS0=GPIO14, TMDS1=GPIO12, TMDS2=GPIO8
.pins_clk = 22,
.invert_diffpairs = false
};
DVIGFX16 display(DVI_RES_320x240p60, devlab_dvi_cfg);
void setup() {
if (!display.begin()) {
pinMode(LED_BUILTIN, OUTPUT);
for (;;) digitalWrite(LED_BUILTIN, (millis() / 500) & 1);
}
// Pantalla de prueba con barras de colores
drawTestPattern();
}
void loop() {
// Ciclar entre diferentes patrones cada 3 segundos
static unsigned long lastChange = 0;
static int pattern = 0;
if (millis() - lastChange > 3000) {
lastChange = millis();
pattern = (pattern + 1) % 5;
switch(pattern) {
case 0: drawTestPattern(); break;
case 1: drawColorBars(); break;
case 2: drawCheckerboard(); break;
case 3: drawGradients(); break;
case 4: drawFullScreen(); break;
}
}
}
void drawTestPattern() {
display.fillScreen(0x0000); // Negro
// Barras verticales de colores primarios
int w = display.width() / 6;
display.fillRect(0*w, 0, w, display.height(), 0xF800); // Rojo
display.fillRect(1*w, 0, w, display.height(), 0x07E0); // Verde
display.fillRect(2*w, 0, w, display.height(), 0x001F); // Azul
display.fillRect(3*w, 0, w, display.height(), 0xFFE0); // Amarillo
display.fillRect(4*w, 0, w, display.height(), 0xF81F); // Magenta
display.fillRect(5*w, 0, w, display.height(), 0x07FF); // Cyan
// Texto de info
display.setTextSize(2);
display.setCursor(10, 10);
display.setTextColor(0xFFFF, 0x0000);
display.print("DevLab Test");
display.setTextSize(1);
display.setCursor(10, 30);
display.print("invert_diffpairs: true");
display.setCursor(10, 40);
display.print("pins: 8,12,14 clk:10");
}
void drawColorBars() {
// Barras horizontales
int h = display.height() / 8;
display.fillRect(0, 0*h, display.width(), h, 0xFFFF); // Blanco
display.fillRect(0, 1*h, display.width(), h, 0xFFE0); // Amarillo
display.fillRect(0, 2*h, display.width(), h, 0x07FF); // Cyan
display.fillRect(0, 3*h, display.width(), h, 0x07E0); // Verde
display.fillRect(0, 4*h, display.width(), h, 0xF81F); // Magenta
display.fillRect(0, 5*h, display.width(), h, 0xF800); // Rojo
display.fillRect(0, 6*h, display.width(), h, 0x001F); // Azul
display.fillRect(0, 7*h, display.width(), h, 0x0000); // Negro
display.setTextSize(1);
display.setCursor(5, 5);
display.setTextColor(0x0000);
display.print("Barras Horizontales");
}
void drawCheckerboard() {
// Patrón de tablero de ajedrez
display.fillScreen(0x0000);
int size = 20;
for (int y = 0; y < display.height(); y += size) {
for (int x = 0; x < display.width(); x += size) {
if (((x/size) + (y/size)) % 2 == 0) {
display.fillRect(x, y, size, size, 0xFFFF);
}
}
}
display.setTextSize(1);
display.setCursor(5, 5);
display.setTextColor(0xF800, 0xFFFF);
display.print("Tablero Ajedrez");
}
void drawGradients() {
// Gradientes RGB
for (int x = 0; x < display.width(); x++) {
uint8_t r = (x * 255) / display.width();
uint16_t color = display.color565(r, 0, 0);
display.drawFastVLine(x, 0, 80, color);
}
for (int x = 0; x < display.width(); x++) {
uint8_t g = (x * 255) / display.width();
uint16_t color = display.color565(0, g, 0);
display.drawFastVLine(x, 80, 80, color);
}
for (int x = 0; x < display.width(); x++) {
uint8_t b = (x * 255) / display.width();
uint16_t color = display.color565(0, 0, b);
display.drawFastVLine(x, 160, 80, color);
}
display.setTextSize(1);
display.setCursor(5, 5);
display.setTextColor(0xFFFF);
display.print("Gradientes RGB");
}
void drawFullScreen() {
// Pantalla completa de un color sólido
static int colorIndex = 0;
uint16_t colors[] = {0xFFFF, 0xF800, 0x07E0, 0x001F, 0x0000};
const char* names[] = {"Blanco", "Rojo", "Verde", "Azul", "Negro"};
display.fillScreen(colors[colorIndex % 5]);
display.setTextSize(3);
display.setCursor(60, 100);
display.setTextColor(~colors[colorIndex % 5]); // Color invertido
display.print(names[colorIndex % 5]);
colorIndex++;
}
Se visualizara en el monitor la siguiente secuencia:

74HC14 Inversor Schmitt Trigger SN74HC14N
Soporte de Alambre de Soldadura
Carcasa de Acrílico Orange Pi PC
Bateria LiPo 3.7V 650mAh 802040
Kit de Thermofit 560 Piezas Diferentes Tamaños
TP101 Kit Chasis de Robot Tanque
Kit Radio FM / AM CF210SP CD9088
Cargador de Carga Rápida QC3.0 USB Multifuncional
Convertidor TTL a RS485
PJ-320D-4A Conector Jack 3.5mm
BMS 4S 30A Balanceador Carga de Baterias
Cable de Prueba Macho Tipo Banana a BNC 1.4mm
Cable USB a Plug 4 x 1.7 mm
Mini Cargador USB Tipo-C 5V 2A
Adaptador de Audio Jack 3.5mm a Plug 6.3mm Estéreo
Adaptador de Batería XT60 Hembra a T Macho ESC



































Valoraciones
No hay valoraciones aún.