camera 驅動除錯常見問題總結
阿新 • • 發佈:2019-02-20
在嵌入式系統,如手機等平臺上使用的Camera sensor通常是由類似I2C這樣的匯流排進行暫存器控制,由CPU端的Controller提供所需的驅動時序,通常支援YUV和RGB等資料格式。有的Sensor需要由CPU進行影象處理工作,有的Sensor自己會整合影象處理晶片,完成一些基礎的影象處理工作,還有些高畫素的Sensor甚至自己完成JPEG的編碼工作。因為硬體的多樣性,我所遇到的問題可能和你的原因現象都不盡相同,分析內容僅供參考。
因為測量發現一切輸出訊號都正常,所以往往都會懷疑Sensor硬體存在問題,不過99%的情況,實際的原因總是因為I2C匯流排的ID值沒有設定對,導致裝置不響應命令。據我的觀察,每次一個新的工程師在除錯Sensor的時候幾乎都會遇上這個問題。 之所以這麼容易設定錯誤的原因,是因為通常Camera Sensor的Spec上所寫的I2C ID號,還包含了最後一位讀寫方向位。而這一位在I2C匯流排的定義中,嚴格來說,不屬於ID的一部分,所以Linux I2C的驅動API中的呼叫引數裡的ID號,通常是不考慮這一位的,讀寫方向位會在具體的讀寫操作中,在暫存器中進行設定。
Sensor端I2C匯流排沒有響應
- 症狀
所有輸入電壓和時鐘訊號都正常,往I2C總線上寫入讀取暫存器資料的命令後,sensor沒有響應,沒有資料從I2C總線上輸出。
- 分析
因為測量發現一切輸出訊號都正常,所以往往都會懷疑Sensor硬體存在問題,不過99%的情況,實際的原因總是因為I2C匯流排的ID值沒有設定對,導致裝置不響應命令。據我的觀察,每次一個新的工程師在除錯Sensor的時候幾乎都會遇上這個問題。 之所以這麼容易設定錯誤的原因,是因為通常Camera Sensor的Spec上所寫的I2C ID號,還包含了最後一位讀寫方向位。而這一位在I2C匯流排的定義中,嚴格來說,不屬於ID的一部分,所以Linux I2C的驅動API中的呼叫引數裡的ID號,通常是不考慮這一位的,讀寫方向位會在具體的讀寫操作中,在暫存器中進行設定。
- 解決
影象中有不斷變化的細密的水平條紋
- 症狀
- 分析
- 解決
影象上有固定的鋸齒狀垂直條紋
- 症狀
- 分析
- 解決
大尺寸時容易出現影象錯位
- 症狀
- 分析
- 解決
讀取到的資料顯示出來的時候是花屏
- 症狀
- 分析
- 解決