开始我也不行的,查了好多才搞定的。首先得理解YUV422是什么意思:
开始我自以为是Y用4bit表示,U用2bit表示,V用2bit表示。
后来查了才知道完全不是一回事!
意思是:四个像素里有4个Y、2个U、2个V;而每个Y、U、V都是8bit表示的。
最后还有一点,那就是你摄像头YUV数据的输出顺序了,一般有4种顺序可选:
1. 输出8bit Y 再输出8bit U 然后又输出8bit Y 最后输出8bit V 以此类推按顺序输出;
2. U Y V Y ... U Y V Y 以此类推;
3.忘了
4.忘了
我用的是第二种顺序,即:U Y V Y输出的
知道以上后,采集思路如下:
for(i=0;i<ROW;i++)
{
for(j=0;j<LINE;j++)
{
//1.读取U或V值,这里直接舍弃
FIFO_RD_L();
FIFO_RD_H();
//2.读取Y值,即灰度值
FIFO_RD_L();
Image_Data[j] = GPIO_GET_8bit(PORTD,0);//读取图像数据PORTD0-PORTD7
FIFO_RD_H();
}
}
1.不是程序能直接区分出来的!不管是什么数据,对程序来说只是1和0,程序怎么可能直接会区分!
2.U、V值和Y值在数据上没有任何的区别,都是0--255之间的一个数值。
3.U、V、Y是按时序输出的!我上次已经说得很清楚啦!有4种时序(或者说顺序),可以根据需要自己配置的。
不清楚你用的是不是跟我的摄像头完全一样的,我已经说明我的是OV7725带FIFO,只有VSYNC场信号,没有行和像素信号。不过就算摄像头不一样YUV422时序的定义都是一样的,只是在操作上殊途同归而已。
我这里针对U Y V Y这种时序再跟你细说多一次吧:
1.OV7725上电后,数据就会以一定的速度和顺序连连不绝的输出,不管你接不接收。(要接收,你就使能FIFO,数据就存进FIFO里了你再读出来就好;不接收就不使能FIFO,数据就直接流失了。)
2.上面说的感觉是废话,应该懂的吧...还是直接说U、Y、V、Y顺序好了。
现在知道了数据会以一定的顺序连连不绝的输出了,那“一定的顺序”是怎么样的呢?这就是我们直接选的了,我选的 是U Y V Y,即:输出一个U数据8bit存在了FIFO的最前面,然后输出一个Y数据8bit存在了FIFO的第二个位置,接着输出一个V数据8bit存在了FIFO的第三个位置,然后又输出一个Y数据8bit存在了FIFO的第四个位置,接着又循环回去输出下一个U数据8bit存在了第五个位置,再又是一个Y数据8bit存在第六个位置,如此如此,这般这般...即U Y V Y U Y V Y ........U Y V Y U Y V Y U Y V Y .....U Y V Y。够详细、废话了吧!
3.好了现在知道数据是以U Y V Y U Y V Y的顺序存在FIFO里了,那现在剩下的事情就是从FIFO中把我们要的Y数据读取出来了!那怎么读呢?很简单,看FIFO数据手册,或直接看别人的读取程序就好了,如下:
for(i=0;i<ROW;i++)
{
for(j=0;j<LINE;j++)
{
//1.读取U或V值,这里直接舍弃
FIFO_RD_L();//FIFO的RD脚给低电平,使得FIFO输出一个数据,由于第奇数次输出的数据是U/V(为什么是U/V数据,第2点时我讲清楚了:U Y V Y),而我们需要的是Y所以就直接舍去,就是不接收,即不写 Image_Data[j] = GPIO_GET_8bit(PORTD,0);这样的从数据引脚读取数据的语句。
FIFO_RD_H(); //FIFO的RD脚给高电平,使得FIFO不能输出数据。(即一低一高一个CLK,FIFO输出一个数据。注:FIFO数据先进先出,输出一个数据地址自加1,不需要我们变地址)
//2.读取Y值,即灰度值
FIFO_RD_L();//同上。由于这里是第偶数次输出数据,即输出的是Y数据,所以有下面的一句读取数据的语句。
Image_Data[j] = GPIO_GET_8bit(PORTD,0);//读取图像数据PORTD0-PORTD7
FIFO_RD_H(); //同上,
}
}
//这样按顺序循环读下来,读到的当然都是我们要的Y数据啦! 作者: 尕玍紿 时间: 2013-12-25 19:50
本问题已解决!
自己运气好,导致自己掉坑里了!总觉得既然75行得通就说明读写复位的时序没问题。最后发现问题所在是中断时,自己加的标志位没同步好的原因,导致了读写复位不同步,从而造成图像东一块,西一块... 作者: dongshao_87 时间: 2013-12-25 21:38
新手 学习了 虽然不是看的很多但是努力中 呵呵....作者: seakid 时间: 2014-6-6 14:00 作者: 天天好心情亲 时间: 2014-10-16 03:28
楼主 可以分享一下全部程序吗? 因为正在学习摄像头 不过现在还不会写程序!!1920367503@qq.com 谢谢啦!!!作者: longerhaha 时间: 2014-10-25 21:59
感觉楼主好屌,求罩作者: 命起涟漪 时间: 2014-10-26 23:42
;P;P作者: 大海奋斗... 时间: 2014-11-4 13:48
新手 谢谢楼主