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