I.MX6 ov5640 camera

/************************************************************************
 *                       I.MX6 ov5640 camera
 * 说明:
 *     记录ov5640摄像头的设备注册方式。
 *
 *                                      2016-6-8 深圳 南山平山村 曾剑锋
 ***********************************************************************/

一、设备注册:
    cat arch/arm/mach-mx6/board-mx6q_sabresd.c
        ......
        static void mx6q_csi0_io_init(void)
        {
            if (cpu_is_mx6q())
                mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_csi0_sensor_pads,
                    ARRAY_SIZE(mx6q_sabresd_csi0_sensor_pads));
            else if (cpu_is_mx6dl())
                mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_csi0_sensor_pads,
                    ARRAY_SIZE(mx6dl_sabresd_csi0_sensor_pads));

            /* Camera reset */
            gpio_request(SABRESD_CSI0_RST, "cam-reset");
            gpio_direction_output(SABRESD_CSI0_RST, 1);

            /* Camera power down */
            gpio_request(SABRESD_CSI0_PWN, "cam-pwdn");
            gpio_direction_output(SABRESD_CSI0_PWN, 1);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_PWN, 0);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_RST, 0);
            msleep(1);
            gpio_set_value(SABRESD_CSI0_RST, 1);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_PWN, 1);

            /* For MX6Q:
             * GPR1 bit19 and bit20 meaning:
             * Bit19:       0 - Enable mipi to IPU1 CSI0
             *                      virtual channel is fixed to 0
             *              1 - Enable parallel interface to IPU1 CSI0
             * Bit20:       0 - Enable mipi to IPU2 CSI1
             *                      virtual channel is fixed to 3
             *              1 - Enable parallel interface to IPU2 CSI1
             * IPU1 CSI1 directly connect to mipi csi2,
             *      virtual channel is fixed to 1
             * IPU2 CSI0 directly connect to mipi csi2,
             *      virtual channel is fixed to 2
             *
             * For MX6DL:
             * GPR13 bit 0-2 IPU_CSI0_MUX
             *   000 MIPI_CSI0
             *   100 IPU CSI0
             */
            if (cpu_is_mx6q())
                mxc_iomux_set_gpr_register(1, 19, 1, 1);
            else if (cpu_is_mx6dl())
                mxc_iomux_set_gpr_register(13, 0, 3, 4);
        }
        ......
        static void mx6q_mipi_sensor_io_init(void)
        {
            if (cpu_is_mx6q())
                mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_mipi_sensor_pads,
                    ARRAY_SIZE(mx6q_sabresd_mipi_sensor_pads));
            else if (cpu_is_mx6dl())
                mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_mipi_sensor_pads,
                    ARRAY_SIZE(mx6dl_sabresd_mipi_sensor_pads));

            /* Camera reset */
            gpio_request(SABRESD_MIPICSI_RST, "cam-reset");
            gpio_direction_output(SABRESD_MIPICSI_RST, 1);

            /* Camera power down */
            gpio_request(SABRESD_MIPICSI_PWN, "cam-pwdn");
            gpio_direction_output(SABRESD_MIPICSI_PWN, 1);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_PWN, 0);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_RST, 0);
            msleep(1);
            gpio_set_value(SABRESD_MIPICSI_RST, 1);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_PWN, 1);

            /*for mx6dl, mipi virtual channel 1 connect to csi 1*/
            if (cpu_is_mx6dl())
                mxc_iomux_set_gpr_register(13, 3, 3, 1);
        }
        ......
        static struct fsl_mxc_camera_platform_data mipi_csi2_data = {
            .mclk = 24000000,
            .mclk_source = 0,
            .csi = 1,
            .io_init = mx6q_mipi_sensor_io_init,
            .pwdn = mx6q_mipi_powerdown,
        };
        ......
        static struct fsl_mxc_camera_platform_data camera_data = {
            .mclk = 24000000,
            .mclk_source = 0,
            .csi = 0,
            .io_init = mx6q_csi0_io_init,
            .pwdn = mx6q_csi0_cam_powerdown,
        };
        ......
        static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
            ......
            {
                I2C_BOARD_INFO("ov564x", 0x3c),
                .platform_data = (void *)&camera_data,
            },
            ......
        }
        ......
        static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
            ......
            {
                I2C_BOARD_INFO("ov5640_mipi", 0x3c),
                .platform_data = (void *)&mipi_csi2_data,
            },
            ......
        }
        ......

二、dmesg信息查看:
    [email protected]:/ # dmesg | grep 5640
    <6>camera ov5640 is found
    <6>camera ov5640_mipi is found
    [email protected]:/ # 
时间: 2024-10-29 14:29:50

I.MX6 ov5640 camera的相关文章

嵌入式开发首选迅为I.MX6开发板 高稳定工业级设计

北京迅为电子有限公司专业提供ARM开发板,嵌入式开发板,三星4412开发板,三星4418开发板,八核6818开发板,飞思卡尔I.MX6开发板,三星4412核心板,exynos4412开发板及面向客户指定完整的解决方案服务 迅为-i.MX6开发板是采用Freescale Cortex-A9 四核i.MX6Q处理器,主频1GHz,2G DDR3内存,16GB EMMC存储,i.MX6开发板采用核心板+底板结构设计,高品质,稳定性强 ,可以更灵活地进行产品开发,快速设计出更具有竞争力的产品. 详情了解

[Android-Camera] If there is no flash setting option in Android stock camera apk, find the code and change it.

On freescale imx6 android platform, when we work on the Android stock camera apk, it's found that no flash setting option within it. So I track the code, and found that, flash avaliable need to be change from default value 0 to 1, it works. hardware\

各个平台camera驱动编写注意事项

各个平台camera驱动编写注意事项 camera驱动开发 1)另外注意,在imx6平台中,4.1.15kernel版本的代码,mxc的mxc_v4l2_capture.c camera主控制器和ov5642.c的sensor驱动之间,通过v4l2-int-device.h和v4l2-int-device.c中的master和slave注册attach连接的方式来关联,关联后,master(camera isp主控制器)通过ioctl来控制slave(sensor).master和slave只有

html5中拍照camera

方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象,调用摄像头的参数 PopPosition: JSON对象,弹出拍照或摄像界面指示位置 回调方法: CameraSuccessCallback: 调用摄像头操作成功回调 CameraErrorCallback: 摄像头操作失败回调 权限: 功能模块(permissions) { // ... "permissions":{ // ... "Camera

Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段落,又是新一月,上月主要是围绕MediaPlayer相关展开,从今天开始,开始分析多媒体框架中的Camera模块,看下今天的Agenda: Camera拍照 Camera录像 新API android.hardware.camera2 新旧API特点对比 Camera自定义相机 新API andro

新版FPC摄像头测评 OV7725 OV7670 OV9650 OV9655 OV5640 OV5642 OV2640 OV3640 MT9D112

最新制样新版FPC摄像头板卡,先看看结构尺寸 再瞧瞧接口(支持市面最通用的接口:2.54mm间距排针,支持5v或3.3v供电) 支持的柴草旗下将近十余款fpc标准摄像头(如OV7725 OV7670 OV9650 OV9655 OV5640 OV5642 OV2640 OV3640 MT9D112 ),涵盖30w至500w像素 支持raw.yuv.rgb格式输出. 再看看板卡资源实物(丰富的电源系统:3.3v.2.8v.1.8v.电源完整性设计和布线,高速传输下使得摄像头图像噪声降低到了极限)

Android Camera 拍照 三星BUG总结

Android Camera 三星BUG  : 最近在Android项目中使用拍照功能 , 其它型号的手机运行成功了  唯独在三星的相机上遇到了bug . BUG具体体现为 : (1) 摄像头拍照后图片数据不一定能返回 ;  onActivityResult的data为空 (2) 三星的camera强制切换到横屏  导致Activity重启生命周期 (但是部分机型  配置  android:configChanges  也不能阻止横竖屏切换); 我的解决方法为 如果 activity 的销毁如果

Android Camera探究之路——起步

Android Camera探究之路--起步 Camera在手机中有着举足轻重的地位,无论是二维码还是照片.识别.都离不开摄像头,本文将对Android中的Camera进行全面解析. 权限镇楼: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE&

I.MX6 recovery mode hacking

/******************************************************************************** * I.MX6 recovery mode hacking * 说明: * 看一下i.MX6 Recovery模式是怎么工作的. * * 2017-6-12 深圳 龙华樟坑村 曾剑锋 ****************************************************************************