本帖最后由 6100308094 于 2016-3-27 20:16 编辑
继续前行,视频图像之----OV7670配置 周四收到了室友给我寄过来的东西,里面就有我的OV7670了,想着周末就用起来,于是果断搞起。
OV7670:
如果大家和我一样,以前没有玩过摄像头,那么7670比较好入手,建议大家看看cb的7670的东西,很不错,对入门很有用,毕竟我们不想为了寄存器配置花太多太多的时间。。。
引脚定义: 1脚 VCC 电源,FPGA3.3V 2 GND 地 3 SCL SCL 模块内部带上拉电阻 4 SDA SDA 模块内部带上拉电阻 5 VSYNC VSNYC帧同步 6 HREF HSNYC行同步 7 PCLK PCLK像素时钟 8 XCLK XVCLK 主时钟输入 9 D7 像素数据 10 D6 像素数据 11 D5 像素数据 12 D4 像素数据 13 D3 像素数据 14 D2 像素数据 15 D1 像素数据 16 D0 像素数据
[size=18.6667px]DECA没有专门的接口,于是乎,我就用杜邦线连着:
于是乎就开始搞起来了,仿真仿真,越来越习惯先仿真后上板signaltap了,仿真确实能发现大部分的问题(当然有些问题仿真发现不了,后面就发现了)。 一:仿真
SCCB总线的协议和I2c协议是类似的,所以用起来还是很方便的,但是但是,最麻烦的就是那么多寄存器的值要配多少的问题,最快的当然就是用cb的了,后续要用到什么配置方式,修改某些寄存器的值的话直接找手册更改配置参数表就行了。 在前面搞HDMI的时候,也是一样的,通过I2c总线配置HDMI芯片,那个时候我用的是厂家的配置参数,因为快啊,当后续有需求要改的时候,当然在去修改某些reg的值了。这里仿真确实没啥,上几张图吧,
仿真完之后,逻辑方面没啥问题,接着就上板了,看读取的1C和1D地址,是厂家信息 Read_DATA + 0 : LUT_DATA = {8'h1C, 8'h7F}; //MIDH 厂商识别字节-高(只读)
Read_DATA + 1 : LUT_DATA = {8'h1D, 8'hA2}; //MIDL 厂商识别字节-低(只读)
可以看到,读取的信息是对的,读1C的时候是7F,读1D的时候是A2。
值得注意的是:
(1)我这个OV7670摄像头模块的SDA,SCL内部自带上拉,因此,直接接FPGA就行。(bingo文档里提到了上拉,所以此处标注一下);
(2)一开始读出的1C地址的值是FF,对不上,解决发现是该模块不带FIFO,要FPGA提供XCLK,因此,我提供了25Mhz给该管脚,就读出正常(这个是仿真仿不出来的)。
这一节,我直接接了VCC,GND,SCL,SDA,XCLK五个管脚,还没有开始采集,下一节,我就开始采集。
|