rclsq 发表于 2010-9-9 00:35:09

OV7670 图像采集初始化 死循环

各位大虾,我用DSP控制OV7670进行图像采集,SCCB调试通过,可以测到SDA和SCL的高低电平变化,但是一直在在OV7670的初始化程序中死循环,程序是根据wangguanfu给的例程修改的,以下是OV7670初始化程序代码:
/* OV7670_init() */
//返回1成功,返回0失败
uchar OV7670_init(void)
{
        uchar temp;
        uchar i;
      
        uchar ovidmsb=0;
        uchar ovidlsb=0;
               
        InitSCCB();//io init..
        temp=0x80;
        if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB
        {
          return 0;
        }
        delay_ms(100);       
        rt = rdOV7670Reg(0x0a, & ovidmsb );
        if(ovidmsb !=0x76)
        {
                return 0;
        }       
        rt=rdOV7670Reg(0x0b, & ovidlsb );
        if(ovidlsb !=0x60)
        {
                return 0;
        }
        delay_ms(100);       
        for(i=0;i<172;i++)             //程序无法进入这里,是什么原因呢?
        {
                if( 0==wrOV7670Reg(change_reg,change_reg))
                {
                        return 0;
                }
        }
    delay_ms(100);       
       
        return 0x01; //ok

}
另外我用示波器测场信号和行信号出现很奇怪的现象,DSP工作的时候同时测这两个信号,居然都是场信号的波形,单独测的时候却各自都是正确的波形,硬件出问题了吗还是里面SCCB的延时不对,电源是3.3V,加了个IN4001稳压二极管(0.4V),降到3.0V左右。7670的输入时钟是由DSP输出的时钟提供,37.5MHZ.
跪求指导啊!

weiwei_614 发表于 2010-9-10 11:02:32

你好,你用什么型号的DSP啊,我现在也准备用OV7670采集图像,DSP是5509A的, 现在在看SCCb和IIC相关的,以后可不可以交流一下。

我QQ251808067

rclsq 发表于 2010-9-11 18:21:37

我用的是2000系列的,我现在解决了SCCB的配置了,下一步就是将采集的图像数据进行转换显示

weiwei_614 发表于 2010-9-12 10:39:23

能留个QQ号码吗?

weiwei_614 发表于 2010-9-12 10:40:58

还有请问你你是用的GPIO模拟的SCCb吗? 2000系列的我不太懂。

pang7 发表于 2010-9-13 18:15:46

求个sccb协议的详细资料 我在网站上没找到关于sccb的资料

weiwei_614 发表于 2010-11-2 16:51:29

楼主,你的图像采集的问题解决了吗啊?我也是用DSP采集图像,目前解决到SCCB配置这一步,但不知道图像采集怎么进行了。可不可知道一下呢?先谢谢了。

jk36125 发表于 2010-11-2 17:07:58

81楼有SCCB驱动源码:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3207784&bbs_page_no=1&search_mode=3&search_text=jk36125&bbs_id=9999

weiwei_614 发表于 2010-11-18 13:42:15

回复【2楼】rclsq
-----------------------------------------------------------------------
你好 我在用DSP采集OV7670图像时遇到一些问题,想请教请教你,行吗? 我的QQ:251808067,先谢谢了.

zidong404 发表于 2010-11-18 15:04:39

回复【楼主位】rclsq


电源是3.3V,加了个IN4001稳压二极管(0.4V),降到3.0V左右。7670的输入时钟是由DSP输出的时钟提供,37.5MHZ.
-----------------------------------------------------------------------
电源可以直接供3.3V

wangguanfu 发表于 2010-11-18 17:52:28

去检查SCL的频率,不要超过200KHZ (我的模块的内部上拉是4.7K)

ds444 发表于 2010-12-21 22:01:13

你的模块的内部上拉我看过,是10K

BINGSHUIHUO 发表于 2010-12-24 01:03:18

mark

wangguanfu 发表于 2010-12-24 21:54:22

回复【11楼】ds444
你的模块的内部上拉我看过,是10k
-----------------------------------------------------------------------

只有很早的才是10K,就算10K 200KHZ 也能过!

wangguanfu 发表于 2010-12-24 21:58:37

另外 LZ的是OV7670吗??OV7670的产品ID是7673H,你的代码怎么是7660呢?



if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB
{
return 0;
}
delay_ms(100);
rt = rdOV7670Reg(0x0a, & ovidmsb );
if(ovidmsb !=0x76)
{
return 0;
}
rt=rdOV7670Reg(0x0b, & ovidlsb );
if(ovidlsb !=0x60)
{
return 0;
}
--------------------------------------------

sendmessage 发表于 2010-12-29 08:58:06

不用延时

你照我的寄存器初始化,绝对OK,注意,一个一个字节的写,OV的sensor大多不支持连续写
把EZUSB_WriteI2C换成你的I2C函数

for(i=0;i<sizeof(OV7670REG);i+=2) EZUSB_WriteI2C(OV7670REG,OV7670REG);

static BYTE OV7670REG[]=
{
0x12,0x80,0x11,0x80,0x3a,0x04,0x12,0x00,0x17,0x13,
0x18,0x01,0x32,0xb6,0x19,0x02,0x1a,0x7a,0x03,0x0a,
0x0c,0x00,0x3e,0x00,0x70,0x3a,0x71,0x35,0x72,0x11,
0x73,0xf0,0xa2,0x02,0x7a,0x20,0x7b,0x10,0x7c,0x1e,
0x7d,0x35,0x7e,0x5a,0x7f,0x69,0x80,0x76,0x81,0x80,
0x82,0x88,0x83,0x8f,0x84,0x96,0x85,0xa3,0x86,0xaf,
0x87,0xc4,0x88,0xd7,0x89,0xe8,0x13,0xe0,0x01,0x58,
0x02,0x68,0x00,0x00,0x10,0x00,0x0d,0x40,0x14,0x18,
0xa5,0x05,0xab,0x07,0x24,0x95,0x25,0x33,0x26,0xe3,
0x9f,0x78,0xa0,0x68,0xa1,0x03,0xa6,0xd8,0xa7,0xd8,
0xa8,0xf0,0xa9,0x90,0xaa,0x94,0x13,0xe5,0x0e,0x61,
0x0f,0x4b,0x16,0x02,0x1e,0x07,0x21,0x02,0x22,0x91,
0x29,0x07,0x33,0x0b,0x35,0x0b,0x37,0x1d,0x38,0x71,
0x39,0x2a,0x3c,0x78,0x4d,0x40,0x4e,0x20,0x69,0x00,
0x6b,0x0a,0x74,0x10,0x8d,0x4f,0x8e,0x00,0x8f,0x00,
0x90,0x00,0x91,0x00,0x92,0x19,0x96,0x00,0x9a,0x80,
0xb0,0x84,0xb1,0x0c,0xb2,0x0e,0xb3,0x82,0xb8,0x0a,
0x43,0x14,0x44,0xf0,0x45,0x34,0x46,0x58,0x47,0x28,
0x48,0x3a,0x59,0x88,0x5a,0x88,0x5b,0x44,0x5c,0x67,
0x5d,0x49,0x5e,0x0e,0x64,0x04,0x65,0x20,0x66,0x05,
0x94,0x04,0x95,0x08,0x6c,0x0a,0x6d,0x55,0x6e,0x11,
0x6f,0x9f,0x6a,0x40,0x01,0x40,0x02,0x40,0x4f,0x80,
0x50,0x80,0x51,0x00,0x52,0x22,0x53,0x5e,0x54,0x80,
0x58,0x9e,0x41,0x08,0x3f,0x00,0x75,0x04,0x76,0xe1,
0x4c,0x00,0x77,0x01,0x3d,0xc2,0x4b,0x09,0xc9,0x60,
0x41,0x38,0x56,0x40,0x34,0x11,0x3b,0x0a,0xa4,0x88,
0x96,0x00,0x97,0x30,0x98,0x20,0x99,0x30,0x9a,0x84,
0x9b,0x29,0x9c,0x03,0x9d,0x4c,0x9e,0x3f,0x78,0x04,
0x79,0x01,0xc8,0xf0,0x79,0x0f,0xc8,0x00,0x79,0x10,
0xc8,0x7e,0x79,0x0a,0xc8,0x80,0x79,0x0b,0xc8,0x01,
0x79,0x0c,0xc8,0x0f,0x79,0x0d,0xc8,0x20,0x79,0x09,
0xc8,0x80,0x79,0x02,0xc8,0xc0,0x79,0x03,0xc8,0x40,
0x79,0x05,0xc8,0x30,0x79,0x26,0x2d,0x00,0x2e,0x00,
0x13,0xe7,0x09,0x01,0x11,0x00
};

sendmessage 发表于 2010-12-29 09:00:03

SCCB 就是I2C

xiao494032092 发表于 2011-8-12 20:32:37

模拟SCCB关键还是要控制好延时,我开始延时不正确,读出来始终都是0xff。而且写数据时返回SDA口始终返回高电平

wolwc3891 发表于 2011-11-8 15:32:23

回复【14楼】wangguanfu
-----------------------------------------------------------------------

你好,我想问一下,能否用51单片机模拟SCCB时序,对OV7670的寄存器进行读写(51单片机的高电平为5V),谢谢!

lgx4915 发表于 2012-6-14 20:51:01

关注。。。。
页: [1]
查看完整版本: OV7670 图像采集初始化 死循环