找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8941|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

OV7670攝像頭STM32F407 DMA采集驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140725 發(fā)表于 2016-10-18 14:12 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
花了幾個(gè)月的時(shí)間制作了一塊STM32F407ZGT的開發(fā)板,學(xué)習(xí)并體驗(yàn)一下STM32F4系列的性能。在硬件方面我花了不少心思,主要為了硬件的穩(wěn)定性和兼容性,另外功能要兼顧到大部分的應(yīng)用,下面介紹下具體配置:
1.主芯片STM32F407ZGT6
2.128Mbit NOR_FLASH
3.256kx16bit SRAM
4.32Kbit I2C EEPROM
5.16Mbit SPI FLASH
6.24bit音頻DAC(內(nèi)置耳機(jī)輸出放大器)
7.CAN收發(fā)芯片
8.10M/100M PHY(支持MII和RMII)
9.鍵盤掃描芯片(最大可擴(kuò)展8x8鍵盤)
10.攝像頭模塊(OV7670),板載24M有源晶振
11.RS232收發(fā)芯片
12.自彈式SD卡接口(支持SPI模式)
13.4位撥碼開關(guān)(用于啟動(dòng)模式選擇,音頻控制方式和以太網(wǎng)速度設(shè)置)
14.雙USB口,USB-OTG-FS(有USB電源開關(guān))和USB-HS-Device(使用內(nèi)置phy,速度FS)
15.20k可調(diào)電阻和5V蜂鳴器
16.電池座(不含電池,使用電池CR2120)
17.3.2寸TFT LCD(控制器ili9320),觸摸屏
靈致開發(fā)板簡介.pdf (410.63 KB, 下載次數(shù): 25)

      這塊開發(fā)板基本涵蓋了STM32F407的主要應(yīng)用,在調(diào)試中也遇到了不少問題,稀奇古怪的原因都有,有時(shí)間的話我想慢慢總結(jié)出來作為以后的知識積累。首先就其中調(diào)試OV7670攝像頭模塊的問題,在這里和大家分享一下。OV7670攝像頭需要外部輸入時(shí)鐘,我在開發(fā)板上設(shè)置了24MHz有源晶振,然后通過2x9的2.54mm排座外接攝像頭模塊。如下圖所示
接口連接圖如下:
   攝像頭輸出的像素時(shí)鐘和HSYNC,VSYNC和數(shù)據(jù)等信號連接到407的DCMI接口。
   攝像頭的配置接口是SCCB,按照數(shù)據(jù)手冊和相關(guān)資料中的說明
OV7670照相模組硬件應(yīng)用指南1.01 OVT.pdf (892.67 KB, 下載次數(shù): 37)
OV7670的SCCB兼容I2C接口,不過我應(yīng)用407的I2C去調(diào)試的時(shí)候就是得不到應(yīng)答,后來查看了一些資料,發(fā)現(xiàn)SCCB接口還是和I2C有些不同,除了不需要上拉電阻之外,估計(jì)還有其他電特性因素的差異,看了一些案例都是使用GPIO模擬的方式去做。后來我也試著去調(diào)了一下,結(jié)果很快就成了,終于看到了圖像出來。再后來就是設(shè)置寄存器一步步將圖像調(diào)正常。建議大家先將攝像頭設(shè)置成彩條輸出測試方式去查看顯示是否正常(主要涉及寄存器0x70,0x71)。
   在攝像頭例程中使用的是DMA采集的方式,故需要注意的是DMA的相關(guān)設(shè)置,還有就是寄存器0x15的值,這點(diǎn)很關(guān)鍵。
  /* DCMI configuration */
  //DCMI捕捉模式的設(shè)置,默認(rèn)是連續(xù)模式,會看到連續(xù)的移動(dòng)圖像
  //用戶在使用的時(shí)候可調(diào)整為SnapShot(抓拍),也就是單幀
  DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;//DCMI_CaptureMode_SnapShot;
  DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
  DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
  DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;
  DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;
  DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
  DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;   
    開發(fā)板使用的是3.2寸TFT液晶,控制器ili9320,在設(shè)置攝像頭位連續(xù)捕獲的方式后,在液晶屏上會看見連續(xù)而移動(dòng)的圖像,為了保持固定的連續(xù)圖像我設(shè)置了單幀中斷,可以通過不斷刷新顯示窗口來固定住圖像,另外如果有需要的話可以添加SD存儲功能和一鍵拍照,成為簡易的相機(jī)。

/*DCMI中斷處理函數(shù),這里使用的是垂直同步中斷,用戶可根據(jù)需要自己調(diào)整中斷的方式*/
void DCMI_IRQHandler(void)
{
  if( DCMI_GetITStatus(DCMI_IT_VSYNC)!= RESET)
  {
    DCMI_ClearITPendingBit(DCMI_IT_VSYNC);
    //LCD_WindowModeDisable();
    LCD_SetDisplayWindow(239, 319, 240, 320);
    LCD_WriteRAM_Prepare();      
  }
}

根據(jù)資料,調(diào)整OV7670內(nèi)部時(shí)鐘應(yīng)該可以改變幀率,按照例程中寄存器列表去配置后用示波器測得幀率為15幀,然而在調(diào)整內(nèi)部時(shí)鐘后圖像幀率(分辨率320x240)好像沒什么變化,這是我比較納悶的地方,
可能需要多個(gè)寄存器的配合,這點(diǎn)想請教各位,有熟悉的大神麻煩講解下。

以下是IAR和KEIL兩個(gè)版本的攝像頭工程文件,大家有興趣的話可以做個(gè)參考,另外還有靈致開發(fā)板的淘寶鏈接網(wǎng)址,有需要的可以去看看。
Camera_IAR.rar (514.78 KB, 下載次數(shù): 19)

Camera_KEIL.rar (7.03 MB, 下載次數(shù): 97)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:188289 發(fā)表于 2017-4-10 22:23 | 只看該作者
能下載嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:188289 發(fā)表于 2017-4-10 22:29 | 只看該作者
這是好東西啊
回復(fù)

使用道具 舉報(bào)

地板
ID:147114 發(fā)表于 2017-8-12 10:57 | 只看該作者
什么缺少文件呢?
回復(fù)

使用道具 舉報(bào)

5#
ID:705672 發(fā)表于 2020-4-21 14:14 | 只看該作者
感謝大佬,學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

6#
ID:757274 發(fā)表于 2020-8-14 18:51 | 只看該作者
感謝分享,在學(xué)習(xí)攝像頭
回復(fù)

使用道具 舉報(bào)

7#
ID:716413 發(fā)表于 2020-8-15 23:56 | 只看該作者
分辨率320x240我到了42幀
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表