pz 0v7670攝像頭模塊手冊普中stm32f1開發板_第1頁
pz 0v7670攝像頭模塊手冊普中stm32f1開發板_第2頁
pz 0v7670攝像頭模塊手冊普中stm32f1開發板_第3頁
pz 0v7670攝像頭模塊手冊普中stm32f1開發板_第4頁
pz 0v7670攝像頭模塊手冊普中stm32f1開發板_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

普:技術:咨 本手冊向大家介紹PZ-OV7670頭模塊及其使用。本手冊OV7670OV(OmniVision)1/6CMOSVGA感器。該傳感器體積小、工作電壓低,提供單片VGA頭和影像處理器的所辨率8位影像數據。該產品VGA圖像最高達到30幀/秒。用戶可以完全控制色度等都可以通過SCCB接口編程。OmmiVision圖像傳感器應用獨有的傳感器像質量,得到清晰的穩定的彩像。OV7670SCCBIICRawRGB、RGB(GBR4:2:2,RGB565/RGB555/RGB444),YCbCr(4:2:2)VGACIF,CIF40*30支持自動控制、自動增益控制、自動白平衡、自動消除燈光條紋、OV7670OV7670感光整列(ImageOV7670總共有656*488個像素,其中640*480個有效(時序發生器(Timing內部信號發生器和分布、幀率時序、自動控制、輸出外部時序(VSYNC、HREF/HSYNC和PCLK)。模擬信號處理(ogA/D轉換(原始的信號經過模擬處理器模塊之后,分G和BR進入一個10位的A/D,A/D12M(轉換的頻率A/D①黑電平校正(②U/V③A/DA/DA/DA/D根據應用調整的亮度測試圖案發生器(TestPattern腳移位“1”。數字處理器(RGB①邊緣銳化(二維高通濾波器②顏色空間轉換(原始信號到RGB或者③RGB縮放功能(Image小到CIF以下的任何尺寸。數字接口(DigitalCOM2[1:0],IOL/IOHSCCB接口(SCCBSCCB《OmniVisionSerilCameraControlBus(SCCB)Specification》LED(LEDandStorbeFlashControlOutput)OV7670有閃光燈模式,可以控制外接閃光燈或閃光LED的工作。OV7670的寄存器通過SCCB時序并設置,SCCB時序和IIC時序十分VGA,640*480QQVGA,即分辨率為160*120的輸出格式;PCLK,PCLKVSYNC,HREF/HSYNC,OV7670的圖像數據輸出(通過D[7:0])就是在PCLK,VSYNC和HSYNCHREFHREF一個PCLKVGARGB565輸出,每2個字節組成一個像素的顏色(高字節,低字節在后),這樣每行輸出總共有640*2個PCLK周期,輸出640*2個字節。再來看看幀時序(VGA),方式,我們用到的是HREF。的IO口直接抓取,是非常的,也十分占耗CPU(可以通過降低PCLK輸出抓取來自OV7670的數據,而是通過FIFO,PZ-OV7670頭模塊自帶了一個FIFO,用于暫存圖像數據,有了這個,我們就可以很方便的獲取圖像數據了,而不再需要單片機具有高速IOCPU,可以說,只要是個單片機,都可以通過PZ-OV7670頭模塊實現拍照的功能。接下來我們介紹一下PZ-OV7670頭模塊。該模塊的外觀如圖所示從上圖可以看出,PZ-OV7670頭模塊自帶了有源晶振Y1,用于產生12M時鐘作為OV7670的XCLK輸入。同時自帶了穩壓,用于提供OV7670穩定的2.8V工作電壓,并帶有一個FIFO(AL422B),該FIFO的容384K2QVGA2*9下面我們來看看如何使用PZ-OV7670頭模塊(以QVGA模式,RGB565PZ-OV7670頭模塊圖像數據的過程為:等待OV7670同步信號→FIFO寫指針復位→FIFO寫使能→等待第二個OV7670同步信號→FIFO寫禁止。通過以上5個步驟,我們就完成了1幀圖像數據的。在完一幀圖像以后,我們就可以開始圖像數據了。過程為:FIFO讀指針復位→給FIFO讀時鐘(FIFO_RCLK)→第一個像素高字節→給FIFO讀時鐘→第一個像素低字節→給FIFO讀時鐘→第二個像素可以看出,PZ-OV7670頭模塊數據的也是十分簡單,比如QVGA模式,RGB565格式,我們總共循環320*240*2次,就可以1幀圖像數據,把這些數據寫入LCD模塊,我們就可以看到頭捕捉到的畫面了。applicationnoteAL422BAL422B了解了OV7670模塊的數據和,我們就可以開始設計程序了,本實驗我們用一個外部中斷來捕捉幀同步信號(VSYNC),然后在中斷里面啟動OV7670模塊的圖像數據,等待下一次VSHNC信號到來,我們就關閉數據存來,放到LCD即可顯示了,同時開始第二幀數據的,如此循環,實現本實驗使用頭模塊的QVGA輸出(320*240),這個在我們使用的TFTLCD模塊分辨率范圍內。注意:PZ-OV7670頭模塊自帶的FIFO是沒VGAVGAFIFO前開始讀FIFO數據,保證數據不被覆蓋。前四部分電路面章節都介紹過,這里就不多說,下面我們來看下本實驗所實現的功能為:開機后,初始化頭模塊(OV7670),如果初始化成功,則在LCD模塊上面顯示頭模塊所拍攝到的內容。我們可以通過鍵設置亮度,通過K_RIGHT(LCDOV7670的輸出幀率)。D1我們打開本實驗工程,可以看到我們的工程APP列表中多了ov7670.c和sccb.cov7670.h、sccb.hov7670cfg.h5首先,我們來看ov7670.c里面的OV7670_Init函數,該函數代碼如下:u8OV7670_Init(void){u8temp;u16GPIO_InitTypeDefGPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_Init(GPIOF,&GPIO_InitStructure);GPIO_Init(GPIOE,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化SCCB的IO口if(SCCB_WR_Reg(0x12,0x80))return1; if(temp!=0x73)return2;if(temp!=0x76)return{}return0x00;}OV7670IO(SCCB_Init),然后最主要的是完成OV7670的寄存器序列初始化。OV7670的寄存器特別多(上百來個),配置非常麻煩,幸好廠家有提供參考配置序列(OV7670software該數組存放在ov7670cfg.h里面。接下來,我們看看ov7670cfg.h里面ov7670_init_reg_tbl的內容,ov7670cfg.hconstu8ov7670_init_reg_tbl[][2]={/*OV7670QVGARGB565{0x3a,{0x40,{0x12,0x14},//QVGA,RGB{0x32,0x80},//HREFcontrolbit[2:0]HREFstart3LSBbit[5:3]HSTOPHREFend3LSB{0x17,0x16},//HSTARTstarthigh8-bit{0x18,0x04},//5HSTOPendhigh8-{0x19,{0x1a,{0x03,0x06},//0x0a,{0x0c,{0x15,{0x3e,{0x70,{0x71,{0x72,{0x73,{0xa2,{0x11,0x81},//時鐘分頻設置,0,{0x7a,{0x7b,{0x7c,{0x7d,{0x7e,{0x7f,{0x80,{0x81,{0x82,{0x83,{0x84,{0x85,{0x86,{0x87,{0x88,{0x89,{0x13,{0x00,{0x10,{0x0d,0x00},//[5:4]:01,101/411{0x14,0x28},//0x38,limitthemax{0xa5,{0xab,{0x24,{0x25,{0x26,{0x9f,{0xa0,{0xa1,{0xa6,{0xa7,{0xa8,{0xa9,{0xaa,{0x13,{0x0e,{0x0f,{0x16,{0x1e,0x27},//圖像輸出鏡像控制{0x21,{0x22,{0x29,{0x33,{0x35,{0x37,{0x38,{0x39,{0x3c,{0x4d,{0x4e,{0x69,{0x6b,{0x74,{0x8d,{0x8e,{0x8f,{0x90,{0x91,{0x92,{0x96,{0x9a,{0xb0,{0xb1,{0xb2,{0xb3,{0xb8,{0x43,{0x44,{0x45,{0x46,{0x47,{0x48,{0x59,{0x5a,{0x5b,{0x5c,{0x5d,{0x5e,{0x64,{0x65,{0x66,{0x94,{0x95,{0x6c,{0x6d,{0x4f,{0x50,{0x51,{0x52,{0x53,{0x54,//{0x54,{0x09,0x03},//{0x6e,{0x6f,0x9f},//0x9eforadvance{0x55,0x00},//{0x56,0x40},//對比度{0x57,0x40},//0x40,changeaccordingtoJim's//以下部分代碼由開源網友:duanzhang512提//如不想要,可以屏蔽此部分代碼.然后//改為:OV7670_Window_Set(12,174,240,320);,{0x6a,{0x01,{0x02,{0x13,{0x15,{0x58,{0x41,{0x3f,{0x75,{0x76,{0x4c,{0x77,{0x3d,{0x4b,{0xc9,{0x41,{0x34,{0x3b,{0xa4,{0x96,{0x97,{0x98,{0x99,{0x9a,{0x9b,{0x9c,{0x9d,{0x9e,{0x78,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0x09,地址,寫入0X04這個值。通過這么一長串(110)寄存器的配置,我們就完成了OV7670OV7670QVGARGB565成初始化之后,可以開始OV7670的數據了。OV7670因為本實驗我們還用到了幀率(LCD顯示的幀率)time.ctime.hexti.cexti.htime.cTIM4函數 :函數功 :TIM4初始化函 :voidTIM4_Init(u16per,u16{NVIC_InitTypeDefNVIC_InitStructure;使能 TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//分頻系數

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//NVIC_InitStructure.NVIC_IRQChannelSubPriority NVIC_InitStructure.NVIC_IRQChannelCmd= TIM_Cmd(TIM4,ENABLE);}u8ov_frame;//統計幀數函數 :函數功 :TIM4中斷函 : :void{{ }}TIM41印ov_frame的值,ov_frame用于統計LCD幀率。在exti.c里面添加EXTI7_Init和EXTI9_5_IRQHandlerOV7670模塊的FIFO寫控制,exti.cu8 void{if(EXTI_GetITStatus(EXTI_Line7)==SET)8{ } }7void{NVIC_InitTypeDefGPIO_EXTILineConfig(GPIO_PortSourceGPIOA,EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd=ENABLE; 定的參數初始化外設EXTI寄存器NVIC_InitStructure.NVIC_IRQChannel= NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=//子優先級0NVIC_InitStructure.NVIC_IRQChannelCmdENABLE; 指定的參數初始化外設NVIC寄存器}置PA7作為中斷輸入,因為STM32的外部中斷5~9(EXTI9_5_IRQHandler),所以在該函數里面,我們需要先判斷中斷是不是來自中斷線7的,然后再做處理。ov_staOV7670模塊的FIFO讀完FIFO數據的時候被),然后只要OV_VSYNC信號到來,我們就先復位一下寫指針,然后ov_sta=1,標志著寫指針已經復位,目前正在往FIFO里面寫數據。再等下一個OV_VSYNC到來,也就表明一幀數據已經完畢了,此時我們設置OV7670_WREN為0,再往OV7670寫入數據,此時ov_sta自增為2。其他程序,只要讀到ov_sta2,就表示一幀數據已經準備好了,可以最后我們看下main.c文件,代碼如下:ext

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論