平台:展訊7730
模塊:camera
IC: OV5648
問題:AF無功能
現象:客戶新打樣OV5648的camera, 發現AF無功能,更換IC之前AF功能正常,更換為OV5648之后AF無功能。
分析過程:
前提:在模組的pin定義中,有兩個和AF有關,一個是AF 的電壓, 一個就是AF PWN(GPIO),AF能正常工作的條件就是:電壓正確配置(2.8V),AF PWN拉高。
1、首先檢查驅動代碼,檢查AF 兩個pin的配置是否正確,經檢查都沒有問題,換成另一家IC的模組,同樣的軟件,AF可以正常工作。
2、檢查硬件,分別測量 IOVDD, DVDD, AVDD,以及AF 供電電壓和AF PWN等5個pin的電壓, 經過測量發現,5個電壓全正常,尤其是AF pwn這個GPIO,因為只有這個GPIO拉高,才能enable AF 功能。因為AF PWN這個GPIO有電壓輸出,說明軟件在配置上方法是對的。
3、驗證camera模組的打樣正確性,基帶同事幫忙短接了9pin(mian camera pwn)和10pin(AF PWN),這時竟然發現AF可以正常工作了。(找到一種臨時解決方案)。
4、這時用示波器分別測量無短接和短接兩種情況下,main camera pwn和AF PWN兩個pin腳的上電順序,發現在無短接的情況下,AF PWN的上電時間要比main camera pwn早那么一點點,而短接情況下,兩個pin幾乎就同時上電了,這時就猜想是不是 AF PWM一定要在AF VDD正確配置后再拉高,AF才能正確工作呢?對於我們常見的camera pwn 都是在 IOVDD, DVDD, AVDD 3個電壓正確設置后才拉高/拉底 pwn。
為什么會出現這樣的情況?
是因為AF PWN這個GPIO的拉高操作是我在kernel的probe函數里拉高的,而不像 camera pwn似的,在camera的驅動的上電函數里拉高/拉低。
5、查看模組使用的馬達(DW9714)的上電時序圖,發現AF pwn的拉高動作要比 AF VDD電壓上電后 delay 2ms,然后再delay 至少11ms后再進行馬達I2C的通訊。后面就來驗證在軟件上如果按照這樣一個上電時序圖進行配置,AF能否正常工作。
6、軟件修改其實很簡單,根據camera PWN 或 reset的函數接口,寫了一個操作AF PWN的接口函數(展訊平台,並沒有AF PWN這個GPIO的接口函數,要自己添加),然后設置正確的delay,AF就可以正常工作了。注意的是,camera退出的時候,在去電的函數里,要把AF PWN再拉低,如果沒有這個操作,只能進入camera的第一次,AF是可以正常的工作的,退出后,再進入,又不可以了。原因就是如果不拉低,第二次又是再上電之前已經把AF PWN拉高了。AF一直處於一個拉高的狀態了。