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函数里面陷入死循环。我觉得原子哥有必要改一下或者声明一下,免得像我这样的新手耽误时间,谢谢大家!
一周热门 更多>