DSP

ov7725鹰眼

2019-07-13 16:03发布

只做收藏使用 原博客地址 侵权删 点击打开链接http://blog.csdn.net/lxk7280/article/details/26975233

凭借着OV7620,将已经调好速度控制和角度控制的车子能跑起来了。基础功能实现后就开始对车子优化了。 一个好的人眼睛最重要,同样对于一个好的平衡车,摄像头传感器最重要。因此我决心首先做的是对摄像头的优化。
方针: OV7620  -->  OV7725(鹰眼摄像头)    使用:KEIL 鹰眼摄像头 超核库
OV7620的缺点: OV7620是1/3”CMOS彩 {MOD}/黑白图像传感器。它支持连续和隔行两种扫描方式,VGA与QVGA两种图像格式;最高像素为664×492,帧速率为30fps。而他的缺点正是在此,帧速率太低。每秒中只能产生30唱图像。可以确定他的VSYNC信号为30HZ。
  帧速率不高为何是缺点:  因为车子跑到一定速度之后,图像变化很快,帧的速率低导致了道路实时性差,不能够及时刷新道路情况。所以会影响智能车的提速。
鹰眼摄像头(OV7725)的优点: 1.高达150HZ的帧频率。 2.硬件二值化。(也有人认为是缺点。) 3.BGA封装: 但是鹰眼的制造商野火,采用捆绑销售,每次买的时候必须购买套装。不过商家也是为了购买者着想,因为很多人不会自己驱动OV7725,只会对例程进行修改,不会移植,这样的购买者买套件确实也不失为一个好方法。 不过博主比较穷,在一番软磨之下,商家给我单卖了一个鹰眼摄像头(OV7725),在此谢谢商家了。

驱动鹰眼的步骤: 1.知道该款摄像头的工作特点和方式。     


第一大步:理解时序图。 2.在我介绍OV7620的使用http://blog.csdn.net/lxk7280/article/details/22207001)的时候,就说了理解时序图是驱动一款摄像头的重中之重。尤其是对于鹰眼这款比较特殊的摄像头。

接下来一个必须理解的地方,否则就驱动不了该款摄像头。 那就是:鹰眼摄像头的一个PCLK信号传来的时候,会传输8个像素点。而不是OV7620的一个PCLK信号,对应1个像素点。 So:如果一行为80个点,那么一个行信号中只会有10个PCLK信号,而不是80个PCLK信号。 示例:采集到:0xFF 0X00  。  对应二值化的像素点。 黑黑黑黑白白白白
为了更好的让自己理解鹰眼摄像头的时序图,我在实验室的示波器上仔细看了下各个信号的波形。如下图:
场信号和行信号波形:

看完这么多关于时序图的波形后,相信大家对鹰眼摄像头的波形都了解了。

接下来开始进攻第二大部分:SCCB的操作。   3. 没有对SCCB进行操作,就没办法操作摄像头。 有人会奇怪为什么使用OV系列的摄像头每次都要进行SCCB的操作呢?难道它自己不会保存上次的操作结果吗? 原因是:OV系列的摄像头的寄存器是EEPROM,不稳定,数据很容易丢失,因此程序每次初始化时我们都要重新写入寄存器设置。 需要修改的寄存器有,PCLK速率,帧率、图像亮度、对比度、 {MOD}饱和度、镜像等功能。


步骤: 首先给出OV7725的SCCB各个功能对应的寄存器的写入值: [objc] view plain copy  print?
  1. #ifndef _OV7725_REG_H_  
  2. #define _OV7725_REG_H_  
  3.   
  4. #define OV7725_ID           0x21  
  5.   
  6.   
  7. #define OV7725_GAIN      0x00  
  8. #define OV7725_BLUE      0x01  
  9. #define OV7725_RED       0x02  
  10. #define OV7725_GREEN     0x03  
  11. #define OV7725_BAVG      0x05  
  12. #define OV7725_GAVG      0x06  
  13. #define OV7725_RAVG      0x07  
  14. #define OV7725_AECH      0x08  
  15. #define OV7725_COM2      0x09  
  16. #define OV7725_PID       0x0A  
  17. #define OV7725_VER       0x0B  
  18. #define OV7725_COM3      0x0C  
  19. #define OV7725_COM4      0x0D  
  20. #define OV7725_COM5      0x0E  
  21. #define OV7725_COM6      0x0F  
  22. #define OV7725_AEC       0x10  
  23. #define OV7725_CLKRC     0x11  
  24. #define OV7725_COM7      0x12  
  25. #define OV7725_COM8      0x13  
  26. #define OV7725_COM9      0x14  
  27. #define OV7725_COM10     0x15  
  28. #define OV7725_REG16     0x16  
  29. #define OV7725_HSTART    0x17  
  30. #define OV7725_HSIZE     0x18  
  31. #define OV7725_VSTRT     0x19  
  32. #define OV7725_VSIZE     0x1A  
  33. #define OV7725_PSHFT     0x1B  
  34. #define OV7725_MIDH      0x1C  
  35. #define OV7725_MIDL      0x1D  
  36. #define OV7725_LAEC      0x1F  
  37. #define OV7725_COM11     0x20  
  38. #define OV7725_BDBase    0x22  
  39. #define OV7725_BDMStep   0x23  
  40. #define OV7725_AEW       0x24  
  41. #define OV7725_AEB       0x25  
  42. #define OV7725_VPT       0x26  
  43. #define OV7725_REG28     0x28  
  44. #define OV7725_HOutSize  0x29  
  45. #define OV7725_EXHCH     0x2A  
  46. #define OV7725_EXHCL     0x2B  
  47. #define OV7725_VOutSize  0x2C  
  48. #define OV7725_ADVFL     0x2D  
  49. #define OV7725_ADVFH     0x2E  
  50. #define OV7725_YAVE      0x2F  
  51. #define OV7725_LumHTh    0x30  
  52. #define OV7725_LumLTh    0x31  
  53. #define OV7725_HREF      0x32  
  54. #define OV7725_DM_LNL    0x33  
  55. #define OV7725_DM_LNH    0x34  
  56. #define OV7725_ADoff_B   0x35  
  57. #define OV7725_ADoff_R   0x36  
  58. #define OV7725_ADoff_Gb  0x37  
  59. #define OV7725_ADoff_Gr  0x38  
  60. #define OV7725_Off_B     0x39  
  61. #define OV7725_Off_R     0x3A  
  62. #define OV7725_Off_Gb    0x3B  
  63. #define OV7725_Off_Gr    0x3C  
  64. #define OV7725_COM12     0x3D  
  65. #define OV7725_COM13     0x3E  
  66. #define OV7725_COM14     0x3F  
  67. #define OV7725_COM16     0x41  
  68. #define OV7725_TGT_B     0x42  
  69. #define OV7725_TGT_R     0x43  
  70. #define OV7725_TGT_Gb    0x44  
  71. #define OV7725_TGT_Gr    0x45  
  72. #define OV7725_LC_CTR    0x46  
  73. #define OV7725_LC_XC     0x47  
  74. #define OV7725_LC_YC     0x48  
  75. #define OV7725_LC_COEF   0x49  
  76. #define OV7725_LC_RADI   0x4A  
  77. #define OV7725_LC_COEFB  0x4B  
  78. #define OV7725_LC_COEFR  0x4C  
  79. #define OV7725_FixGain   0x4D  
  80. #define OV7725_AREF1     0x4F  
  81. #define OV7725_AREF6     0x54  
  82. #define OV7725_UFix      0x60