1.硬件
首先了解基本硬件,就是攝像頭的供電

接着是上電時序

這里需要注意的是,XSHUTDN就是reset引腳,低電平復位,正常工作的時候,應該是高電平
PWDNB是和復位腳差不多功能的,給寄存器復位,所以這兩個,比較關鍵,我這里是使用了DOVDD和XSHUTDN連接的情況,所以驅動中power_on處理的時候,拉高reset以后,不延時,直接拉高pwdn,然后延時,才能讓模塊上電
dvdd avdd iovdd上電時序其實要求並不嚴格,之前我一直讀取不到模塊id,就是因為我們分開供電XSHUYDN和PWDNB,而驅動中是先拉低reset然后拉高延時2Ms再拉高pwdn,所以導致系統一直沒有工作起來,去讀i2c的時候返回-5
這里rk也有案例
實際上很簡單,驅動中probe以后,就開始檢測獲dts配置,然后就power_on執行上電流程,上電以后,第一步就是check_id,也就是讀取攝像頭id,如果i2c通信異常,那么久無法進行下面的工作,直接return
經過一番折騰,i2c正常讀取id,解決了前面最關鍵的一步
切記:如果i2c讀取不到,確保硬件電壓,時鍾正常,然后基本上就是時序了
如果硬件都沒問題,但是讀取的時候沒有一直錯,可能先考慮給一個for循環,循環發送0x00-0xff,看看有沒有回應,避免因為地址錯誤這種低級錯誤

2. DTS配置


下面是我關於ov8858的配置,其實可以直接參考文檔,在rk工程源碼下
RKDocs\common\camera\HAL3



先記錄到這里,基本的到這一步,就可以讀取id,進行mipi傳輸
