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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

普:技術(shù):咨 本手冊向大家介紹PZ-OV7670頭模塊及其使用。本手冊O(shè)V7670OV(OmniVision)1/6CMOSVGA感器。該傳感器體積小、工作電壓低,提供單片VGA頭和影像處理器的所辨率8位影像數(shù)據(jù)。該產(chǎn)品VGA圖像最高達到30幀/秒。用戶可以完全控制色度等都可以通過SCCB接口編程。OmmiVision圖像傳感器應(yīng)用獨有的傳感器像質(zhì)量,得到清晰的穩(wěn)定的彩像。OV7670SCCBIICRawRGB、RGB(GBR4:2:2,RGB565/RGB555/RGB444),YCbCr(4:2:2)VGACIF,CIF40*30支持自動控制、自動增益控制、自動白平衡、自動消除燈光條紋、OV7670OV7670感光整列(ImageOV7670總共有656*488個像素,其中640*480個有效(時序發(fā)生器(Timing內(nèi)部信號發(fā)生器和分布、幀率時序、自動控制、輸出外部時序(VSYNC、HREF/HSYNC和PCLK)。模擬信號處理(ogA/D轉(zhuǎn)換(原始的信號經(jīng)過模擬處理器模塊之后,分G和BR進入一個10位的A/D,A/D12M(轉(zhuǎn)換的頻率A/D①黑電平校正(②U/V③A/DA/DA/DA/D根據(jù)應(yīng)用調(diào)整的亮度測試圖案發(fā)生器(TestPattern腳移位“1”。數(shù)字處理器(RGB①邊緣銳化(二維高通濾波器②顏色空間轉(zhuǎn)換(原始信號到RGB或者③RGB縮放功能(Image小到CIF以下的任何尺寸。數(shù)字接口(DigitalCOM2[1:0],IOL/IOHSCCB接口(SCCBSCCB《OmniVisionSerilCameraControlBus(SCCB)Specification》LED(LEDandStorbeFlashControlOutput)OV7670有閃光燈模式,可以控制外接閃光燈或閃光LED的工作。OV7670的寄存器通過SCCB時序并設(shè)置,SCCB時序和IIC時序十分VGA,640*480QQVGA,即分辨率為160*120的輸出格式;PCLK,PCLKVSYNC,HREF/HSYNC,OV7670的圖像數(shù)據(jù)輸出(通過D[7:0])就是在PCLK,VSYNC和HSYNCHREFHREF一個PCLKVGARGB565輸出,每2個字節(jié)組成一個像素的顏色(高字節(jié),低字節(jié)在后),這樣每行輸出總共有640*2個PCLK周期,輸出640*2個字節(jié)。再來看看幀時序(VGA),方式,我們用到的是HREF。的IO口直接抓取,是非常的,也十分占耗CPU(可以通過降低PCLK輸出抓取來自O(shè)V7670的數(shù)據(jù),而是通過FIFO,PZ-OV7670頭模塊自帶了一個FIFO,用于暫存圖像數(shù)據(jù),有了這個,我們就可以很方便的獲取圖像數(shù)據(jù)了,而不再需要單片機具有高速IOCPU,可以說,只要是個單片機,都可以通過PZ-OV7670頭模塊實現(xiàn)拍照的功能。接下來我們介紹一下PZ-OV7670頭模塊。該模塊的外觀如圖所示從上圖可以看出,PZ-OV7670頭模塊自帶了有源晶振Y1,用于產(chǎn)生12M時鐘作為OV7670的XCLK輸入。同時自帶了穩(wěn)壓,用于提供OV7670穩(wěn)定的2.8V工作電壓,并帶有一個FIFO(AL422B),該FIFO的容384K2QVGA2*9下面我們來看看如何使用PZ-OV7670頭模塊(以QVGA模式,RGB565PZ-OV7670頭模塊圖像數(shù)據(jù)的過程為:等待OV7670同步信號→FIFO寫指針復(fù)位→FIFO寫使能→等待第二個OV7670同步信號→FIFO寫禁止。通過以上5個步驟,我們就完成了1幀圖像數(shù)據(jù)的。在完一幀圖像以后,我們就可以開始圖像數(shù)據(jù)了。過程為:FIFO讀指針復(fù)位→給FIFO讀時鐘(FIFO_RCLK)→第一個像素高字節(jié)→給FIFO讀時鐘→第一個像素低字節(jié)→給FIFO讀時鐘→第二個像素可以看出,PZ-OV7670頭模塊數(shù)據(jù)的也是十分簡單,比如QVGA模式,RGB565格式,我們總共循環(huán)320*240*2次,就可以1幀圖像數(shù)據(jù),把這些數(shù)據(jù)寫入LCD模塊,我們就可以看到頭捕捉到的畫面了。applicationnoteAL422BAL422B了解了OV7670模塊的數(shù)據(jù)和,我們就可以開始設(shè)計程序了,本實驗我們用一個外部中斷來捕捉幀同步信號(VSYNC),然后在中斷里面啟動OV7670模塊的圖像數(shù)據(jù),等待下一次VSHNC信號到來,我們就關(guān)閉數(shù)據(jù)存來,放到LCD即可顯示了,同時開始第二幀數(shù)據(jù)的,如此循環(huán),實現(xiàn)本實驗使用頭模塊的QVGA輸出(320*240),這個在我們使用的TFTLCD模塊分辨率范圍內(nèi)。注意:PZ-OV7670頭模塊自帶的FIFO是沒VGAVGAFIFO前開始讀FIFO數(shù)據(jù),保證數(shù)據(jù)不被覆蓋。前四部分電路面章節(jié)都介紹過,這里就不多說,下面我們來看下本實驗所實現(xiàn)的功能為:開機后,初始化頭模塊(OV7670),如果初始化成功,則在LCD模塊上面顯示頭模塊所拍攝到的內(nèi)容。我們可以通過鍵設(shè)置亮度,通過K_RIGHT(LCDOV7670的輸出幀率)。D1我們打開本實驗工程,可以看到我們的工程APP列表中多了ov7670.c和sccb.cov7670.h、sccb.hov7670cfg.h5首先,我們來看ov7670.c里面的OV7670_Init函數(shù),該函數(shù)代碼如下: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該數(shù)組存放在ov7670cfg.h里面。接下來,我們看看ov7670cfg.h里面ov7670_init_reg_tbl的內(nèi)容,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},//時鐘分頻設(shè)置,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//以下部分代碼由開源網(wǎng)友: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的數(shù)據(jù)了。OV7670因為本實驗我們還用到了幀率(LCD顯示的幀率)time.ctime.hexti.cexti.htime.cTIM4函數(shù) :函數(shù)功 :TIM4初始化函 :voidTIM4_Init(u16per,u16{NVIC_InitTypeDefNVIC_InitStructure;使能 TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//分頻系數(shù)

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//NVIC_InitStructure.NVIC_IRQChannelSubPriority NVIC_InitStructure.NVIC_IRQChannelCmd= TIM_Cmd(TIM4,ENABLE);}u8ov_frame;//統(tǒng)計幀數(shù)函數(shù) :函數(shù)功 :TIM4中斷函 : :void{{ }}TIM41印ov_frame的值,ov_frame用于統(tǒng)計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; 定的參數(shù)初始化外設(shè)EXTI寄存器NVIC_InitStructure.NVIC_IRQChannel= NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=//子優(yōu)先級0NVIC_InitStructure.NVIC_IRQChannelCmdENABLE; 指定的參數(shù)初始化外設(shè)NVIC寄存器}置PA7作為中斷輸入,因為STM32的外部中斷5~9(EXTI9_5_IRQHandler),所以在該函數(shù)里面,我們需要先判斷中斷是不是來自中斷線7的,然后再做處理。ov_staOV7670模塊的FIFO讀完FIFO數(shù)據(jù)的時候被),然后只要OV_VSYNC信號到來,我們就先復(fù)位一下寫指針,然后ov_sta=1,標(biāo)志著寫指針已經(jīng)復(fù)位,目前正在往FIFO里面寫數(shù)據(jù)。再等下一個OV_VSYNC到來,也就表明一幀數(shù)據(jù)已經(jīng)完畢了,此時我們設(shè)置OV7670_WREN為0,再往OV7670寫入數(shù)據(jù),此時ov_sta自增為2。其他程序,只要讀到ov_sta2,就表示一幀數(shù)據(jù)已經(jīng)準(zhǔn)備好了,可以最后我們看下main.c文件,代碼如下:ext

溫馨提示

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

評論

0/150

提交評論