基於mini2440的ov9650攝像頭裸機測試

2021-06-03 00:59:07 字數 973 閱讀 3287

ov9650暫存器在模組的內部,s3c2440是以sccb匯流排來與ov9650通訊。sccb匯流排類似iic匯流排,而且mini2440攝像頭介面的sccb匯流排就接在了他的iic介面上,所以可以通過iic來配置ov9650的暫存器,同樣也可以用gpio來模擬sccb匯流排的時序。ov9650有大量的暫存器需要設定,但是一般不需要我們關心,廠商將一些常用的配置寫成陣列,直接賦值就可以了。需要我們關心的是廠商id暫存器,這個一般在攝像頭初始化之前用來判定攝像頭是否正確安裝。

ciprtrgfmt      這個暫存器主要設定目標影象的長寬與是否進行旋轉與映象處理

ciprctrl        突發長度暫存器,這裡的值與目標影象的寬度有關,有計算公式,不需要關許只需要呼叫函式計算然後賦值給它就可以了

ciprscpreratio

ciprscpredst

ciprtarea    目標影象面積暫存器,這個主要用於決定dma一次傳送的資料量

ciprclrsa1

ciprclrsa2

ciprclrsa3

ciprclrsa4   這四個暫存器是dma目的暫存器,也就是攝像頭介面輸出存放資料的地方,如果直接顯示的話就要都賦值成lcd的幀緩衝首位址

(1) 讀取廠商id,來判定攝像頭是否安裝正確,這首先需要正確操作sccb匯流排,這一步也可以用來判定sccb匯流排時序是否正確。   

(2) 配置攝像頭,事先將暫存器的位址以及對應的值寫入陣列,直接通過迴圈完成配置,配置完成之後就不需要操作sccb匯流排了,也就是不需要管ov9650這端了。以下的操作設定攝像頭介面這端的暫存器就可以了。

(3) 設定攝像頭所需的時鐘,設定控制暫存器,復位攝像頭。

是在ubuntu下用amr-linux-gcc編譯的,如果安裝了arm-linux-gcc並且將命令匯入到了環境變數裡,直接在**目錄下make就可以了,程式參考了感謝博主對攝像頭詳盡的講述。在mini2440開發板上(配套lcd為統寶3.5寸屏)程式是可以正確執行的,如果其他的螢幕需要改一下引數。

基於mini2440的ov9650攝像頭裸機測試

ov9650暫存器在模組的內部,s3c2440是以sccb匯流排來與ov9650通訊。sccb匯流排類似iic匯流排,而且mini2440攝像頭介面的sccb匯流排就接在了他的iic介面上,所以可以通過iic來配置ov9650的暫存器,同樣也可以用gpio來模擬sccb匯流排的時序。ov9650有大...

基於mini2440的RTC讀寫(裸機)

很多處理器都有rtc實時時鐘功能,s3c2440也提供了這個功能,其功能主要是 實時時鐘 鬧鐘 tick中斷等。rtc的操作比較簡單。讀寫時rtccon最低位應設定為1,不讀寫時設定為0以免誤修改rtc相應暫存器。bcdsec,bcdmin,bcdhour,bcdday,bcddate,bcdmon...

基於mini2440的看門狗(裸機)

在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對微控制器執行狀態進行實時監測的考慮,便產生了一種專門用於監測微控制器...