fs4412开发板学习笔记(八)

来源:互联网 发布:网络竞价排名 编辑:程序博客网 时间:2024/05/29 18:04
硬件相关:初始化摄像头模块static int cmos_ov3640_probe(struct i2c_client *client, const struct i2c_device_id *id){    int ret;    printk("%s %s %d\n",__FILE__,__FUNCTION__,__LINE__);    /*2.3 硬件相关*/    /*2.3.1 映射相应的寄存器*/    通过底板原理图的摄像头模块 中如:CAM_PCLK查找到核心板中    对应的GPIO为GPJ0_0    GPJ0_7                 GPJ1_0    GPJ1_4    通过查看4412的芯片手册可知GPJ的地址为      GPJ0CON:0x11400240      GPJ0DAT  : 0x11400244               GPJ1CON:0x11400260      GPJ1DAT  : 0x11400264       //================================    GPJ0CON=ioremap(0x11400240, 4);    GPJ0DAT=GPJ0CON+1;    GPJ0UP=GPJ0DAT+1;    GPJ1CON=ioremap(0x11400260, 4);    GPJ1DAT=GPJ1CON+1;    GPJ1UP=GPJ1DAT+1;    /*2.3.2 设置相应的GPIO用于CAMIF(摄像头接口)*/    cmos_ov3640_gpio_cfg();    /*2.3.3 复位一下CAMIF控制器*/    cmos_ov3640_camif_reset();    /*2.3.4 设置、使能时钟(使能HCLK、使能并设置CAMCLK=24MHz)*/SEC_Exynos 4412 P1924    cmos_ov3640_clk_cfg();    /*2.3.5 复位一下摄像头模块*/问:问为什么需要复位摄像头模块?答:IIC能够正常操作CMOS摄像头模块内部的寄存器的前提是:        --提供符合它需求的系统时钟(CAMCLK)        --需要给它一个复位信号问:怎样才能复位摄像头模块?答:通过操作CAMIF控制器中相应的寄存器,让CAMRST发出复位信号,从而复位摄像头模块,具体操作间驱动源码    /*2.2 注册*/    //-1表示让系统自动找一个设备节点号    ret=video_register_device(&cmos_ov3640_vdev,VFL_TYPE_GRABBER,-1);    return 0;}static void cmos_ov3640_gpio_cfg(){    /*设置相应的GPIO用于CAMIF(摄像头接口)*/    *GPJ0CON=0x22222222;    *GPJ0DAT=0;    *GPJ1CON=0x22222;    *GPJ1DAT=0;    /*使能上拉电阻*/    *GPJ0UP=1;    *GPJ1UP=1;}static void cmos_ov3640_camif_reset(){    /*复位CAMIF控制器*/    从芯片手册:SEC_Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary.pdf    P1942可知CIGCTRLn (n = 0 to 3)     Base Address: 0x1180_0000, 0x1181_0000, 0x1182_0000, 0x1183_0000     Address = Base Address + 0x0008, Reset Value = 0x2001_0480    SwRst       Bit[31]         camera interface software reset}
0 0
原创粉丝点击