点亮 camera
------------------------- SCCB_Init -------------------------
GPIO_InitTypeDef GPIO_InitStructure
RCC_AHB1PeriphClockcmd(RCC_AHB1Periph_GPIOD, ENABLE);//RCC_AHB 使能GPIOD时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;// PD6,7 推挽输出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOD,&GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_6|GPIO_Pin_7);
SCCB_SDA_OUT(); //{GPIOD->MODER&=~(3<<(7*2));GPIOD->MODER|=1<<7*2;} gpio清除,设定为1
//#define SCCB_SDA_IN () {GPIOD -> MODER&=~(3<<(7*2));GPIOD->MODER|=0<<7*2;}
u8 SCCB_WR_Byte(u8 dat)
{
u8 j,res;
for(j=0;j<8;j++)
{
if(dat&0x80)SCCB_SDA=1;
else SCCB_SDA=0;
dat<<=1;
delay_us(50);
SCCB_SCL=1;
delay_us(50);
SCCB_SCL=0;
}
SCCB_SDA_IN();
delay_us(50);
SCCB_SCL=1;
delay_us(50);
if(SCCB_READ_SDA)res=1;
else res=0;
SCCB_SCL=0;
SCCB_SDA_OUT();
return res;
}
------------------------- SCCB -------------------------
------------------------- 设备初始化 -------------------------
u8 OV2640_Init(void)
{
u16 i=0;
u16 reg;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
//GPIOG9,15初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOG, &GPIO_InitStructure);
OV2640_PWDN=0;
delay_ms(10);
OV2640_RST=0;
delay_ms(10);
OV2640_RST=1;
SCCB_Init();
SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01);
SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80);
delay_ms(50);
reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH);
reg<<=8;
reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL);
if(reg!=OV2640_MID)
{
printf("MID:%d\r\n",reg);
return 1;
}
reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH);
reg<<=8;
reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL);
if(reg!=OV2640_PID)
{
printf("HID:%d\r\n",reg);
return 2;
}
//初始化 OV2640,采用SXGA分辨率(1600*1200)
for(i=0;i<sizeof(ov2640_sxga_init_reg_tbl)/2;i++)
{
SCCB_WR_Reg(ov2640_sxga_init_reg_tbl[i][0],ov2640_sxga_init_reg_tbl[i][1]);
}
return 0x00; //ok
}
------------------------- 设备初始化 -------------------------
------------------------- 设备输出JPEG -------------------------
//OV2640切换为JPEG模式
void OV2640_JPEG_Mode(void)
{
u16 i=0;
//设置:YUV422格式
for(i=0;i<(sizeof(ov2640_yuv422_reg_tbl)/2);i++)
{
SCCB_WR_Reg(ov2640_yuv422_reg_tbl[i][0],ov2640_yuv422_reg_tbl[i][1]);
}
//设置:输出JPEG数据
for(i=0;i<(sizeof(ov2640_jpeg_reg_tbl)/2);i++)
{
SCCB_WR_Reg(ov2640_jpeg_reg_tbl[i][0],ov2640_jpeg_reg_tbl[i][1]);
}
}
------------------------- 设备输出JPEG -------------------------
------------------------- 设备输出RGB565 -------------------------
//OV2640切换为RGB565模式
void OV2640_RGB565_Mode(void)
{
u16 i=0;
//设置:RGB565输出 双通道写入
for(i=0;i<(sizeof(ov2640_rgb565_reg_tbl)/2);i++)
{
SCCB_WR_Reg(ov2640_rgb565_reg_tbl[i][0],ov2640_rgb565_reg_tbl[i][1]);
}
}
------------------------- 设备输出RGB565 -------------------------
================================ DCMI Init ================================
1.
RCC_AHB1Periph_GPIOA
RCC_AHB1Periph_GPIOB
RCC_AHB1Periph_GPIOC
RCC_AHB1Periph_GPIOE
2.
DCMI_InitStructure.DCMI_CaptureMode=DCMI_CaptureMode_Continuous;
DCMI_InitStructure.DCMI_CaptureRate=DCMI_CaptureRate_All_Frame;
DCMI_InitStructure.DCMI_Ext