首页资源分类嵌入式系统 > OV7740摄像头调试

OV7740摄像头调试

已有 445110个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:ov7740调试

    分    享:

    文档简介

    ov7740摄像头调试技巧。

    文档预览

    UNICODE 在 a31s 平台下点亮 ov7725(使用 ak78s 开发板)V0.02.txt 在 ak78s 开 发 板 上 , 全 志 已 经 点 亮 了 CSI 接 口 的 双 摄 像 头 组 合 gc0308+gc2035 , 以 及 gc0308+ov5640。 gc0308 为格科微的 30W 摄像头,gc2035 为格科微的 200W 摄像头。 由于我们将来使用 ov7725/ov7740 与 ov5640 摄像头都是 ov 的,最开始就先将 ov5640 的驱动修 改为 ov7725/ov7740 的。 最开始去海克莱特调试的时候,最开始比对摄像头的硬件接口,和他们的 ak78s 的板子完全一 样。(当时我们怕引脚不同,要跳线,将一片以前的废板上的摄像头的 24 条线都引出来。^_) 由于 ov7740 的 I2C 接上去直接可以读写,就先从 ov7740 调起来了。(OV7725 挑平台,有些平 台只能够写,不能够读,根据经验先调通 ov7740,将 ov7725 放在后面验证!) 在 ak78s 板子上, AVDD=2.8V DVDD=1.8V DOVDD=2.8V 在海克莱特,徐工用 gc0308+ov5640 的 img,将摄像头切换到前摄像头 gc0308(I2C 地址同为 0x42),然后关闭驱动中读写寄存器的语句。可以读出来摄像头 ov7740 的设备号: 0x0A=0x77 0x0B=0x42 一般情况下认定摄像头已经可以正常工作了。并且用示波器测试: xclk=24MHz pclk=48MHz vsyn=60Hz hsync=28.2kHz???? data0-7 有数据 证明摄像头是通了,可以正常工作了,摄像头有发送数据(data0-7 数据引脚)出来,但是 a31s 平台的板子 ak78s 因为配置原因,就是检测不到而已! 第二天,海克莱特的人不陪我调了。我觉得有可能是驱动框架的问题,ov5640 和 ov7740 都是 ov 一家的,框架肯定差别不大,于是就开始了漫长的修改 ov5640 的代码的问题了。 由于 ov5640 的 I2C 从地址为 0x78,只能够用 gc0308.c。还需要用 ov5640.c 替换掉 gc0308.c, 到时候将编译的 gc0308.ko 用 adb push 进去。 首先关闭 ov5640.c 上面的读写寄存器的语句(ov5640 是 16 位 I2C 地址,还需要从驱动 gc0308.c 里借用 i2c 的读写函数),然后删除 AF 自动对焦部分的代码! 将很多函数都直接 return 0 了。尝试了一周,还是黑屏,不亮。 电压也是过了。根据经验,AVDD 应该要 3.3V,把以前的转接板割线,3.3V 外接,还是不亮。 不过 AVDD=2.8V 会有图像,只是有竖条纹的问题。确认问题应该不是在这里了。 后来,觉得 ov5640 需要控制 AF 等等功能,代码里面有太多没用的东西,删除 AF 之类的可能 会改出问题。还有就是 ov5640 是 500W 拍照,预览最低是 100W,黑屏可能是因为显示错误! 单摄像头点亮 gc0308 的时候,发现在 sensor_init 里面配置寄存器表 sensor_default_regs_24M 和 sensor_default_regs 就可以点亮 gc0308,只是颜色不对。 于是用这份 ov5640 的修改的代码,直接配置 gc0308,亮了,图像入预期的偏色!证明在 a31s 平台下,驱动 ov5640.c 和 gc0308.c 的架构是一致的! 于是直接用 gc0308.c 修改了,肯定不会因为预览错误而黑屏了! 然后笨方法笨办法,在 gc0308.c 里面的每一个函数加 printk 打印语句,看点亮 gc0308 会走哪几 个语句,ov7740 黑屏的时候驱动做过什么,确认异同! 偶然的原因,发现正常工作的摄像头 gc0308,会频繁进入 vfe_isr 函数,看名字猜测是中断处理 的函数! S:\lichee\linux-3.3\drivers\media\video\sunxi-vfe\vfe.c vfe_isr 并且,看打印信息出现的频率大概和帧率一致(gc0308 每秒才 10 帧,很容易看!),那就是 vsyn 的频率! 猜测:VSYNC 设置的问题。 于是找硬件用示波器分别测试 4 个摄像头(ov7740/gc0308/gc2035/ov5640),看看会不会有什么 异同: 当时曾经怀疑是不是 a31s 的性能比较弱,图像处理不过来,就算降低 ov7740 的帧率为 7.5fps, 也还是黑屏! OV7740,7.5fps,周期为 133.3ms。其中,高:1ms,低:133.3-1=123.3ms gc0308/gc2035/ov5640(均已经点亮): gc0308,9fps,周期为 111.1ms。其中,低:20ms,高:111.1-20=91.1ms gc2035,9fps,周期为 111.1ms。其中,低约 30ms,高:111.1-30=81.1ms ov5640,15fps,周期 66.6ms。 其中,低为 120us,高:66.6-0.12=66.48ms 最后用 freescale 平台核对: 配置 gc0308 的寄存器表 sensor_default_regs_24M 和 sensor_default_regs,没有点亮 gc0308,暂 时只测试了 ov7740 和 ov5640: ov7740,30fps,周期 33.3ms。 其中,高:小于 1ms,低约为 33.3ms(VGA 预览) ov5640,30fps,周期 33.3ms。 其中,高:小于 1ms,低约为 33.3ms(VGA 预览) 这样很显而易见,freescale 平台的 VSYNC 为上升沿(或者低电平)触发!a31s 平台的 VSYNC 为高电平触发。 刚开始想到的是让硬件做反相器。当天快 18 点,硬件要下班了,就没有继续。 晚上,头等不起了,把我轰到海克莱特去了。到了海克莱特,工程师比较忙,我被发配到一个 没人做的空位置呆着自己调。 越来越怀疑是 VSYNC 的关系了,在下午央求海克莱特的硬件工程师做了一个反相器(用三极 管 2N3904 搭了一个)。 当时说等 Z001 的板子出来之后,过去请他调板的时候请他吃大餐。只可惜 Z001 的板子我们自 己就调好了!以后去的时候他已经离职了! 硬件说摄像头接口都进了内层,线太细,无法割线,就让他在摄像头转接板上搭了,那个手工 我这辈子是无法做到!^_ 当他把转接板上的热熔胶用酒精溶解拿下来的时候,说割线可能会弄坏转接板,坏就坏了吧! 放手干吧。 点 OV7740,一分钟之后出来红色的图像,可能是寄存器(或者参数之类的)配置的不对?比 如白平衡之类设置问题吧。 换 OV7725,这款神奇的摄像头就是不配置寄存器也能够点亮的,一分钟出现正常图像了! 不过一分钟之后出来图像只是临时解决方法,看 ov7725/ov7740 的 DATASHEET,发现: OV7740: !!!!1099@52RD_OV7740_CSP_DS_1.51 华为版本_NoRestriction.pdf address register name default value description 0x28 REG28 0x00 Bit[1]: VSYNC polarity 0: Positive 1: Negative ov7740 要配置 0x28 号寄存器: ret = sensor_write(sd, 0x28, 0x02); OV7725: 09919@52RD_OV7725_CSP2_DS(1.4).pdf address register name default value description 0x15 COM10 0x00 Bit[1]: VSYNC negative ov7725 要配置 0x15 号寄存器 sensor_write(sd, 0x15, 0x02); 解决问题! 调试经验: 在最开始调试摄像头的驱动的时候,编译完内核,然后使用 adb 更新 boot.img 之后,发现摄像 头的驱动没有改变!每次都得编译系统,重烧!费时费力。 后来想起摄像头的驱动被编译成*.ko 了,是动态加载的!海克莱特的人把 gc0308.c 编译之后, 再用 adb push 进去的! 最后还需要: adb remount chmod 644 /system/modules/gc0308.ko 之后重启平板之后就可以看到效果了!

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。