OV7670/OV7171 CAMERACHIPTM图像传感器,体积小、工作电压低,提供单片 VGA摄像头和影像处理器的所有功能。通过 SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率 8位影响数据。该产品VGA图像最高达到30帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过 SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。
OV7670引脚图:
功能
● 高灵敏度适合低照度应用
● 低电压适合嵌入式应用
● 标准的SCCB接口,兼容I2
C接口
● RawRGB,RGB(GRB4:2:2,RGB565/555/444),YUV
(4:2:2)和YCbCr(4:2:2)输出格式
● 支持VGA,CIF,和从CIF到40x30的各种尺寸
● VarioPixel 子采样方式
● 自动影响控制功能包括:自动曝光控制、自
动增益控制、自动白平衡,自动消除灯光条
纹、自动黑电平校准.图像质量控制包括色饱
和度、色相、伽玛、锐度和ANTI_BLOOM
● ISP具有消除噪声和坏点补偿功能
● 支持闪光灯:LED灯和氙灯
● 支持图像缩放
● 镜头失光补偿
● 50/60Hz自动检测
● 饱和度自动调节(UV调整)
● 边缘增强自动调节
● 降噪自动调节
OV7670中文数据手册:
OV7670管脚功能介绍:
STM32源程序:
- #include "main.h"
- static volatile ErrorStatus HSEStartUpStatus = SUCCESS;
- static vu32 TimingDelay = 0;
- static vu32 SELStatus = 0;
- extern unsigned int a, Vsync,c_data;
- unsigned int kkk=0,s=0;
- unsigned int M=0,N=0;
- /*******************************************************************************
- * Function Name : main
- * Description : Main program.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- #define SI_BIT GPIO_Pin_0 //
- #define SI_H() GPIOA->BSRR =SI_BIT
- #define SI_L() GPIOA->BRR =SI_BIT
- #define SCK_BIT GPIO_Pin_1 //
- #define SCK_H() GPIOA->BSRR =SCK_BIT
- #define SCK_L() GPIOA->BRR =SCK_BIT
- void G_GPIO_Config(void)
- {
-
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Enable GPIOA clock */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- GPIO_InitStructure.GPIO_Pin =SI_BIT |SCK_BIT ;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- SCK_L();
- SI_L();
- }int main(void)
- {
- unsigned char p0[]={1+'0',2+'0',3+'0',4+'0',0x00};
-
-
- #ifdef DEBUG
- debug();
- #endif
- unsigned int kv=0;
- /* Intialize the STM32 SYSTEM_Init */
- SYSTEM_Init();
- //G_GPIO_Config();
- Delay(1); /* delay 1 ms */
- LCD_write_english_string(5,66+16,p0,0Xf800,0X0000);
- LCD_write_english_string(5,66+16,"CMOS Sensor Init.....",0Xf800,0X0000);
- LCD_write_english_string(5,66,"GUANFU_WANG 2011-0415",0X001f,0X0000);
- /**/
- /* while(1)
- {
-
- SI_H();
- Delay(3);
-
- SCK_H();
- Delay(3);
- SI_L();//Delay(1);
- Delay(3);
- SCK_L();
- Delay(3);
-
- for(kv=0;kv<128;kv++)
- {
-
- SCK_H();
- Delay(10);
- SCK_L();
- Delay(10);
- }
- // Delay(1);
- }
-
-
- */
-
- /////////////////////////////////////
-
-
-
- FIFO_Set_GPIO_Config();
- FIFO_GPIO_INPUT();
- FIFO_CS_L();
- FIFO_WE_H();
- while(1!=Sensor_init()){}//初始化CMOS Sensor
- LCD_write_english_string(5,66+16,"CMOS Sensor Init...ok",0Xf800,0X0000);
- Vsync=0;
- ////////////////////////////////////////
- FIFO_RRST_L();
- FIFO_RD_L();
- FIFO_RD_H();
- FIFO_RD_L();
- FIFO_RRST_H();
- FIFO_RD_H();
- Delay(50);
- ////////////////////////////////////////
- while(1)
- {
- if(Vsync==2)
- {
- LCD_WriteReg(0x0020,239);//GRAM水平起始位置
- LCD_WriteReg(0x0021,319);
- LCD_WriteReg(0x0050,0x00);//水平 GRAM起始位置
- LCD_WriteReg(0x0051,239);//水平GRAM终止位置
- LCD_WriteReg(0x0052,0x00);//垂直GRAM起始位置
- LCD_WriteReg(0x0053,319);//垂直GRAM终止位置
- LCD_WriteReg(0x0003,0x1008);
- LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
- FIFO_RRST_L();
- FIFO_RD_L();
- FIFO_RD_H();
- FIFO_RD_L();
- FIFO_RRST_H();
- FIFO_RD_H();
-
- for(a=0;a<9600;a++)
- {
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- FIFO_RD_L(); ;
- asm("NOP");asm("NOP");
- c_data=GPIOB->IDR&0xff00;//读高位
- FIFO_RD_H();
- asm("NOP");asm("NOP");
- FIFO_RD_L();
- asm("NOP");asm("NOP");
- c_data|=(GPIOB->IDR>>8)&0x00ff;//读低位
- FIFO_RD_H();
- // LCD_WriteRAM(c_data);//写RGB数据到TFT GRAM
- LCD_RAM=c_data;
-
- }
- Vsync=0;
- }
- }}
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码 全部资料下载地址:
CF7670C-V3 STM32F103驱动-彩色采集 LCD显示 资料.rar
(2.99 MB, 下载次数: 47)
|