OpenEdv-开源电子网

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

ov7670带fifo 花屏 i2c寄存器读取不正确

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-10-20
在线时间
0 小时
发表于 2013-10-20 00:31:19 | 显示全部楼层 |阅读模式



如图,花屏了,并且读取寄存器id不正确,估计是i2c有问题,但是i2c的程序是借鉴的例程应该没问题啊
附i2c程序:
void startSCCB(void)
{
    SIOD_on; 
    delay(dtime);

    SIOC_on;
    delay(dtime);
 
    SIOD_off;
    delay(dtime);

    SIOC_off;
    delay(dtime);


}
void stopSCCB(void)
{
    SIOD_off;
    delay(dtime);
 
    SIOC_on;
    delay(dtime);
  

    SIOD_on;
    delay(dtime);
   
}
void noAck(void)
{
SIOD_on;
delay(dtime);
SIOC_on;
delay(dtime);
SIOC_off;
delay(dtime);
SIOD_off;
delay(dtime);

}
unsigned char SCCBwriteByte(unsigned char m_data)
{
unsigned char j,tem;

for(j=0;j<8;j++) 
{
if(m_data&0x80)
{
SIOD_on;
}
else
{
SIOD_off;
}
m_data=m_data<<1;
delay(dtime);
SIOC_on;
delay(dtime);
SIOC_off;
delay(dtime);

}
SIOD_on;
delay(dtime);
SIOD_in
delay(dtime);
SIOC_on;
delay(dtime);
if(SIOD_get){tem=0;}  
else {tem=1;} 
SIOC_off;
delay(dtime);
  SIOD_out

return (tem);  
}
unsigned char SCCBreadByte(void)
{
unsigned char read,j;
read=0x00;
SIOD_in
delay(dtime);
for(j=8;j>0;j--)
{     
delay(dtime);
SIOC_on;
delay(dtime);
read=read<<1;
if(SIOD_get) 
{
read=read+1;
}
SIOC_off;
delay(dtime);
}
SIOD_out
return(read);
}
unsigned char wrOV7670Reg(unsigned char regID, unsigned char regDat)
{
startSCCB();
if(SCCBwriteByte(0x42)==0)
{
stopSCCB();
return(0);
}
delay(dtime);
  if(SCCBwriteByte(regID)==0)
{
stopSCCB();
return(0);
}
delay(dtime);
  if(SCCBwriteByte(regDat)==0)
{
stopSCCB();
return(0);
}
  stopSCCB();
  return(1);
}
unsigned char rdOV7670Reg(unsigned char regID, unsigned char *regDat)
{
startSCCB();
if(SCCBwriteByte(0x42)==0)
{
stopSCCB();
return(0);
}
delay(dtime);
  if(SCCBwriteByte(regID)==0)
{
stopSCCB();
return(0);
}
stopSCCB();
delay(dtime);
startSCCB();
if(SCCBwriteByte(0x43)==0)
{
stopSCCB();
return(0);
}
delay(dtime);
  *regDat=SCCBreadByte();
  noAck();
  stopSCCB();
  return(1);
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-10-20 13:16:37 | 显示全部楼层
是不是你线没接好?请参考http://www.openedv.com/posts/list/9359.htm
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-10-20
在线时间
0 小时
 楼主| 发表于 2013-10-20 22:56:15 | 显示全部楼层
刚把线换了一下,能初始化了,读取id是成功的,但是还是花的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-10-21 14:51:49 | 显示全部楼层
楼主参考下我们的例程吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-11
在线时间
0 小时
发表于 2014-3-11 22:04:37 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我的PID和VER读出来都是0x7f,和手册上的不一样,但是工厂编号读出来是对的,分别是0f7f  和0xa2,这是为什么呢,难道是假货?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-11 23:23:37 | 显示全部楼层
回复【5楼】木君之上:
---------------------------------
是自己做的模块,还是买的别人的?
联系下卖家看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 23:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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