OV9712 CMOS基于JZ4775调试(一)

    前几天在JZ4775平台(LK3.0内核)折腾OV9712COMS.作下笔记,一方面备忘,另一方面分享给有需要的网友参考.

   

    1.调试过程中遇到的问题:

    下面先概述下调试过程中遇到的主要问题:

1-1.DVP接口:
  官方提供的硬件参考原理图是10根数据线的DVP,而这边的硬件是8根数据线的DVP.并且在官方提供的datasheet并没有找到DVP配置的寄存器.OV好多东西进行了
保留,有些寄存器数据手册写着是保留的,但是从其提供过来的sample code却是有所配置的.后来验证了其提供的sample code是支持8bit的DVP;
1-2.SCCB通讯失败:
  SCCB兼容IIC协议,因此这边直接通过IIC总线操作.之所以出现SCCB通讯失败的原因,我这边主要是因为OV9712的SCCB操作之前需要有MCLK,而MCLK是由CIM(CAMERA
控制器)提供.这边的CIM输出的MCLK时钟的使能是受控的,在open的时候使能MCLK输出.通过SCCB操作OV9712之前使能MCLK输出即可.基本上,要进行CMOS操作之前都需要
进行MCLK输出,如格科威的GC0308;
1-3.是否正确出图难以判断:
  这边要求的OV9712输出为WXGA(1280x800),而且硬件是新布的,没有镜头调焦距,并且手头只有2.8寸屏(分辨率为320x240),直接铺屏虽然手在CMOS上晃LCD
有所反应,但是不能作为正确出图的依据,而且DVP接口屏蔽掉低两位,图像的完整性更无从谈起.后面通过将OV9712出来的Bayer格式通过软件编程分别转换成8位位图、
RGB565、RGB888保存图片并通过两次的跳行跳列把Bayer转换为RGB565数据处理显示在320x240LCD上才得以验证图像的完整性.相关代码参考网上,但是都或多或少
有问题并存在兼容性可移植性问题,这边已经完善修复,后续提供修正后的相关源代码;
1-4.HERF模式:
  一般比较复杂的设备都是通过两大部件和主控完成通讯的.一个部件是操作设备内部的功能单元,如配置内部寄存器,这些功能单元都是通过一定的协议完成的.如OV9712通
过SCCB配置其图像效果,声卡UDA1341通过L3协议调节音量;另一部件则是有效数据的交互,如CMOS通过VSYNC、HSYNC、PCLK、DATA PORT来配合完成图像数据,声卡
UDA1341则通过IIS总线完成音频数据的传输.OV9712默认就是采用HERF模式(见datasheet),在一帧图像传输过程中HERF脚为低,而不像HSYNC(行同步信号)
在一帧图像传输过程中有电平变化(这当然了,一帧图像是有多个行数据组成的).在HERF模式下,主控端需要配置HSYNC脚为下降沿有效;
1-5.别扭的datasheet:
  格科威的datasheet比较简单明了,比如要配置图像的宽度高度DVP位数都有明确的寄存器.而OV9712,是直接"位"操作.比如配置WXGA(1280x800)的寄存
器,根据datasheet说明如下:
  0x58是Vertical Size MSBs的高8位,这里写0xc8,还有低两位在0x57寄存器bit[1:0](值为0),一共10位,拼成10bit就是1100100000b,
转换成10进制就是800;
  0x59Output Horizontal Size MSBs,这里写0xA0,还有低三位在0x57寄存器bit[4:2](值为0),拼成11位就是10100000000b,转换成10进
制就是1280.提外话,更为复杂的是美光的MI367,提供了两种地址访问.

    2.调试中的关键点:

 调试CMOS有几点关键点是必须注意的,无论是裸机还是OS,都需要注意的,因为这是硬件协议层的东西,与软件无关(当然,除了所谓的配置寄存器代码).

2-1.图像输出格式:
  CMOS都有图像输出格式的,如BAYER(BGGR),YUV422(平铺)等.这将可能涉及到主控平台CIM端的接收数据的顺序还有上层针对CMOS图像格式处理的编程.如某
CMOS输出的图像格式是YUV422打包格式,我们可以通过设置CIM端FIFO的对数据的接收顺序控制,使得FIFO端的YUV422打包格式到了DMA层变成了YUV422平铺格式,这一步是
硬件完成的,这时候再到达用户空间的图像数据必然是YUV422平铺格式了.针对此图像格式需要通过编程实现转换成RGB565或RGB888.因此,用户空间程序处理明确你要处理的
图像数据是什么格式,否则就是乱七八糟的图像显示(这一点可以自行补充一下图像相关的知识);
2-2.极性匹配:
  CMOS和主控端的VSYNC、HSYNC和PCLK的极性要一致,比如VSYNC是上升沿有效还是下降沿有效.参考主控平台和CMOS的数据手册可以实现配置两者极性一致.否则有可能
出现图像丢数据或色素偏差甚至获取不了图像(DMA计数达不到预期数量);
2-3.图像数据接收顺序:
  一般而言,如果CPU有支持数据打包方式,即把sensor端接收过来的4个8字节拼成32位的一个字的排序,需要选择或者尝试多种拼接方式.


你可能感兴趣的:(OV9712 CMOS基于JZ4775调试(一))