嵌入式开发者社区
标题:
ov2640设置RAW输出,完成了800*600的,但是1600*1200的RAW输出不行
[打印本页]
作者:
blandodo
时间:
2016-10-11 19:34
标题:
ov2640设置RAW输出,完成了800*600的,但是1600*1200的RAW输出不行
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格式输出的尝试,为啥?
希望有人能帮忙看看!!!先谢谢
作者:
blandodo
时间:
2016-10-14 09:34
无人问津么,伤感
OV2640的手册这么坑,各位大神都是怎么调的啊?@希望缄默
作者:
希望缄默
时间:
2016-10-14 09:38
blandodo 发表于 2016-10-14 09:34
无人问津么,伤感
OV2640的手册这么坑,各位大神都是怎么调的啊?@希望缄默 ...
这个...... 我也没搞过 问问 @Lewis
作者:
blandodo
时间:
2016-10-18 15:59
私信@Lewis没有回复我,他是不是不常上线?能帮我问问他吗?
作者:
BUGFW
时间:
2017-7-6 10:24
请问下信号极性是怎么设置的
我也采集数据呢,但是数据只有前面有,后面全都是0,我感觉可能是帧同步型号极性反了,
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4