我在imx334的源码上进行的修改,所以基本上替换些不同的寄存器啥的就OK了
一、看sensor规格书
首先进规格书里查找AE那块 所需的配置,并手动改改对应寄存器看看是否正常
1、曝光行(shutter)
看手册:shutter 0x3050~0x3052
修改SHR0 曝光行 0x3050~0x3052,因为我暂时没镜头,只能观察到画面稍微闪动一下,对比不明显,就不放上来了
2、增益(gain)
增益修改GAIN: 0x306C~0x306D
可以观察到拉高增益后带来的过曝
3、降帧
修改VMAX降帧:0x3028~0x302A,比如 008CA-> 00D2F,从30帧降到20帧
能看到拉流工具显示的帧率变换能对的上
备注下,海思自带的拉流工具,底下的Exp_time(us) = 1/fps * 1/vts,第一次看的时候想当然的以为是曝光时间,没想明白为啥是这个数= =
4、gain_table
弄个将dB转化为线性的表,再将对应dB转换下,不理解如何算的可以参考这篇db与linear转换
公式:假设 XdB,转换后的linear为Y,gain为Z
Y = 10^(X/20) ,Z = Y * 1024
根据手册能查到,IMX585按0.3dB递增,Max dB为72,我不想一个一个算,就直接拖了个Excel表格
右边就是gain_table需要填入的数
二、sensor驱动源码的修改
手动修改相应寄存器无误后,将寄存器和数组填入驱动源码对应的地方即可
三、修改后的sensor驱动测试
驱动修改完之后,编译sensor驱动放板子上进行测试,忘记咋操作的话可以参考初步点亮的这篇https://blog.csdn.net/sashimi69/article/details/140477349
观察到曝光行 增益能正常随着环境亮暗进行变化,且未观察到画面闪烁等AE异常问题,说明AE初步配置就已经OK了。
如果测出闪烁或者水波纹之类的亮度问题,参照3A开发指南进行参数修改
1、AE闪
在测试过程中碰到了亮度闪烁问题
- 现象:在室外场景,某个亮度增益区间出现画面闪烁,通过修改目标亮度compensation可以消除和复现这个问题
- 解决(规避):根据3A开发手册和sensor调试指南排查了一遍,没定位到问题,最后增大Tolerance(自动曝光调整对画面亮度的容忍偏差) 貌似能解决这个问题。
感觉这样只是规避,不是彻底解决,后续有空再研究研究
主要自己记录流程,欢迎大家参考交流,有啥不足或者写的有误的欢迎提出来