u8 OV2640_Init(void)
{
u16 i=0;
u16 reg;
//设置IO
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
GPIO_Initure.Pin=GPIO_PIN_15; //PA15
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //初始化
PCF8574_Init(); //初始化PCF8574
OV2640_PWDN_Set(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;
}
for(i=0;i<sizeof(ov2640_svga_init_reg_tbl)/2;i++) for(i=0;i<sizeof(ov2640_sxga_init_reg_tbl)/2;i++)
{
SCCB_WR_Reg(ov2640_svga_init_reg_tbl[0],ov2640_svga_init_reg_tbl[1]);
SCCB_WR_Reg(ov2640_sxga_init_reg_tbl[0],ov2640_sxga_init_reg_tbl[1]);
}
return 0x00; //ok
}
红 {MOD}为更改后的程序,蓝字为源程序;只是数组中的寄存器写值改变了,数组由原子例程提供。其他还需要改什么嘛,我的LCD分辨率为320*240
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>