1意敛、問題背景
這兩天在配置 sc223a 這顆 sensor 的驅(qū)動,按 datasheet 的要求配置 sensor 的曝光后膛虫,發(fā)現(xiàn)最大曝光時間增加了一倍草姻,
sensor setting 用的是30fps ,理論上最大的絕對曝光時間應(yīng)該是 33ms 才正確稍刀,
但實際用 tuning 工具讀到卻是 66ms撩独,這里記錄下這個問題的排查原因。
2掉丽、問題分析
對于此問題可以按如下步驟去做排查跌榔。
a. 有可能是降幀到了15fps導(dǎo)致的。
b. 檢查寫到 sensor 曝光寄存器的值是否正確捶障。
c. 檢查返回給算法的曝光參數(shù)的配置是否正確僧须。
a. 有可能是降幀到了15fps導(dǎo)致的。
曝光時間增加了1倍项炼,首先懷疑的就是幀率降了一半導(dǎo)致的担平,
這里要分兩步去排查示绊,一方面是否是默認(rèn)的 sensor setting 就是15fps, 而不是30fps ?
這里可以屏蔽驅(qū)動中,所有對 sensor 寄存器操作的代碼暂论,直接用默認(rèn)setting 出圖面褐,打印統(tǒng)計看下此時的幀率是多少。
另外一般 sensor 中都有配置修改幀率的函數(shù)取胎,是否是此處配置幀率異常導(dǎo)致的展哭。
這個也可以在驅(qū)動代碼中,直接注釋掉配置降幀的函數(shù)看看結(jié)果闻蛀。
結(jié)果是默認(rèn)的 sensor setting 出來就是30fps, 且屏蔽掉了降幀函數(shù)的配置匪傍,
但讀到的曝光時間還是66ms. 那就不是降幀到了15fps 導(dǎo)致的。
b. 接著就是檢查寫到 sensor 曝光寄存器的值是否正確觉痛。
可以在驅(qū)動中加打印役衡,查看寫入sensor 曝光寄存器的值是否是符合預(yù)期的,
見下圖是 setting 中默認(rèn)vts(幀長)的值薪棒,抓換成十進(jìn)制手蝎,就是1200。
見下圖是 sensor datasheet 中關(guān)于曝光寄存器的說明俐芯,
所以我讀出的 3e00, 3e01, 3e02的寄存器的值棵介,正常的應(yīng)該是在 1-2390 之間,
datasheet 中定義了最小曝光行是1泼各,最大曝光行是 2*vts-10 = 2390鞍时。
注意下這里的1-2390是曝光行,也就是我要寫入3e00扣蜻,3e01,3e02 這3個寄存器的值逆巍,
這里主要檢查的就是寫入方式有沒有按 sensor 的要求來。
舉個例子莽使,如果當(dāng)前場景下曝光行是2390锐极,按上面datasheet 的要求,要如何寫入 sensor 寄存器呢芳肌?
見下圖灵再,當(dāng)曝光行為2390時,在 sensor 寄存器中的存儲形式應(yīng)當(dāng)如下示意圖中所示亿笤。
2390 轉(zhuǎn)換成16進(jìn)制為 0x0956翎迁,按如上示意圖所示,
需要將曝光行:Exposure_line = 0x0956净薛,進(jìn)行移位操作按要求寫入到寄存器的指定比特位上汪榔,
具體移位操作如下:
sc223a_write_register(0x3e00, (Exposure_line>>12) & 0x0f);
sc223a_write_register(0x3e01, (Exposure_line>>4) & 0xff);
sc223a_write_register(0x3e02, ((Exposure_line>>0) & 0x0f) << 4);
結(jié)果是檢查了寫到 sensor 曝光寄存器的值也是沒啥問題的。
c. 檢查返回給算法的曝光參數(shù)的配置是否正確肃拜。
上面檢查了對 sensor 部分的控制是正常的痴腌,但要明確 tuning 工具讀出的曝光時間是由 ae 算法計算得出了雌团,
那這里大概率就是 ae 算法計算導(dǎo)致的。
但要考慮到的是我驅(qū)動返回給算法的曝光參數(shù)的配置有問題士聪,還是說我本身的算法有問題呢锦援?
因為同樣的環(huán)境我用接其他sensor 是沒問題的,那應(yīng)該就還是我驅(qū)動中返回給算法的曝光參數(shù)的配置有問題剥悟。
后面檢查看到灵寺,這顆 sensor 是半行曝光,但我配置給算法的 vts(幀長)的值懦胞,是默認(rèn)的1200替久,
實際應(yīng)該乘以2,配置2400行才對躏尉,所以導(dǎo)致曝光時間增加了1倍。
因為對于算法來說后众,它不存在半行曝光的說法胀糜,所以要和 sensor 保持一致,返回給算法的幀長蒂誉,就必須要乘以2才可以教藻。
3、問題總結(jié)
所以對于曝光時間異常的問題右锨,排查步驟一般如下:
a. 確認(rèn)幀率是否有問題括堤,sensor 幀率變化會影響曝光時間。
b. 檢查寫到 sensor 曝光寄存器的值是否正確绍移。
c. 檢查返回給算法的曝光參數(shù)的配置是否正確悄窃。