OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10814|回复: 15

关于OV2640输出数据格式的问题

[复制链接]

3

主题

25

帖子

1

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-2-27
在线时间
20 小时
发表于 2018-3-23 02:54:17 | 显示全部楼层 |阅读模式
3金钱
原子哥,各位大佬,首先谢谢你们看我的问题~

我想把自己的F4探索板的OV2640的数据输出给FPGA采集,我用的原子提供的示例代码,实验35-摄像头实验的代码. 现在有几个问题.
1. 我自己写了Verilog,发现:
在Vsync为高电平的一个脉冲期间,有800个HREF脉冲. 实际上Vsync为低时HREF没有脉冲产生;

在HREF为高电平的一个脉冲期间,有960个PCLK脉冲. PCLK是一直存在的,但只有HREF为高时才有数据D[7:0]产生.

我看了原子的摄像头实验的PPT文档,800和960与PPT里说的不符,PPT里说每个HREF下应该有1600*2即3200个PCLK,不知道为什么.

2. PPT提到在行内扫描时,每两个PCLK完成一个像素,低字节在前,高字节在后.
“低字节在前,高字节在后”到底是什么意思?或者说,第一个PCLK的D[7:0]和第二个PCLK的D[7:0]与RGB565的16个bit是怎么对应的?
按照OV2640的datasheet里对像素安排的描述, 是不是这样:
第一个PCLK下的低字节D[7:0]里的[7:3]对应B[4:0],
                                                [2:0]对应G[5:3];
第二个PCLK下的高字节D[7:0]里的[7:5]对应G[2:0],
                                                 [4:0]对应R[4:0];

3. 而且,按照OV2640的datasheet,它输出是第一行应该是像素1的BG,像素2的BG,像素3的BG....
然后第二行像素1的GR,像素2的GR,像素3的GR....
这么个输出方法下应该是第1个PCLK第481个PCLK对应第1个像素啊,怎么又变成第1个和第2个PCLK这种相邻的两个PCLK对应1个像素了呢?一头雾水。。。





SCR04.PNG
SCR05.PNG

ov2640

ov2640

最佳答案

查看完整内容[请看2#楼]

自己来回复一下吧: Low Byte First的意思是说,在HREF有效时,相邻的两个PCLK下的两个Byte组成一个16 bit的RGB565的完整的像素;这16个bit的低8bit先出来,高8bit后出来; 第一个Byte的[4:0]bit是Blue, [7:5]bit是Green的[2:0]; 第二个Byte的[7:3]bit是Red, [2:0]bit是Green的[5:3]; 其实在STM32F407的Reference Manual上,LCD一节里讲了LCD接收的数据格式,就是Low Byte First的. 见附图,@对应的就是Low Byte,@+1对应 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

25

帖子

1

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-2-27
在线时间
20 小时
 楼主| 发表于 2018-3-23 02:54:18 | 显示全部楼层
[img]自己来回复一下吧:
Low Byte First的意思是说,在HREF有效时,相邻的两个PCLK下的两个Byte组成一个16 bit的RGB565的完整的像素;这16个bit的低8bit先出来,高8bit后出来;
第一个Byte的[4:0]bit是Blue, [7:5]bit是Green的[2:0];
第二个Byte的[7:3]bit是Red,  [2:0]bit是Green的[5:3];

其实在STM32F407的Reference Manual上,LCD一节里讲了LCD接收的数据格式,就是Low Byte First的. 见附图,@对应的就是Low Byte,@+1对应的就是High Byte,LCD接收数据时地址也是累加的,所以他会先期待
地址为@处的数据,然后才是@+1处地址的数据.

如果这个Byte顺序你处理时搞错了,或者颜色的比特位取错了,会怎样?我观察的效果是图像你能看出物体框架,但颜色严重扭曲,而且有一种噪声很大的感觉. 我给了网上找到的一张图,就是这个效果.
我记得论坛里有人问过类似的问题,当时他给的图就是颜色严重扭曲的,他问怎么回事,最后没人给个正确答复,好像和谁私聊去了。其实就是这个问题,byte order没搞对,或者颜色位处理时没搞对.

我自己最近搞了个玩意,重画了原子F4板,摄像头采集数据,一边在LCD上显示,一边传给Altera的Cyclone V的FPGA-SOC(ARM A9 Core), FPGA端对接收到的图像进行裁剪,然后以Cyclone V的ARM A9为核心搭建一个SOC系统,利用Avalon Bus通过Cyclone V的片上高速桥把图像传给ARM核,用Linux driver把数据读出来传给FPGA的板上的用户空间程序,然后TCP/IP发送,在PC上用QT自己做了一个TCP/IP接收,图像像素提取和写屏的系统. 搞了三个礼拜,今天弄完了,大概样子见图.  最后再PC上正确显示,验证了我上面的结论.

mmexport1523604046378.jpg
mmexport1523604040819.jpg
颜色Byte order搞错或者颜色位取错.jpg
颜色取样正确.jpg
LCD Explanation.png
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-3-25 01:57:30 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

25

帖子

1

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-2-27
在线时间
20 小时
 楼主| 发表于 2018-4-13 15:58:52 | 显示全部楼层
忘了提一点,如果要把RGB565格式的图像在电脑屏幕上显示,直接显示是不行的,我猜可能是因为RGB565是专门为嵌入式LCD屏准备的,比如5 bit的红与蓝,最大数值只有31,但他的颜色仍然能在嵌入式LCD上显示出效果;
但到了PC上就不行了,因为PC的显示器很多是RGB888的,每个像素颜色有256个值,这是最大为31/63的RGB565图像就会变得特别黑,虽然仔细看也能看出轮廓,所以需要你做一个RGB565到RGB888的转换,这个网上很多,我就不废话了
回复

使用道具 举报

3

主题

25

帖子

1

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-2-27
在线时间
20 小时
 楼主| 发表于 2018-4-13 16:13:42 | 显示全部楼层
http://www.openedv.com/forum.php ... mp;highlight=OV2640
http://www.openedv.com/forum.php ... mp;highlight=OV2640

找到了,第一个帖子就是我提到的那个帖子的,但后面有的好像没了?和第二个帖子一样,颜色严重扭曲或者说很花,但又能看清图像里物体轮廓的,都是因为RGB565的两个Byte的顺序没搞对
回复

使用道具 举报

3

主题

25

帖子

1

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2016-2-27
在线时间
20 小时
 楼主| 发表于 2018-4-13 17:19:58 | 显示全部楼层
@正点原子

原子哥,能加个精不?

还有,我测了,在你们的F4探索者板的OV2640配置下,OV2640输出每一个Vsync下有800个HREF,每个HREF下是960个PCLK,也就是你们的OV2640输出实际上是800(Line)*480(Column)的.
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-4-16 01:59:52 | 显示全部楼层
momoxinduo 发表于 2018-4-13 17:19
@正点原子

原子哥,能加个精不?

可以。
我们例程的图像输出尺寸,是自动设置的,根据LCD的大小。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2015-4-19
在线时间
75 小时
发表于 2018-10-15 18:16:41 | 显示全部楼层
H V 的数量和你的图像分辨率一样的
学习学习。。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-11-18
在线时间
10 小时
发表于 2019-4-10 13:50:58 | 显示全部楼层
momoxinduo 发表于 2018-4-13 15:58
忘了提一点,如果要把RGB565格式的图像在电脑屏幕上显示,直接显示是不行的,我猜可能是因为RGB565是专门为 ...

能用山外的看,大佬我想问一下,那我单传一次的话图像完全没问题,如果连续传的话出现了错位现象应该怎么处理呢?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-10-23
在线时间
5 小时
发表于 2019-6-20 11:56:50 | 显示全部楼层
顶一下,看到了自己图片处理错误的一些灵感
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-5-20
在线时间
3 小时
发表于 2019-7-7 12:06:31 | 显示全部楼层
厉害!
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-6-8
在线时间
14 小时
发表于 2019-7-12 10:35:27 | 显示全部楼层
66666666
回复

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-10-30
在线时间
21 小时
发表于 2019-11-10 02:30:01 | 显示全部楼层
您好,我用的ov7670的驱动程序驱动OV2640,显示的是OV7670 Error,能帮忙解决吗
回复

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2019-7-28
在线时间
60 小时
发表于 2019-11-18 18:59:36 | 显示全部楼层
感谢分享   
回复

使用道具 举报

0

主题

14

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-1-20
在线时间
4 小时
发表于 2020-1-22 19:45:05 | 显示全部楼层
最近在学习,加油
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2019-6-16
在线时间
18 小时
发表于 2024-9-14 15:31:18 | 显示全部楼层
大佬,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 06:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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