发 帖  
原厂入驻New
实战多通道高速精密测温仪的全系列设计教程,以实际项目为依托,提升工程师核心竞争力!→点击立即抢购←
为什么ov2640设置RAW输出1600*1200无法完成?
93 RAW DSP
分享
[tr]VPIF例程正常运行可以看到画面了,不过信号是RGB565输出的
每个像素是2个字节,每行800个像素共计1600自己,600行,所以image的空间是800*600*2字节。
在CCS的tool->Image Analyzer中按上面的参数设置RGB格式就可以看到完整图像了

由于我现在开发的应用只需要红色通道的数据,所以想拿到RAW格式。查了OV2640的datasheet,查到可以修改两个寄存器达到这个目的:
0xFF=0x00时:
0xC2=0x01  将DSP的RAW输出是能
0xDA=0x04  将输出格式设置为RAW10

我们的开发板只接了高8位,所以应该每个像素点就是1个字节
根据OV2640 DATASHEET提供信息,默认例程800*600的SVGA分辨率,序列信息应该
第1行:GBGBGBGB……GBGBGB共800个像素点
第2行:RGRGRGRG……RGRGRG共800个像素点
第3行:(与第1行相同)
………………
………………
第600行:RGRGRGRG……RGRGRG共800个像素点
这里的每一个像素是单色的1字节,理论上这时候的数据应该是800*600字节,是原例程的一半
所以初始化VPIF的时候,需要修改一个参数:
---------------------------------------------------------------
/* 初始化VPIF buffer地址*/
  VPIFCaptureFBConfig(SOC_VPIF_0_REGS, VPIF_CHANNEL_0,
  VPIF_TOP_FIELD, VPIF_LUMA,(unsigned int)&image[0], 800);
---------------------------------------------------------------
用Image Analyzer的RAW格式设置格式如下:


  • <?xml version="1.0" encoding="UTF-8"?>
  • <java version="1.6.0_13" class="java.beans.XMLDecoder">
  • <object class="com.ti.dvt.ui.views.core.ImageProp">
  •   <void property="delegateProp">
  •    <object class="com.ti.dvt.ui.views.core.BayerProp">
  •     <void property="componentMask">
  •      <long>255</long>
  •     </void>
  •     <void property="lineCount">
  •      <int>600</int>
  •     </void>
  •     <void property="lineOrder">
  •      <string>even B lines</string>
  •     </void>
  •     <void property="lineStride">
  •      <int>800</int>
  •     </void>
  •     <void property="pixelCountPerLine">
  •      <int>800</int>
  •     </void>
  •     <void property="pixelOrder">
  •      <string>GR/BG</string>
  •     </void>
  •     <void property="pixelStride">
  •      <int>1</int>
  •     </void>
  •     <void property="startAddress">
  •      <string>image</string>
  •     </void>
  •    </object>
  •   </void>
  •   <void property="scrollLock">
  •    <boolean>true</boolean>
  •   </void>
  • </object>
  • </java>



可以在CCS里看到正确的图像了。感觉超棒啊!

照这个思路,我还想要拿到1600*1200的RAW格式输出数据。
于是把OV6240官方app手册里的UXGA例程如法炮制:
使用官方配置,接收的YUYV的数据,ImageAnalyzer配置如下:
  • <?xml version="1.0" encoding="UTF-8"?>
  • <java version="1.6.0_13" class="java.beans.XMLDecoder">
  • <object class="com.ti.dvt.ui.views.core.ImageProp">
  •   <void property="delegateProp">
  •    <object class="com.ti.dvt.ui.views.core.YUVProp">
  •     <void property="UMask">
  •      <long>16711680</long>
  •     </void>
  •     <void property="UPixelStride">
  •      <int>4</int>
  •     </void>
  •     <void property="VMask">
  •      <long>255</long>
  •     </void>
  •     <void property="VPixelStride">
  •      <int>4</int>
  •     </void>
  •     <void property="YMask">
  •      <long>65280</long>
  •     </void>
  •     <void property="YPixelStride">
  •      <int>2</int>
  •     </void>
  •     <void property="YUVOrder">
  •      <string>YUYV</string>
  •     </void>
  •     <void property="lineCount">
  •      <int>1200</int>
  •     </void>
  •     <void property="lineStride">
  •      <int>3200</int>
  •     </void>
  •     <void property="pixelCountPerLine">
  •      <int>1600</int>
  •     </void>
  •     <void property="readAs">
  •      <int>16</int>
  •     </void>
  •     <void property="startAddress">
  •      <string>image</string>
  •     </void>
  •    </object>
  •   </void>
  • </object>
  • </java>


在CCS里能显示完整图像,但是整个画面是偏绿的,不知道是不是YUV的顺序问题,暂时不管
然后改了如下寄存器
        write_SCCB(0xda, 0x04);   // 0x00
        write_SCCB(0xC2, 0x01);  

尝试一:将VPIF的接收缓存改成1600,结果:VPIF无法完整接收帧
尝试二:将VPIF的接收缓存改为3200,结果:VPIF能完成数据,但是ImageAnalyzer要配置成1600*2400才能显示图像,颜色还是很奇怪

OV2640的手册提供的信息很残缺,一堆Reserve,在google和baidu上搜了一圈,发现几乎没有人做RAW格式输出的尝试,为啥?
希望有人能帮忙看看!!!先谢谢




[/tr]
0
2019-7-17 13:15:04   评论 分享淘帖 邀请回答
2个回答
无人问津么,伤感
OV2640的手册这么坑,各位大神都是怎么调的啊?@希望缄默

这个...... 我也没搞过 问问 @Lewis 
2019-7-17 13:24:24 评论

举报

请问下信号极性是怎么设置的
我也采集数据呢,但是数据只有前面有,后面全都是0,我感觉可能是帧同步型号极性反了,
2019-7-17 14:06:56 评论

举报

只有小组成员才能发言,加入小组>>

21个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表