Los marcos OV7670 son 640x308 no 640x480

2

Hay mucha información útil en Internet sobre cómo poner en funcionamiento la cámara OV7670, pero el siguiente problema me ha dejado perplejo.

Estoy usando una placa Maple r5 (STM32F103RBT6) para tomar una imagen de este modelo de OV7670 con AL422 buffer en un PCB.

He subido el esquema del circuito para este dispositivo desde ebay y mi codifique aquí .

Mi código toma un marco del OV7670, lo almacena en AL422 y luego lo transmite a la PC con UART a través de la conexión USB (¡muy lentamente!). Como puede ver a continuación, la imagen inicialmente no está alineada, luego solo obtengo 640 por aproximadamente 300 píxeles, luego la imagen se repite. Solo estoy leyendo el canal Y en escala de grises. Desde el ángulo de la cámara, parece que la mano derecha de la imagen se repite hacia la izquierda.

Tengo la cámara enfocada en mi osciloscopio porque esa imagen está cambiando rápidamente para probar si las repeticiones son cuadros subsiguientes o la misma imagen. Los píxeles son idénticos, lo que creo que significa que el puntero de lectura está envolviendo el búfer que genera los mismos datos. Intenté leer más filas del búfer y obtengo el mismo cuadro acortado repetido una y otra vez.

ACTUALIZACIÓN: Revisé la hoja de producto para el AL422B. Este búfer puede contener 393,216 bytes. Con dos bytes para un píxel (uno para el color, uno para la escala de grises), esto significa que solo se pueden almacenar 393,216 / 2 = 640x307 píxeles. Creo que esto explica lo que está pasando aquí! Ahora mi pregunta es, ¿hay alguna configuración para que el OV7670 genere solo el canal en escala de grises para que pueda almacenar un marco completo?

PD: soy nuevo aquí, así que hágame saber cómo hacer preguntas de manera más efectiva.

    
pregunta Eidelon

1 respuesta

1

Para referencia, si otros encuentran esto: el registro COM7 se estableció en Bayer RAW (bits [2: 0] = 001). Esto hace que la cámara emita 640 por 480 bytes que pueden caber en el AL422B. Sin embargo, la interpolación de Bayer debe realizarse externamente para obtener una imagen completa en color rgb. Alternativamente, las ganancias en los canales r, g, b pueden modificarse para obtener algo parecido a una imagen en escala de grises, que es lo que deseaba.

    
respondido por el Eidelon

Lea otras preguntas en las etiquetas