下面列出这几天在JZ4775平台折腾OV9712的调试编程步骤.
1.DATASHEET AND SAMPLE CODE:
数据手册和参考代码,这一点最好向厂家或其下的代理商要,一般都有会,也会给.
1-1.DATASHEET:
拿到DATASHEET首先要看的当然是features这一章节,在这一章节我们可以知道CMOS功能和宏观特性.如OV9712关于features内容如下:
从上图我们可以知道,OV9712一些特性,如:低照明模式(夜间模式)、自动曝光、自动调节增益、自动白平衡、可以实现16的区域的局部曝光控制(一些高档的CMOS都有此功能,如MI367)、镜片校正等;输出格式为rawRGB(bayer是rawRGB格式的一种);支持的图像大小为WXGA(1280x800)和640x400;可编程总线协议为SCCB(兼容IIC);DVP(即图像传输线)为并行输出;另外,OV9712还支持PLL倍频或降频.如我手头给OV9712的MCLK为24MHZ,其PCLK即为48MHZ.这些只是一些宏观的功能,具体实现的话,可以通过SCCB控制内部寄存器实现.
除了features之外,目录是第二个要看的,主要要知道一些编程相关的信息,如SCCB接口在哪、VSYNC、HSYNC、PCLK极性配置、DVP接口、寄存器相关.
1-2.SAMPLE CODE:
厂家提供的参考代码,通过厂家提供的代码可以更好地理解datasheet.OV9712(WXGA)的SAMPLE CODE如下:
@@ Res_1280x800 60 12 80 ;Reset 60 09 10 ;;--------------------------------------------------------- ;;Core Settings ;;--------------------------------------------------------- 60 1e 07 60 5f 18 60 69 04 60 65 2a 60 68 0a 60 39 28 60 4d 90 60 c1 80 60 0c 30 60 6d 02 ;;--------------------------------------------------------- ;;DSP ;;--------------------------------------------------------- 60 96 f1 ; DSP options enable 60 bc 68 ; [7] reserved; [6:5] bd_sel; [4] th_opt; [3:0] thresh_hold ;;--------------------------------------------------------- ;;Resolution and Format ;;--------------------------------------------------------- 60 12 00 60 3b 00 ; DSP Downsample 60 97 80 ; [7] smph_mean; [6] reserved; [5:4] smph_drop ;;---- Place generated settings here ----;; 60 17 25 60 18 A2 60 19 01 60 1a CA 60 03 0A 60 32 07 60 98 00 60 99 00 60 9a 00 60 57 00 60 58 C8 60 59 A0 60 4c 13 60 4b 36 60 3d 3c 60 3e 03 60 bd A0 60 be c8 ;;--------------------------------------------------------- ;;AWB ;;--------------------------------------------------------- ;; ;;--------------------------------------------------------- ;;Lens Correction ;;--------------------------------------------------------- ;;---- Place lens correction settins here ----;; ;; Lens model : ;; Module type : ;;--------------------------------------------------------- ;;YAVG ;;--------------------------------------------------------- ;;---- Place generated "WIndows Weight" settings here ----;; 60 4e 55 ;AVERAGE 60 4f 55 ; 60 50 55 ; 60 51 55 ; 60 24 55 ;Exposure windows 60 25 40 60 26 a1 ;;--------------------------------------------------------- ;;Clock ;;--------------------------------------------------------- 60 5c 52 60 5d 00 60 11 01 60 2a 98 60 2b 06 60 2d 00 60 2e 00 ;;--------------------------------------------------------- ;;General ;;--------------------------------------------------------- 60 13 A5 60 14 40 ;Gain Ceiling 8X ;;--------------------------------------------------------- ;;Banding ;;--------------------------------------------------------- 60 4a 00 60 49 ce 60 22 03 60 09 00
3.CMOS内部结构宏观示意图:
理解CMOS宏观的内部结构图,可以大体知道有哪些PIN脚,内部集成哪些功能模块:
由上图可知,支持的pin脚有时钟pinXCLK,电源pinPWDN,复位pinRSTB,像素pinPCLK还有SCCB的两根pinSIOC和SIOD.并行数据pinDVP.如果怀疑硬件有问题的时候,是需要查这些pin脚的.
4.pin脚的说明:
有些怀疑硬件问题的时候,需要用示波器量一下相应的pin是否正常工作,如是否有XCLK,是否有PCLK信号等,因此,各个pin脚的意义是必须要熟悉的.部分pin脚说明如下:
5.参考原理图:
一般来讲,硬件设计人员都是参考原厂提供的原理图画的,如果需要在原来参考的原理图上进行本质性的改动,最好咨询一下原厂.如OV9712数据手册上提供的原理图的DVP为10,但是JZ4775平台的DVP只有8根,把OV9712的DVP修改成8根也是向OV9712公司确认是可行的.尤其是上电硬件复位的电路部分,更是需要注意的.有些低端的SENSOR的参考原理图也是有点问题,有时就出现上电复位不成功导致了IC工作异常(搞死人).其意义比软件sample code大多了.
OV9712参考原理图如下:
如果有特别注意的地方,参考原理图会标识出来的,如上述的note1和note2.当然,这是硬件工程师需要特别关注的.驱动软件的话,略懂略懂.