初级会员
- 积分
- 128
- 金钱
- 128
- 注册时间
- 2012-9-23
- 在线时间
- 33 小时
|
5金钱
1052开发板接OV2640摄像头,参考OV5640代码
SCCB读写寄存器无响应。。。。
//OV5640写寄存器
//返回值:0,成功;1,失败.
u8 OV2640_WR_Reg(u16 reg,u8 data)
{
u8 res=0;
status_t status;
status=SCCB_WR_Byte(OV2640_ADDR,kSCCB_RegAddr8Bit,reg,data);
if(status!=kStatus_Success)
res=1;
return res;
}
//OV5640读寄存器
//返回值:读到的寄存器值
u8 OV2640_RD_Reg(u16 reg)
{
u8 val=0;
val=SCCB_RD_Byte(OV2640_ADDR,kSCCB_RegAddr8Bit,reg);
return val;
}
//设置摄像头模块PWDN脚的状态
//sta:0,PWDN=0,上电.
// 1,PWDN=1,掉电
void OV2640_PWDN_Set(u8 sta)
{
PCF8574_WriteBit(DCMI_PWDN_IO,sta);
}
//初始化OV2640
//配置完以后,默认输出是1600*1200尺寸的图片!!
//返回值:0,成功
// 其他,错误代码
u8 OV2640_Init(void)
{
u16 i=0;
u16 reg;
gpio_pin_config_t csi_config;
MYCSI_Init(); //初始化CSI
PCF8574_Init(); //初始化PCF8574
//设置RESET引脚设置GPIO_B1_11
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_11_GPIO2_IO27,0); //RESET
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_11_GPIO2_IO27,0x10B0);
csi_config.direction=kGPIO_DigitalOutput; //输出
csi_config.interruptMode=kGPIO_NoIntmode; //不使用中断功能
csi_config.outputLogic=1; //默认高电平
GPIO_PinInit(GPIO2,27,&csi_config); //初始化GPIO2_27
OV2640_RST(0); //必须先拉低OV5640的RST脚,再上电
delay_ms(20);
OV2640_PWDN_Set(0); //POWER ON
delay_ms(5);
OV2640_RST(1); //结束复位
delay_ms(20);
LPI2C1_Init(400000); //初始化I2C1,400K波特率
delay_ms(5);
OV2640_WR_Reg(OV2640_DSP_RA_DLMT, 0x01); //操作sensor寄存器
OV2640_WR_Reg(OV2640_SENSOR_COM7, 0x80); //软复位OV2640
delay_ms(50);
reg=OV2640_RD_Reg(OV2640_SENSOR_MIDH); //读取厂家ID 高八位
reg<<=8;
reg|=OV2640_RD_Reg(OV2640_SENSOR_MIDL); //读取厂家ID 低八位
if(reg!=OV2640_MID)
{
printf("MID:%d\r\n",reg);
return 1;
}
reg=OV2640_RD_Reg(OV2640_SENSOR_PIDH); //读取厂家ID 高八位
reg<<=8;
reg|=OV2640_RD_Reg(OV2640_SENSOR_PIDL); //读取厂家ID 低八位
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++)
{
OV2640_WR_Reg(ov2640_sxga_init_reg_tbl[i][0],ov2640_sxga_init_reg_tbl[i][1]);
}
return 0x00; //ok
}
|
|