标签:
自动AEC相关的寄存器配置的原理如上图。主要设置如下:
{0x3a0f, 0x40},
{0x3a10, 0x38},
{0x3a1b, 0x48},
{0x3a1e, 0x30},
{0x3a11, 0x90},
{0x3a1f, 0x10},
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);
自动曝光时间的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相关的寄存器学习配置记录
标签:
原文地址:http://blog.csdn.net/gzzaigcnforever/article/details/44757491