引言
隨著電子產品向低功耗、低價格、智能化的方向發展,利用視頻傳感器采集圖像成為研究熱點,如可視門鈴、安全監控[1]、賽車自動循跡[23]、煙葉圖像采集[4]、草本葉子圖像采集[5]等。本文根據在線采集、分析、存儲圖像的需求,設計了嵌入式圖像采集系統,運用嵌入式芯片STM32對圖像信息進行采集、顯示和存儲。
1 系統結構與功能
圖像采集系統以基于ARM公司的CortexM3內核的STM32F103RBT6(以下簡稱STM32)處理器為核心,配合OV2640攝像頭和TFT液晶顯示器,是一款采集像素多、實時性好且成本低廉的圖像采集系統。
系統的硬件結構框圖如圖1所示,系統通過JLink口實現程序在STM32上的仿真、在線調試,利用JLINK仿真編程器將編譯之后的二進制文件燒寫到Flash中,系統每次上電時便可從Flash啟動文件系統,圖像采集系統采用OV2640攝像頭模塊,輸出顯示采用2.4英寸TFT液晶顯示屏,可將采集到的數據保存在SD卡中。當存儲按鍵按下時,系統接收中斷,同時將從OV2640攝像頭采集到的數據顯示在液晶顯示屏上。
圖1 系統硬件結構框圖
2 硬件設計
2.1 CPU處理器
本系統用的是32位的CortexM3內核的STM32芯片STM32F103RBT6,支持Thumb2指令集,STM32F103RBT6內部的Flash有128K,SRAM大小為20 K,有64個增強I/O口、2個USART、2個12位的A/D轉換器[6]。它的供電電壓為2.0~3.6 V,擁有省電模式,可以保證低功耗需求。CPU主頻最高可以達到72 MHz。
2.2 OV2640攝像頭
OV2640具有體積小、工作電壓低、兼容I2C總線接口等特點。通過SCCB總線控制,支持RawRGB、RGB(GRB4:2:2、RGB565/555/444)、YUV(4:2:2)和YCbCr(4:2:2)輸出格式,可以輸出整幀、二次轉換分辨率、取特定區域等方式的各種分辨率的8位或10位的圖像幀數據,UXGA(1 632×1 232)圖像最高達到15 fps。圖2OV2640攝像頭連接示意圖因此,編程者可選擇不同圖像質量、數據格式,而且,OV2640的高靈敏度適合低照度環境,它的低電壓特性適合嵌入式開發應用,攝像頭數據口連接CPU的示意圖如圖2所示。
采用攝像頭的8位數據模式,攝像頭高8位接CPU的I/O口的低8位,低2位懸空。
2.3 SCCB總線
SCCB(OmniVision Serial Camera Control Bus)與I2C總線協議類似,使用SIO0和SIO1兩根數據線進行傳輸和控制。SIO1是控制線,提供傳輸過程中的時鐘脈沖控制信號,SIO0是串行雙向數據傳輸線,根據控制信號通過串行的方式發送數據。在很多設計中,經常采用I/O口模擬I2C總線的傳輸,對于SCCB,也可以采用這樣的方式。
采用I/O口模擬SCCB總線的要點如下:對于SCL所連接的引腳,在寄存器中設置為輸出,而SDA所接的引腳,在數據傳送過程中,基于IODIR值的改變,動態改變引腳為輸入或輸出方式。
2.4 LCD顯示模塊
本設計所用的為2.4英寸的TFT液晶顯示屏,圖3系統與ILI9320連接圖內部集成有ILI9320 LCD控制芯片,可以直接控制數據的顯示。ILI9320可以用來讀寫寄存器、GRAM,還可顯示動態圖形的RGB輸入接口。顯示控制芯片有RGB接口模式與i80系統接口模式,設計選用i80system接口模式。
i80system接口是通過設置IM[3:0]來決定的,同時這幾個位也決定了數據傳輸位數的模式,通過硬件設置IM0位高電平,IM1位高電平,把模式設置為了8位i80system接口傳輸模式。連接示意圖如圖3所示。
要寫數據到屏上顯示,只需要對寄存器0x0022進行寫操作即可,當這個寄存器的數據更新時,地址指針(AC)會自動增加或減小,讀數據也是同樣的道理。
2.5 SD卡接口電路設計
通常而言,SD卡電路設計有兩種模式:SPI模式和SD卡模式,由于引腳資源限制,對于連接STM32的方式,采用第一種設計電路,通過STM32上面的SPI接口來和SD卡進行數據通信[8],引腳如圖4所示。
在SPI模式中,數據通過STM32的MOSI與MISO進行傳送,SCK信號線用來提供工作時鐘,當SD 卡收到復位命令(CMD0)時,SD卡立即進入SPI模式。要注意的是,在發送CMD0 之前須發送大于74個的時鐘周期;另外,在SD卡初始化時,CLK時鐘頻率最大不能超過400 kHz。
3軟件設計
3.1 系統初始化
系統初始化主要是對CPU時鐘進行初始化,以及設置外圍電路的時鐘分頻比,設置中斷。其流程可描述如下:
SystemInit();
if (HSEStartUpStatus == SUCCESS){
//如果HSE晶振穩定且就緒
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //PLL設置
RCC_CLKConfig();//設置外部總線時鐘
GPIO_PinRemapConfig();//改變指定引腳的映射
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
//設置中斷
}
3.2 攝像頭初始化
首先,通過SCCB總線設置OV2640的寄存器數據,主要是配置攝像頭輸出數據格式類型和輸出圖像數據大小,達到初始化OV2640的目的。OV2640初始化流程較為簡單,偽代碼如下:
unsigned char OV2640_init(void){
unsigned char temp;
unsigned inti=0;
OV2640_GPIO_Init();
SCCB_GPIO_Config();//攝像頭I/O口初始化
CLK_init_ON();//開攝像頭時鐘
temp=0x80;
//初始化并判斷是否成功
if(0==wrOV2640Reg(0x12, temp))
return 0;
for(i=0;i if( 0==wrOV2640Reg(change_reg[i][0],change_reg[i][1])) return 0; } return 0x01; //不成功則返回1 } 3.3 LCD顯示模塊 通過對ILI9320的讀寫操作時序控制進行仔細的分析后,初始化TFT屏幕,其實質就是對寄存器的設置。程序中對LCD控制器操作的函數接口主要有以下3個: LCD_WR_REG16()//寫寄存器命令 LCD_WR_DATA16()//寫寄存器數據 LCD_RD_DATA16()//讀寄存器數據 3.4 主程序流程與系統實現 程序運行流程如圖5所示,系統啟動之后,先按照程序初始化設備,并打開外部中斷,如果檢測到門鈴有按鍵輸入,則啟動攝像頭與CPU之間的數據傳輸,啟動TFT液晶顯示器與CPU之間的數據傳輸,在液晶顯示器上實時顯示攝像頭所拍攝到的畫面,并鳴響蜂鳴器。 如果用戶需要,還可以啟動拍照,并將照片保存為Bmp的格式文件在SD卡上。同時,在延時一段時間之后,如果沒有任何中斷觸發,則系統運行至低功耗狀態,關液晶屏。 實驗效果圖如圖6所示。 從圖6中可以看出,STM32加OV2640方案的效果比較令人滿意,攝像頭的清晰度較高,實時性較好,2.4英寸的顯示屏能滿足圖像顯示的需求。 結語 本文基于STM32處理器和OV2640攝像頭加2.4英寸TFT液晶顯示屏的設計方案不僅成本低廉,而且功能齊全,整體效果較好,硬件平臺設備較為成熟。 在軟件方面,程序流程嚴謹,邏輯嚴密,而且驅動程序較為完善,各個模塊之間不存在耦合性,系統運行穩定、可靠。
上一篇:STM32定時器的應用
下一篇:什么是STM32以及怎樣學習?
推薦閱讀
史海拾趣
Asia Electronics Ind Co Ltd自成立以來,一直致力于電子技術的研發與創新。公司投入大量資源用于研發,不斷推出具有市場競爭力的新產品。其中,公司成功開發的一款高效能、低功耗的電子產品,在市場上獲得了廣泛的認可。這款產品不僅滿足了消費者對性能的需求,還順應了綠色環保的發展趨勢,為公司贏得了良好的口碑。
在電子行業的早期,ARCOTRONICS公司憑借其卓越的研發團隊,成功開發出一種新型的高效能電子元件。這一技術突破不僅大幅提升了電子設備的性能,還降低了生產成本,使公司在市場上迅速獲得了競爭優勢。這一技術突破為ARCOTRONICS公司奠定了堅實的基石,為其后續發展打下了堅實的基礎。
背景:在電子產品領域,品質是企業生存和發展的基石。Hantronix深知這一點,因此始終將品質保證放在首位。
發展:公司所有生產設施都通過了ISO 9001等國際質量管理體系認證,部分設施還通過了ISO/TS 16949等更高標準的認證。這些認證不僅證明了Hantronix在品質管理方面的卓越能力,也為其贏得了更多客戶的信任和合作機會。
隨著全球對環境保護和社會責任的日益關注,Carlo Gavazzi公司也積極承擔起自己的社會責任。公司致力于開發環保型產品和技術,推動可持續發展。同時,公司還積極參與社會公益活動,回饋社會,贏得了廣泛的社會認可和尊重。
這五個故事只是Carlo Gavazzi公司發展歷史中的一部分,但它們足以展示這家公司在電子行業中的奮斗、創新和成功。作為一家具有悠久歷史和深厚底蘊的企業,Carlo Gavazzi公司將繼續在未來的發展中書寫新的篇章。
作為一家有遠見的企業,靜芯微電子不僅關注自身的發展,還積極履行社會責任。公司積極參與環保公益活動和社會責任項目,致力于推動電子行業的可持續發展。同時,靜芯微電子還注重員工的培訓和發展,為員工提供良好的工作環境和晉升機會。這些舉措不僅增強了企業的凝聚力和向心力,也為企業的長期發展奠定了堅實的基礎。
在不斷追求技術創新的道路上,Auris公司并未止步。近年來,該公司正在積極研發柔性機器人技術,這種技術有望在治療喉嚨、肺和腸胃疾病方面發揮重要作用。柔性機器人的研發不僅展示了Auris在技術創新方面的持續努力,也為其在未來的醫療市場中搶占先機提供了有力支持。
這五個故事展示了Auris公司在電子行業中的發展歷程,從創始人的科技愿景到技術突破獲得認可,再到與強生的合作以及柔性機器人的研發,每一步都體現了Auris對于技術創新和市場拓展的不懈追求。這些事實性的故事不僅展現了Auris公司的成長軌跡,也反映了電子行業中技術創新和市場競爭的激烈態勢。
是不是校準了就可以不測量VREFINT 來自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj… 查看全部問答∨ |
我的WINCE設備現在已經可以識別為U盤. 還有個問題,當我把USB線插上的時候,WINCE上NAND FLASH的盤符消失,同時PC上顯示U盤盤符;但是當我拔掉USB線時,PC上的盤符消失,而WINCE上的盤符卻沒有顯示出來,怎么讓FLASH重新MOUNT一次?這個問題怎么解決啊?… 查看全部問答∨ |
問題是這樣的: vxWorks下,我用routeAdd "0.0.0.0","192.168.1.1"添加了一條路由,但是用routeDelete "0.0.0.0","192.168.1.1"刪除不掉。其實我是想修改網關的地址(先刪再重新加),但是現在刪不掉先前設置的。 請各位大大幫幫 ...… 查看全部問答∨ |
在使用s3c44b0的時候,看到有這么一條語句 rNCACHBE0=(((Non_Cache_End)>>12)<<16)|((Non_Cache_Start)>>12); 為什么這樣就可以設置非cache區的起始和結束地址了? 另外為什么要寫成((Non_Cache_End)>>12)<<16,直接寫成Non ...… 查看全部問答∨ |
假如創建一個pty: ptyDevCreate("/pty/my.", 512, 512);那么得到的主從設備依次為:"/pty/my.M"以及"/pty/my.S"。按照VxWorks的幫助是這么說的:主進程使用"/pty/my.M"進行寫,從進程使用"/pty/my.S"進行讀,按照,這樣理解 ...… 查看全部問答∨ |
一個朋友最近送給我的一套【全美經典】系列教材,看了一點,感覺還可以,所以傳上來給大家分享一下,全部免費下載,需要的朋友可以看一下。 [ 本帖最后由 fengxin 于 2010-10-23 11:49 編輯 ]… 查看全部問答∨ |