嵌入式开发者社区

标题: OMAPL138摄像头采集及显示问题 [打印本页]

作者: bit0rain    时间: 2015-5-24 18:48
标题: OMAPL138摄像头采集及显示问题
我采用ov7725作为视屏数据采集,采用一个2.2寸屏来显示。其中ov7725采集视频分辨率为320*240,2.2寸显示屏分辨率为240*320。ov7725采集的数据是yuv422的,而显示屏是RGB565的,将摄像头采集回来的数据的部分图像做彩色空间转换,用于LCD的显示。我的做法是,建立一个表以Y为下标对应到相应的RGB灰度,表的形式如下:
volatile unsigned short Y2Gray[] = {
5 g6 m6 x$ O: T  q  A0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,# H& F8 K. V& I7 P! u0 \
0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,1 S& b. E. N' C" h; h! j
0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,
- F) o; E  F2 i- G2 q4 X- {$ [1 V....
0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff,
};
色彩空间转换的部分如下:
volatile unsigned char *videoTopY, *videoTopC;1 ]. S  n* t, G  D$ S9 B* w
volatile unsigned short *videoTopRgb1, *videoTopRgb2;
for(i = 0; i < 240; i++)
& M1 s9 F$ q2 R; I{* F0 W8 Z' `3 z) U
    for(j = 0; j < 240; j+=8)9 A( M' N3 V6 J$ _8 ^
    {
- s" U7 A) I* q# N9 u        index = i * 240+ j;! `0 E  g  V8 m
        index1 = i * 320+ j;
4 C1 s* i$ T* d5 ]% }. Y        videoTopRgb1[index] = Y2Gray[videoTopY[index1 * 2]];3 i: E& C( z% M- v) w8 z. T
        videoTopRgb1[index + 1] =Y2Gray[videoTopY[(index1 + 1) * 2]];
5 m+ J7 [1 a3 r! |; \; f        videoTopRgb1[index + 2] = Y2Gray[videoTopY[(index1 + 2) * 2]];- l# b4 `+ x# z% o
        videoTopRgb1[index + 3] = Y2Gray[videoTopY[(index1 + 3) * 2]];8 k- {- [; Z* P4 @. o) c7 t
        videoTopRgb1[index + 4] = Y2Gray[videoTopY[(index1 + 4) * 2]];
) _1 X( j, `( l1 I) D0 k1 e7 i        videoTopRgb1[index + 5] = Y2Gray[videoTopY[(index1 + 5) * 2]];
3 r9 J* ?! X- M6 _+ r4 O& k        videoTopRgb1[index + 6] = Y2Gray[videoTopY[(index1 + 6) * 2]];  e: D6 n: \; m: a. y. e$ Y# J/ Q9 @
        videoTopRgb1[index + 7] = Y2Gray[videoTopY[(index1 + 7) * 2]];
    }& h6 T- L3 ^0 ^6 `  M$ V7 X
" K8 s" u5 p3 s- s) T- Z
}
我用的是双buffer显示的。
问题是图像只会显示一半。
使用CCS5.5将DSP内存中的数据保存,放到matlab中显示如下:
我的摄像头采集回来的数据是这样的(图一)
[attach]253[/attach]
小黑点忽略yuv
理论上处理完成之后应该是这个样子的(图二)
[attach]255[/attach]
但是dsp处理完数据后显示buff里的数据是这样的(图三,图四):
[attach]254[/attach]

8 ^  f) Y1 d7 C- f1 j5 g[attach]256[/attach]
程序运行过过程中图三,图四是交替显示的。
请问这是为什么?我开了L1cache,cache inv和wb都用了,也不起作用。
请TL的工程师帮忙解决一下,困扰了两周了,不胜感激。
3 X( U9 L% ]; P: }9 [

. ?& D& W2 h2 u
作者: bit0rain    时间: 2015-5-25 10:28
buffer大小不足,问题解决
作者: CrazyXiao    时间: 2016-12-26 00:12
@bit0rain  请问你怎么解决的。。。。我也是遇到这个问题3 h' I" \7 e* L1 [, A7 J

作者: CrazyXiao    时间: 2018-9-14 16:48

7 k6 Y* ~% k) Z6 D+ S@bit0rain  请问能上传一下驱动代码参考一下吗,尤其是VPIF接口的配置,我现在在驱动OV7725,发现VPIF接收不到数据。摄像头已配置寄存器,能正常输出数据,也能进入VPIF帧中断。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4