OV Camera AE相关的寄存器学习配置记录

OV Camera AE相关的寄存器学习配置记录_第1张图片
自动AEC相关的寄存器配置的原理如上图。主要设置如下:
    {0x3a0f, 0x40},
    {0x3a10, 0x38},
    {0x3a1b, 0x48},
    {0x3a1e, 0x30},
    {0x3a11, 0x90},
    {0x3a1f, 0x10},    

OV Camera AE相关的寄存器学习配置记录_第2张图片

 band_step60 = preview_sysclk * 100/preview_HTS * 100/120;
 OV5640_write_i2c(0x3a0a, (band_step60 >> 8));
 OV5640_write_i2c(0x3a0b, (band_step60 & 0xff));
 max_band60 = int((preview_VTS-4)/band_step60);
 OV5640_write_i2c(0x3a0d, max_band60);
 // 50Hz
 band_step50 = preview_sysclk * 100/preview_HTS; 
 OV5640_write_i2c(0x3a08, (band_step50 >> 8));
 OV5640_write_i2c(0x3a09, (band_step50 & 0xff));
 max_band50 = int((preview_VTS-4)/band_step50);
 OV5640_write_i2c(0x3a0e, max_band50);

OV Camera AE相关的寄存器学习配置记录_第3张图片

自动曝光时间的manual 设置:
曝光时间最好是n/100或者n/120来设置,一般设置这个曝光时间可以去除灯光闪烁的条纹现象light flicker。

假设输出一行的时间为row,曝光行数exp.
exp*row = 10*N ms(N为整数)。曝光内灯光影响均匀,不会出现受灯光强度不同的影响。
row time = 1/pclk*1792. 
exp = pclk/100/HST。

row 是通过PCLK*HST来设置,即输出一行所需的时间。
最终得到需要的exp一次可以曝光多少行,即可决定曝光时间。基本上720p的话,1/60秒之内肯定能曝光完成并输出一帧。
曝光行数需要*16倍并写入下面的0x[3500, 3502]之中。写入的曝光value后,内部会自动转为当前帧率下的曝光时间。实际上value的写入可比计算出来的exp小一些。

上述的设置,可以很好的去除flicker现象。
不过一定环境下还能做一定的曝光补偿。


你可能感兴趣的:(OV Camera AE相关的寄存器学习配置记录)