這周組長接了個畢設的活交給我們做,模組大體上是用了ov7725+超聲波+蜂鳴器報警+按鍵+lcd+led。
一、簡介
流程圖如下:
在這個專案中我主要負責攝像頭模組,攝像頭的配置和顯示。先對攝像頭進行一下介紹:
1、這次專案用的是ov7725,該攝像頭主要由鏡頭、影象感測器、板載電路、fifo 快取及下方的訊號引腳組成。
以下為該攝像頭的實體圖和引腳圖:
2、該攝像頭與lcd的通訊:外部控制器對 ov7725 暫存器的配置引數是通過 sccb 匯流排傳輸過去的,sccb 匯流排跟 i2c 十分類似,所以在 stm32 驅動中可以直接使用片上 i2c 外設與它通訊。sccb 的起始訊號、停止訊號及資料有效性與 i2c 完全一樣,在 sccb 協議中定義的讀寫操作與 i2c 也是一樣的,這裡就不多說了,學過32的人肯定都了解。
3、畫素資料輸出:
ov7725輸出影象時則使用 vga 或qvga 時序。
vga 在輸出影象解析度為 480*640
qvga 是 quarter vga,其輸出解析度為 240*320
ov7725 感測器輸出影象時,一幀幀地輸出,在幀內的資料一般從左到右,從上到下,乙個畫素乙個畫素地輸出(也可通過暫存器修改方向)。在輸出影象時,共有8種模式,我一般習慣於從左到右,從上到下,即模式6。
3、fifo讀寫時序
秉火的 ov7725 攝像頭在影象感測器之外還新增了乙個型號為 al422b 的 fifo,用於緩衝資料。al422b 的本質是
一種 ram 儲存器,它的容量大小為 393216 位元組,支援同時寫入和讀出資料。
4、攝像頭驅動
攝像頭採集資料的過程如下:
(1) 利用 sio_c、sio_d 引腳通過 sccb 協議向 ov7725 的暫存器寫入初始化配置;
(2) 初始化完成後,ov7725 感測器會使用 vga 時序輸出影象資料,它的 vsync 會
首先輸出幀有效訊號(低電平跳變),當外部的控制器(如 stm32)檢測到該訊號
時,把 wen 引腳設定為高電平,並且使用 wrst 引腳復位 fifo 的寫指標到 0 地
址;(3) 隨著 ov7725 繼續按 vga 時序輸出影象資料,它在傳輸每行有效資料時, href
引腳都會持續輸出高電平,由於 wen 和 href 同時為高電平輸入至與非門,使得
其連線到 fifo we 引腳的輸出為低電平,允許向 fifo 寫入資料,所以在這期間,
ov7725 通過它的 pclk 和 d[0:7]訊號線把影象資料儲存到 fifo 中,由於前面復
位了寫指標,所以影象資料是從 fifo 的 0 位址開始記錄的;
(4) 各行影象資料持續傳輸至 fifo,受 href 控制的 we 引腳確保了寫入到 fifo 中
的都是有效的影象資料,ov7725 輸出完一幀資料時,vsync 會再次輸出幀有效
訊號,表示一幀影象已輸出完成;
(5) 控制器檢測到上述 vsync 訊號後,可知 fifo 中已儲存好一幀影象資料,這時控
制 wen 引腳為低電平,使得 fifo 禁止寫入,防止 ov7725 持續輸出的下一幀數
據覆蓋當前 fifo 資料;
(6) 控制器使用rrst復位讀指標到fifo的0位址,然後通過fifo的rclk和do[0:7]
引腳,從 0 位址開始把 fifo 快取的整幀影象資料讀取出來。在這期間,ov7725
是持續輸出它採集到的影象資料的,但由於禁止寫入 fifo,這些資料被丟棄了;
(7) 控制器使用 wrst 復位寫指標到 fifo 的 0 位址,然後等待新的 vsync 有效訊號
到來,檢測到後把 wen 引腳設定為高電平,恢復 ov7725 向 fifo 的寫入許可權,
ov7725 輸出的新一幀影象資料會被寫入到 fifo 的 0 位址中,重複上述過程。
攝像頭的例程一般很容易找到,我主要說一下除錯攝像頭時遇到的問題。
if(change==0)
else if(change==1)
break;
基於stm32f103的矩陣鍵盤
我現在的任務是做乙個8 8的矩陣鍵盤,制pcb版之前,我用電路板搭了乙個3 3的矩陣鍵盤來模擬一下,設定pa0 pa1 pa2為pp輸出,設定p3 p4 p5下拉輸入。大多數的晶元內部上拉或下拉電阻都是弱上拉或弱下拉,stm32f103的內部也一樣,內部上拉或下拉的電阻阻值約為40k,這樣可以方便外...
基於stm32f103的火箭車
申明一下 忘了在哪兒買的,今天突然看見,就發出來吧,有需要的自取。遠端遙控採用網際網路wifi控制方案,由上位機軟體下達指令通過網際網路wifi將資料傳給下位機進而做出相應動作。上位機由 wifi機械人網 提供,下位機採用stm32f103z微控制器作為處理資料並執行相應指令的平台。小車由6部分組成...
stm32f103外部中斷
void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...