最近在做飛思卡爾,研究攝像頭,研究了大半周,終於弄懂了攝像頭使用原理。最近攝像頭相關算法也有點收獲,以后再寫。
首先,鷹眼是一款二值化攝像頭,只有黑白兩色。在調試上位機的時候可以直接發送img二值化01數據,也可以解壓后發送灰度數據,但這里的灰度數據只有0和255,沒有中間的過度,也相當於二值。
開始以為單片機向攝像頭發送信號,促使攝像頭把數據傳回來,但事實不是這樣的。
其實,鷹眼很主動。將他接電接地后,他會向單片機主動的發送數據和信號,其中重要的,有PCLK和場中斷信號。
場中斷是一幀圖像的開始,是一個脈沖,他由攝像頭發送到單片機后會激發單片機中斷,允許dma采集,之后dma才會在PCLK下降沿采集數據(PCLK也是攝像頭向單片機發送的)。PCLK就相當於時鍾,單片機相應引腳接收到他后,會在他的下降沿DMA采集數據,然后不斷采集,采集,直到采集結束,發送中斷信號,在其中斷中把接受狀態變為結束,清除dma標志位,數據就這么采集完成了,然后如果場中斷又來了的話,就繼續采集,如此往復,就得到了一幀一幀的圖像。
場中斷信號
PCLK
其實PCLK分組,一組十個,之后很長一段時間低電平。猜測每組時鍾之間的可能是消隱區。
求贊!給我來十個贊過過癮!
第一次寫博客的小萌新,抑制不住激動的心情,最后放一張圖表達一下
更新
遇到的問題:
用的原版程序,連接上位機顯示寄存器配置完成,但是就是接收不到數據
Get ID success,SENSOR ID is 0x21
Config Register Number is 50
OV7725 Register Config Success!
我們首先用示波器測試了攝像頭的場中斷、PCLK(上面的圖)沒有問題,程序用的他們給的,沒有問題,於是問題處在核心板或自己設計的電路板上。
之后把攝像頭拿下來,把pta27、29設定為普通io口輸出,發現輸出的高電平只有1.2v。初步判定核心板io異常。
我把核心板拿了下來,手動插線連接攝像頭,發現連接成功,上位機反饋正常,所以核心板沒問題。
分析:問題出在自己設計的板子上,這兩個io口下拉電阻,很可能是因為下拉電阻出問題了
綜上,場中斷和pclk口下拉電阻出問題,導致接收不到場中斷信號和時鍾,致使上位機寄存器配置成功而收不到數據。
被困擾了數晚的問題終於解決