OpenEdv-开源电子网

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

STM32摄像头问题,读取第一个字节是对的,可是第二个就不对了,用的是SCCB,相当于IIC

[复制链接]

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
发表于 2013-11-10 19:09:15 | 显示全部楼层 |阅读模式

问题如下:

8 OV7670_read_reg(u8 reg,u8 *data)
{
   SCCB_Start();                                 
   if(1==SCCB_Write_byte(0x42))  {printf("\r\n SCCB_Read error\r\n");SCCB_stop(); return 1;} //成功了啊 ,0x43,读寄存器地址
   __nop();
   __nop();
   __nop();
   SCCB_delay();
   SCCB_delay();
   if(1==SCCB_Write_byte(reg))  {printf("\r\n SCCB_Read(reg) error \r\n");SCCB_stop(); return 1;}
   SCCB_stop();
   __nop();
   __nop();
   __nop();
   SCCB_delay();
   ///////分水岭/////
   SCCB_Start();
   if(1==SCCB_Write_byte(0x43))  {SCCB_stop(); return 1;}
   *data=SCCB_Receive_byte();
   SCCB_NoAck();
   SCCB_stop();
   SCCB_delay();
   return 0;
}

这个读操作函数,在读写第一个字节时是对的,就是读0x42是对的,对后面的reg就不对了,直接错误,《《???》》

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-10 22:38:33 | 显示全部楼层
直接移植我们的代码么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2012-12-4
在线时间
0 小时
发表于 2013-11-11 01:44:35 | 显示全部楼层
参考原子的ov7670 代码直接改, SCCB读写与IIC读写一样。  我的ov7670用的是IIC,测试成功。
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-11-11 16:03:18 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不是,我参考时序写的,可是不知道延时函数要求严格吗?
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-11-11 16:05:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
对了,原子哥,摄像头初始化只与SCCB的2根线有关吧,与FIFI那里没关系吧?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-11 20:07:13 | 显示全部楼层
回复【5楼】1756143812:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-11-11 20:35:54 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------那原子哥认为可能的问题是什么,
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-11-12 04:09:19 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
对了,我用的不是你们的板子,摄像头是你们的,我看了下,没有晶振,不知是已经集成在OV7670里了,还是要外接,应为我用了几个代码都不行,
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-12 11:02:17 | 显示全部楼层
回复【8楼】1756143812:
---------------------------------
那你得先搞清楚你模块的状况啊。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-11-13 12:46:22 | 显示全部楼层
回复【9楼】正点原子:
------------------------原子哥 ,我现在发现摄像头的一个很蛋疼的问题:
u8 OV7670_read_reg(u8 reg,u8 *data)
{
   SCCB_Start();
   printf("\r\n SCCB_start--\r\n");
   if(1==SCCB_Write_byte(0x42))  {printf("\r\n SCCB_Read error\r\n"); SCCB_stop();return 1;} //成功了啊 ,0x43,读寄存器地址
   printf("\r\n SCCB__start_next \r\n");
   //__nop();
   //__nop();
   //__nop();
   //SCCB_delay1(100);
   //SCCB_delay();
   if(1==SCCB_Write_byte(reg))  {printf("\r\n SCCB_Read(reg) error \r\n");SCCB_stop(); return 1;}
    printf("\r\n SCCB__start_next to next \r\n");
   SCCB_stop();
   //__nop();
   //__nop();
   //__nop();
   //SCCB_delay1(100);
   SCCB_delay();
   //SCCB_delay();
   ///////分水岭/////
   SCCB_Start();
   if(1==SCCB_Write_byte(0x43))  {printf("\r\n SCCB_Read(0x43) error \r\n");SCCB_stop(); return 1;}
   printf("\r\n cao \r\n");
   *data=SCCB_Read_byte();
   SCCB_NoAck();
   SCCB_stop();
   //SCCB_delay1(100);
   printf("\r\n end \r\n");
   return 0;,
}

在这个程序中,我发现写寄存器是可以的,就是0x42和reg是可以的,到了下面的Read_BYTE(0x43)就错了,这个是 什么问题
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-13 21:02:09 | 显示全部楼层
回复【10楼】1756143812:
---------------------------------
你先读0X43,在读0X42试试,看看还是0X43错误么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 08:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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