mcu camera

点亮 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值