关于摄像头初始化函数错误的一点说明

2019-07-20 18:23发布

        OV2640_PWDN=0;        //POWER ON
        delay_ms(10);
        OV2640_RST=0;        //复位OV2640
        delay_ms(10);
        OV2640_RST=1;        //结束复位
    SCCB_Init();                        //初始化SCCB 的IO口         
        SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01);        //操作sensor寄存器
        SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80);        //软复位OV2640
        delay_ms(50);
        reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH);        //读取厂家ID 高八位
        reg<<=8;
        reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL);        //读取厂家ID 低八位
        if(reg!=OV2640_MID)
        {
                printf("MID:%d ",reg);
                return 1;
        }
        reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH);        //读取厂家ID 高八位
        reg<<=8;
        reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL);        //读取厂家ID 低八位
        if(reg!=OV2640_PID)
        {
                printf("HID:%d ",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[0],ov2640_sxga_init_reg_tbl[1]);
        }
          return 0x00;         //ok
这是摄像头实验的初始化函数例程的原码,我第一次测试的时候发现即使插上摄像头也总是在LCD屏幕上显示err,我刚开始以为是摄像头的硬件问题于是我找了客服,他给了我一段代码我试验成功了,于是我对比着找两段代码的不同,终于发现了就是这个return 2 语句的问题,因为程序里面读出来的PID是9793和程序中宏定义的OV2640_PID不一样,所以就总是返回2也就总是初始化不成功,在main函数里面陷入死循环。我觉得原子哥有必要改一下或者声明一下,免得像我这样的新手耽误时间,谢谢大家!

0条回答

一周热门 更多>