“ 日常工作中, 我們拿到一款新 sensor,一般都是先點(diǎn)亮,再接著調(diào)試效果。但點(diǎn)亮及調(diào)試也是有流程的,需按流程一步步去完成才可以,此文總結(jié)一下 ,關(guān)于 sensor 從點(diǎn)亮出圖到效果調(diào)試的一個(gè)大致流程 。如覺得文中哪里有問題,或者不清楚的地方,歡迎聯(lián)系指出?!?/p>
1、Sensor 調(diào)試流程

2、準(zhǔn)備材料
1)、確認(rèn)主芯片規(guī)格
支持的最大分辨率、mclk、mipi 速率上限、支持的lane數(shù)、 支持的raw圖像位深、支持的raw圖像類型(mono/rgb/rgbir)
2)、硬件原理圖
客戶主板上調(diào)試,則需要客戶提供主板原理圖;平臺(tái)公板上調(diào)試,則需要提供模組轉(zhuǎn)接板原理圖、相應(yīng)公板的原理圖。
3)、Sensor datasheet
確認(rèn)曝光時(shí)間、增益如何設(shè)置,幀率如何修改;確認(rèn) WDR 輸出模式( 是否是dol模式/ dol_virtual channel/ dol_lineinfo)。
4)、Initialize setting
向 sensor 原廠申請(qǐng)所需規(guī)格的 sensor setting ,包含信息有:mclk、mipi速率上限、分辨率、mipi_lane數(shù)、幀率、輸出raw圖像位寬、出圖模式 (linera/wdr) 。
3、配置驅(qū)動(dòng)
配置好i2c地址、sensor setting、sensor chip_id;
根據(jù)主板原理圖,在 dts 中配置 mclk、reset、pwrdn、i2c 的引腳控制,在驅(qū)動(dòng)中配置 sensor pwrdn,reset 的拉高拉低、上電時(shí)序;
其他配置,需根據(jù)不同平臺(tái)去具體配置,一般完成上述配置硬件沒問題的話,就可以點(diǎn)亮出圖了。
4、Sensor 出圖
步驟 3 完成后,硬件沒問題的話,一般就可以出圖了
若I2C不通,就要排查下板子的硬件相關(guān)問題:
1)、確認(rèn)AVDD? DOVDD? DVDD 硬件電壓
2)、根據(jù)原理圖確認(rèn)reset、pwrdn、i2c、mclk 引腳控制及電壓值
3)、確認(rèn) mclk 頻率
4)、確認(rèn) sensor 上電時(shí)序
若出圖異常(圖像分屏、錯(cuò)位、顯示不完整 ....);
1)、拍raw圖,確認(rèn) raw 圖是否正常。
2)、若raw 圖也異常,輸指令排查下mipi 傳輸是否有報(bào)錯(cuò)、示波器量一下mipi 波形,如果都正常的話,那一般就是 sensor setting 有問題,要找sensor 原廠去看了。
3)、但若raw 圖正常,那就應(yīng)該是驅(qū)動(dòng)或者ISP的配置哪里還有問題,要繼續(xù)排查 。
具體也可參考這篇文章:Sensor bringup 中的一些問題總結(jié)
5、AE配置

如上圖所示,AE分為算法模塊和統(tǒng)計(jì)模塊,算法模塊是純軟件模塊。所以有很多品牌廠商,雖然用同樣的平臺(tái),但為了做出差異化的產(chǎn)品,都是用自己開發(fā)的 3A 算法。AE 統(tǒng)計(jì)模塊是和硬件相關(guān)的,包含在 ISP pipeline 里。
AE的整個(gè)控制流程,如上示意圖所示,AE 算法控制一組曝光參數(shù)(曝光時(shí)間、sensor 模擬增益、sensor 數(shù)字增益、isp 數(shù)字增益),通過配置的sensor 驅(qū)動(dòng)寫入到 sensor 寄存器中(isp dgain 是直接寫入相應(yīng)的 isp 寄存器中的,不通過 sensor 驅(qū)動(dòng)來控制),輸出圖像數(shù)據(jù)。
數(shù)據(jù)經(jīng)過 AE 統(tǒng)計(jì)模塊,將亮度統(tǒng)計(jì)信息給到 AE 算法模塊,再次實(shí)時(shí)計(jì)算得出一組曝光參數(shù),直到曝光正確,循環(huán)才結(jié)束。首次上電啟動(dòng)時(shí),是從sensor 驅(qū)動(dòng)開始加載的,驅(qū)動(dòng)中包含一組默認(rèn)的初始化參數(shù),可以點(diǎn)亮出圖 。
那sensor 驅(qū)動(dòng)中如何配置 AE ?
1>、首先配置曝光時(shí)間
根據(jù) sensor datasheet 配置好最大最小積分時(shí)間,然后將 AE 計(jì)算出的曝光行,寫入到相應(yīng)控制曝光時(shí)間的寄存器就可以了。這里說的是逐行曝光的 sensor,它是按行進(jìn)行曝光的,積分時(shí)間是相對(duì)時(shí)間,exposure_time = integration_time * line_time(一行時(shí)間)。
2>、配置sensor 模擬增益、數(shù)字增益
一般我們只需配置 sensor 模擬增益就可以了,不用數(shù)字增益,但會(huì)用到isp 數(shù)字增益,它是 AE 算法控制的,不用在 sensor 驅(qū)動(dòng)中去配置??偨Y(jié)一下,關(guān)于sensor 模擬增益的控制,一般分為3種形式。
一種是寫入 sensor again 寄存器的值有具體要求,會(huì)有一個(gè) again_table,配置好平臺(tái)與 Sensor 的匹配精度(對(duì)應(yīng)好幾倍增益,應(yīng)該寫什么值),通過查 again_table 寫入。一般思特威和格科微的 again 配置,都是要查表寫入,如下是 sc230ai datasheet 中的 again_table 。

另一種是,寫入 sensor again 寄存器的值是連續(xù)的,配置好平臺(tái)與 Sensor 的匹配精度,將平臺(tái) AE 計(jì)算的 again 值寫入sensor 即可。如下是ov08a10的again 配置,0x3503[2]=0 ,real_gain=Gain[12:0]/128,精度是128,[0-7]是配置小數(shù)位,[8-12] 是配置整數(shù)位;0x3503[2]=1, Gain[12:0],只有整數(shù)位1x,2x,4x,8x 。

后一種是如下imx335 所示,寫入 sensor again 寄存器的值,是要求轉(zhuǎn)換成dB寫入,不是增益倍數(shù)的方式寫入,它是非線性的,將平臺(tái) AE 計(jì)算的 gain 值轉(zhuǎn)換成 dB 形式寫入 sensor 寄存器;

3>、驗(yàn)證曝光及模擬增益的配置是否正確
最后要通過調(diào)試工具手動(dòng)去控制積分時(shí)間、模擬增益的寫入,然后通過讀 sensor 相應(yīng)的寄存器的值,來判斷寫入的數(shù)據(jù)是否正確,以此來檢查驅(qū)動(dòng)中的相關(guān)配置是否正確。
6、圖像驗(yàn)證
拉高增益和曝光,驗(yàn)證是否有電源噪聲/FPN:如下圖所示,有橫條紋則一般和硬件相關(guān),豎條紋是和 sensor 相關(guān),要找硬件和 sensor 原廠的人去看。

確認(rèn)鏡頭品質(zhì):拍攝 ISO22233 解析力卡的raw 圖,若圖卡對(duì)焦對(duì)不清晰,四周模糊,或者單獨(dú)某一邊模糊,則鏡頭品質(zhì)有問題,需更換鏡頭。

7、圖像質(zhì)量調(diào)優(yōu)
可參考此篇文章:ISP調(diào)試流程概述