免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: liutaolinux
打印 上一主题 下一主题

[驱动] CMOS摄像头驱动! [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2011-10-24 15:09 |只看该作者
回复 9# liutaolinux


    一个 i2c bus  上可以接 127个设备, 现在camera 接的地址是多少, 这是由硬件决定的, 问问硬件的人就知道了。

论坛徽章:
0
12 [报告]
发表于 2011-10-25 10:46 |只看该作者
i2c设备需要
用 i2c_register_board_info 来register device
用 i2c_add_driver 来register driver
如果device和driver成功match的话
driver的probe函数就会被调用
参数里会有一个i2c client, 通过这个client才能读写i2c设备
也就是你说的修改bf3703寄存器的值
基本上linux的所有类型的设备驱动都是采用这种模型架构

论坛徽章:
0
13 [报告]
发表于 2011-10-25 13:53 |只看该作者
前面的问题已经解决,又出现新问题!
在采集数据时显示:
    s3c2440-i2c s3c2440-i2c: cannot get bus (error -110)

论坛徽章:
0
14 [报告]
发表于 2011-10-25 13:58 |只看该作者
回复 12# senioryzc


    我在内核自带的ov965x.c 上自己改的,i2c地址:#define OV965X_I2C_ADDR     0xdc(这是bf3703的I2C地址),还有就是摄像头寄存器值改了,其他的基本没改,在测试时显示
s3c2440-i2c s3c2440-i2c: cannot get bus (error -110) !!!!!!!!问我是不是想的太简单了,还需要改动哪些值!

论坛徽章:
0
15 [报告]
发表于 2011-10-25 14:56 |只看该作者
回复 12# senioryzc


讲的的真好

论坛徽章:
0
16 [报告]
发表于 2011-10-25 15:02 |只看该作者
回复 13# liutaolinux

我没有你的代码,只是根据你的情况看了看我手中的代码,出现你的情况是说,以下函数超时

static int s3c24xx_i2c_set_master(struct s3c24xx_i2c *i2c)
{
        unsigned long iicstat;
        int timeout = 400;

        while (timeout-- > 0) {
                iicstat = readl(i2c->regs + S3C2410_IICSTAT);

                if (!(iicstat & S3C2410_IICSTAT_BUSBUSY))
                        return 0;

                msleep(1);
        }

        return -ETIMEDOUT;
}

我觉得可以从以下方面检查
第一  把 timeout 的值的大一点
第二  检查一下所读寄存器的地址是否和你的需求一至,以及检查相关的bit位的一致性

论坛徽章:
0
17 [报告]
发表于 2011-10-25 15:21 |只看该作者
芯片可能会有多个i2c控制器(硬件的和软件模拟的),你要确定你的sensor接的和你代码的配置的是一样
i2c_register_board_info 的第一个参数就是指定这个设备挂在第几个i2c控制器上
硬件的,看原题图

到/sys/bus/i2c/devices目录下看看,应该有类似
i2c-0 //控制器0
0-003c //控制0上接的slave设备
0-004c
0-0000
i2c-1 //控制器1
1-0010
1-0000
i2c-2//控制器2
2-0048
2-0000

论坛徽章:
0
18 [报告]
发表于 2011-10-26 09:17 |只看该作者
回复 17# senioryzc


    谢谢了,搞定了!

论坛徽章:
0
19 [报告]
发表于 2011-10-26 09:18 |只看该作者
回复 18# liutaolinux


    分享一下解决过程呗~

论坛徽章:
0
20 [报告]
发表于 2011-10-27 13:27 |只看该作者
回复 19# npuazm


    我这就是在menuconfig中增i2c中的platform surport然后在注册时就注册上了!
    还有就是Vitual camera support选上,soc camera suport --><*>platform camera support
     (0) reset type 我其实这是配置问题!bus I2C驱动都是内核自带的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP