FPGA配置OV7670各种问题汇总,没有应答信号,读OV7670 ID寄存器值出现错误

用i2c配置ov7670的时候,出现读取摄像头ID不成功的原因:

遇到此种情况相当困惑,

一方面我把驱动e2prom的iic接口稍作修改移植过来,但是压根就不稳定,有时用signaltap捕获的波形有应答信号,有时候没有应答信号!这个问题困扰我好久,看了小梅哥以及韩琳的波形发现我压根没有理解,就是TAA,SIO_DOUT的输出要晚于SIO_C的下降沿TAA(图1)时间。这个参数(TAA)没有用到,但是不考虑这个参数,IIC驱动e2prom没任何问题!

图1

另一方面每次写寄存器都有应答信号,但是读不出正确的值(正确的值是比如 OA处应该读出0x76,0B处应该读出0x73,错误的值读出的是0xFF)

具体也就是瞎调出来的,精力全放在这个位置(图4切换读写方向处)来调,只要你能控制好SDA和SCL同时拉高(实际上SDA晚于SCL TAA时间),然后SDA先于SCL拉低x时间,具体参数可以去看datasheet

最后,之前一直得不到应答信号的原因:

图2

 

 

如图所示,之钱一直傻逼的把OV7670单纯的当作一个IIC类似于e2rom的器件,直接操作SDA与SCL。    XCLK以及RESET和PWDN(图2)都没有接任何东西   实际上只要让RESET置高(图3),XCLK接上相应的时钟就行了。PWDN接高电平或者低电平,实际上无影响。

图3

最终成功解决各种问题(图4)!


图4

 

阅读更多

没有更多推荐了,返回首页