Solución de cámara en conducción autónoma (1) marco de enlace de cámara

Descripción general: este artículo se centra en las principales soluciones de cámara en la conducción autónoma. El mipi_csi2 en el soc de control principal se combina con el plan de implementación y el marco de trabajo del software de enlace completo de la cámara max96712. Se analizan principalmente dos soluciones, GMSL1 y GMSL2. Este artículo es un registro durante mi proceso de depuración. Si es incorrecto, bienvenido local para discutir: [email protected]

1. El marco completo del enlace de la cámara:  

1.1 Diagrama de trama de enlace:

esquema GMSL1: 3Gbps 

NOTA:

El módulo de la cámara adopta Senyun SG2-AR0231C-0202-GMSL

Solución GMSL2: 6Gbps

NOTA:

El módulo de la cámara adopta Senyun SG2-AR0233C-5200-GMSL2

1,2 información del módulo de cámara:

SG2-AR0231C-0202-GMSL (GMSL1):

Diagrama de bloques del módulo:

Información de dirección predeterminada (8 bits significa, 7 bits significa que debe convertir usted mismo):     

MAX96705: 0x80 convertido a 7 bits corresponde a 0x40

AP0202: 0xBA

AR0231: 0X20

parámetro clave:

Compatibilidad con HDR

1920*1080/22fps

Salida YUV422@8bit

SG2-AR0233C-5200-GMSL2(GMSL2):

Diagrama de bloques del módulo:

Información de dirección predeterminada (8 bits significa, 7 bits significa que debe convertir usted mismo):     

MAX9295A: 0x80 convertido a 7 bits corresponde a 0x40

GW5200: 0xDA

AR0233: 0X20

parámetro clave:

Compatibilidad con HDR

Compatibilidad con LFM ---- Supresión de parpadeo de LED

El uso generalizado de LED en la carretera ha provocado el fenómeno del "parpadeo de LED". El "parpadeo del LED" es un fenómeno causado por el método de conducción del LED. La lámpara LED funciona con CA y la frecuencia de conducción generalmente supera los 90 Hz, es decir, el período de pulso más lento es de aproximadamente 11 milisegundos, y el LED se enciende y apaga. una vez dentro de 11 milisegundos. Ahorro de energía y vida útil prolongada, el ciclo de trabajo generalmente no supera el 50%. Si el tiempo de exposición de la cámara es corto (por ejemplo, 3 milisegundos), es posible que el tiempo de exposición coincida con el período cuando el LED está apagado En este momento, el sensor de imagen captura el LED Si la imagen está apagada, si es una matriz de LED, en este caso, parte de la imagen capturada es brillante y parte oscura, que es la fenómeno de "parpadeo de LED"

1920*1080/30fps

Salida YUV422@8bit

2. Determinación de direcciones I2C: tome GMSL1 como ejemplo

máx96712:

El primer encendido está determinado por el estado de activación de CFG0. Los detalles específicos son los siguientes:

Nuestra configuración de circuito es 0xD6, bit0 es el bit de dirección, por lo que la dirección de 7 bits después de un bit desplazado a la derecha es 0x6B

DEV_ADDR (0x00) es el registro de direcciones y se puede escribir una nueva dirección a través de 0x6B. Por ejemplo, si se escribe 0x90, la dirección real se desplazará hacia la derecha y la dirección bit0 se cambiará a 0x48, y luego el max96712 será operado a través de esta dirección.

max96705:

dirección predeterminada: 0x80, después de cambiar un bit a la derecha, es 0x40. Cuando la configuración i2c abre el canal de carril en secuencia, la nueva dirección se escribirá en reg (0x00). LaneA, LaneB, LaneC y LaneD son respectivamente establecido en 0x41, 0X42, 0X43, 0X44.

como sigue:

regArray[0] = 0x00 ;
sendBuf[0] = 0x80 + 2 * (i + 1);
i2c_ptr->I2cWrite(0x40, regArray, 1, sendBuf, 1); //Configurar canal ABCD max96705 dirección i2c

nota: max96705 tiene una función de traducción de direcciones i2c

// establecer i2c_source A

Matrizreg[0] = 0x09;         
enviarBuf[0] = 0xba + 2 * (i + 1);
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

//establecer i2c dst A
regArray[0] = 0x0a;
enviarBuf[0] = 0xba;
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

Cuando i=0 en el ejemplo anterior, es para convertir 0xba+2 (0xbc, la dirección i2c correspondiente es 0x5e) a 0xba, que es la dirección predeterminada de ap0202 que se menciona a continuación. i de 0 a 3 respectivamente convertiré 0x5e, 0x5f, 0x60, 0x60 en 0xba

AP0202:

 Nuestro módulo está conectado a VDDIO_H de forma predeterminada, por lo que es 0xBA, combinado con la función de traducción de direcciones i2c de max96705 anterior, se puede lograr el propósito de configurar ap0202

máx9295A:

dirección predeterminada: 0x80, después de cambiar un bit a la derecha, será 0x40, y luego cambie el MAX9295A correspondiente a 0x41-0x44 al abrir los canales laneA-laneD en el 96712 a su vez, el código es el siguiente:

Se utiliza la herramienta i2c-tools bajo linux:

El kit de herramientas i2c-tools de código fuente abierto en Linux proporciona múltiples herramientas i2c, que pueden escanear direcciones (i2c-detect) basadas en el kit de herramientas, probar la lectura y escritura del registro i2c, etc.

3. Descripción del oleoducto

Diagrama de tubería GMSL1:

ilustrar:

En el modo GMSL1, cada serializador no puede contener varias tuberías y, después de ingresar el max96712, las tuberías internas no se pueden emparejar arbitrariamente. La conexión fija es como se muestra en la parte roja de arriba:

GMSL1 A -->TUBO 0

GMSL1 B -->TUBO1

GMSL1 C -->TUBO 2

GMSL1 D -->TUBO3

Diagrama de tubería GMSL2:

ilustrar:

El serializador se puede configurar como tubería de salida X/tubería Y/tubería Z/tubería U 4. En general, se puede configurar como uno (nosotros lo configuramos como tubería Z), pero si necesita generar datos originales RAW o datos HDR , puede configurarlo Más de una tubería, como se muestra arriba, GMSL2 A/GMSL2 D están configurados con dos tuberías de salida

El deserializador 96712 puede seleccionar pipex/y/z/u en la entrada PORTA-PORTD para pipe0-pipe7 Para obtener más información, consulte el registro 0xF0, 0xF1, 0xF2, 0xF3

Para pipe, map_src, map_dst, registros relacionados con mipi-csi2 y configuración de selección de canal, configuración de canal virtual VC, etc., consulte los registros relacionados a partir de 0X90A, como 0x90a/0x90b/0x92d/0x90d/0x90e, etc.

Hemos asignado 4 números de canales virtuales como VC 0/1/2/3 para los 4 canales de datos de 96712, ocupando dos bits

4. Sincronización de cuadros de activación PWM

Esquema predeterminado: no use GPIO externo para activar FSYNC, use la señal FSYNC interna

La configuración es la siguiente:

registro: 0x4a0 valor: 0x02

Entrada GPIO externa PWM 96712 para activar FSYNC

La configuración es la siguiente:

registro: 0x4a0 valor: 0x08

registro: 0x4af valor: 0x9f

nota:

En este modo, el SoC necesita activar PWM y enviar al pin de sincronización FSYNC de max96712, que puede controlar el tiempo de activación de la imagen, la sincronización y la velocidad de fotogramas de varias cámaras. La siguiente figura proporciona condiciones de prueba de 20 Hz/25 Hz respectivamente.

20Hz: intervalo de 500ms para obtener 10 cuadros de imágenes en la capa de aplicación

 25Hz: El intervalo para obtener 10 cuadros de imágenes en la capa de aplicación es de 400ms

5. Conceptos básicos de la imagen

Breve introducción de YUV

Dividido en tres componentes, "Y" representa el brillo (Luminancia o Luma), es decir, el valor de gris; mientras que "U" y "V" representan el croma (Crominancia o Chroma), que se utilizan para describir el color de la imagen y Saturación, que especifica el color del píxel.

YUV se divide en dos formatos, planar y empaquetado. El formato planar primero almacena la Y de todos los píxeles y luego almacena UV, que se divide en 2-planar/3-planar. En formato empaquetado, cada píxel Y, U, V se almacena de forma alterna y continua

Cb en YCbCr marca U, Cr marca V

YUV422 8bit: instrucciones clave, aprende otros formatos por ti mismo

Ejemplo de leyenda:

 Estilo de transferencia:

 formato de cuadro:

nota:

Tenga en cuenta que los datos en formato YUV422 pueden causar colores anormales si la secuencia de transmisión no coincide

Supongo que te gusta

Origin blog.csdn.net/kimginginging/article/details/127963368
Recomendado
Clasificación