系統(tǒng)軟件設(shè)計
關(guān)于STM32的片上資源,LCD ILI9341液晶屏的基本配置,SD卡的驅(qū)動及文件系統(tǒng),OV7725攝像頭功能的介紹已經(jīng)在上一個章節(jié)中進(jìn)行了詳細(xì)的說明。硬件平臺的搭建都是建立在STM32開發(fā)板與其他器件模塊連接上的,本章節(jié)則主要采用自頂向下,層層細(xì)化的程序設(shè)計思想,分模塊講解整個系統(tǒng)的軟件實(shí)現(xiàn)流程。
3.1 頂層程序設(shè)計
STM32照相機(jī)基本流程可以描述為:系統(tǒng)初始化,拍照處理。首先是系統(tǒng)初始化,包括系統(tǒng)時鐘配置,對按鍵的GPIO和中斷使能,LED的GPIO初始化;再初始化LCD的GPIO,FSMC總線功能和內(nèi)部寄存器;還有初始化SD卡FATFS文件系統(tǒng)并使能SDIO的中斷;最后,在實(shí)現(xiàn)模擬SCCB總線后,OV7725還需要配置FIFO的GPIO和OV7725內(nèi)部的寄存器,并初始化場信號線。接著,拍照處理:等待幀同步信號,進(jìn)入攝像;等待按鍵,開始拍照(即液晶截屏)并將圖片保存到SD卡中,見圖3.1。
3.2 系統(tǒng)初始化程序設(shè)計
3.2.1 GPIO初始化
在第二章的主控模塊部分已經(jīng)介紹了GPIO的寄存器和引腳的輸入輸出模式,對復(fù)用功能實(shí)現(xiàn)也做出了詳細(xì)說明。在STM32控制下的LED,KEY的GPIO以及LCD,SD card,攝像頭使用的所有GPIO或特殊功能引腳的設(shè)置都要通過流程圖來實(shí)現(xiàn)(圖3.2)。
3.2.2 LCD初始化
LCD初始化主要包括兩個內(nèi)容:FSMC總線配置,LCD寄存器配置,見圖3.3。程序中的涉及液晶屏的讀寫操作(如清屏,設(shè)置液晶掃描方向以及寫入圖片信息),都是在向Bank1_LCD_C和Bank1_LCD_D兩個區(qū)域分別寫入命令和數(shù)據(jù)實(shí)現(xiàn)的。其中,命令/數(shù)據(jù)的含義可參考ILI9341參考手冊上的內(nèi)容,在第二章的液晶顯示模塊中也給出了部分指令的含義。
3.2.3 SD卡文件系統(tǒng)初始化
SD卡文件系統(tǒng)初始化可分兩塊:SD卡中斷初始化和硬件初始化。如何設(shè)置中斷和FatFs文件系統(tǒng)的函數(shù)接口前面都已經(jīng)介紹過了,圖3.4是整個SD卡文件系統(tǒng)的初始化流程圖。
3.2.4 OV7725初始化
攝像頭OV7725的初始化分為三大部分:SCCB總線和FIFO的GPIO初始化,傳感器的初始化,場信號線的初始化。其中的SCCB總線時序在上一章已經(jīng)講過,圖3.5是OV7725初始化的程序流程圖。
圖3.1 主程序流程圖
圖3.2 GPIO的配置及復(fù)用
圖3.3 LCD初始化流程
圖3.4 SD卡文件初始化流程
圖3.5 OV7725初始化流程
3.3 拍照處理程序設(shè)計
前幾個小節(jié)詳細(xì)介紹了各個子模塊的初始化的實(shí)現(xiàn),從主程序框圖上看,還要有FIFO的準(zhǔn)備,圖像采集與顯示,中斷服務(wù)程序,液晶截屏與保存子程序。FIFO的準(zhǔn)備(使能數(shù)據(jù)出FIFO輸出),圖像采集與顯示是通過反復(fù)的讀FIFO的輸出并往LCD寄存器寫入數(shù)據(jù)的過程,這些可以參考第二章的液晶顯示模塊和圖像采集模塊中FIFO的時序。最后一小節(jié)的重點(diǎn)是液晶截屏和圖片保存的流程控制,見圖3.6。
圖3.6 液晶截屏與保存流程
-
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364702 -
照相機(jī)
+關(guān)注
關(guān)注
0文章
69瀏覽量
27295
原文標(biāo)題:基于STM32的照相機(jī)系統(tǒng)的實(shí)現(xiàn)(系統(tǒng)軟件設(shè)計)
文章出處:【微信號:SCMseries,微信公眾號:單片機(jī)系列】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于STM32設(shè)計的門禁照相機(jī)


照相機(jī)應(yīng)如何選擇電池?
照相機(jī)

評論