对于OV Image Sensor的Analog Gain设置大体上分为2种方式,一种采用连续方式,另一种采用离散方式,本文以OS08A10和OV2710为例来进行介绍。
1.连续方式
以OS08A10为例,OS08A10可以选择采用连续,也可以选择采用离散方式,这里主要关注它的连续方式。
连续/离散在这里选择,real gain即表示真实增益,sensor gain即表示离散方式设置增益。采用连续方式要将0x3503[2]设置为0。
从图中可以看出,采用连续方式时Long Gain[12:0]共13 bits,其中Long Gain[12:7]表示整数(共6位),Long Gain[6:0]表示小数(共7位),因此,real_gain=Long Gain[12:0]/128,其可以表示的增益最小值为:0,最大值为:8191(0x1fff)/128=63.99倍。
2.离散方式
虽然OS08A10也可以采用离散方式进行增益的设置,但其离散增益的设置并不是清晰明了(无公式说明),我们以OV2710为例进行考察。
从图中可以看出,OV2710的Gain采用0x350A,0x350B 2个寄存器进行设置,
Gain=(0x350A[0]+1)*(0x350B[7]+1)*(0x350B[6]+1)*(0x350B[5]+1)*(0x350B[4]+1)*(0x350B[3:0]/16+1)
如果粗调按最小值进行设置(如:0b0000,0b00001,0b00011),也可以表示为
Gain=((0x350A[0],0x350B[7:4])+1)*(0x350B[3:0]/16+1)
其增益设置采用{0x350A[0],0x350B[7:4]}中"1"的个数n表示粗调,粗调值C=2^n,采用0x350B[3:0]的码值代表细调,细调值F=0x350B[3:0]/16+1,步长为:1/16=0.0625。其可以表示的增益最小值为:1,最大值为:2^5*(15/16+1)=62倍。
如:
{0x350A,0x350B}={0x00,0x27}时,表示放大2*(7/16+1)=2*1.4375=2.875倍
需要注意的是,OV2710的增益设置包含了模拟增益(16x)和数字增益(4x),如上图。
回到OS08A10的离散增益方式也是类似的,Gain[12:8]表示粗调,Gain[6:3]表示细调,
Gain=(0x3508[4]+1)*(0x3508[3]+1)*(0x3508[2]+1)*(0x3508[1]+1)*(0x3508[0]+1)*(0x3509[6:3]/16+1)
寄存器设置参考伪代码:
Temp1 = gain;
if (Temp1 > 2) {
Temp1 = Temp1 / 2;
Temp2 = 0x10;
}
if (Temp1 > 2) {
Temp1 = Temp1 / 2;
Temp2 = Temp2 | 0x20;
}
if (Temp1 > 2) {
Temp1 = Temp1 / 2;
Temp2 = Temp2 | 0x40;
}
if (Temp1 > 2) {
Temp1 = Temp1 / 2;
Temp2 = Temp2 | 0x80;
}
Temp3 = Temp2 | (Temp1 * 16 - 16);
3.总结
本文介绍了OV的2种设置模拟增益的2种设置方式,使用过程中可根据实际使用场景选择合适的增益设置。