打印

STM32F103驱动OV7670问题请教

[复制链接]
3264|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2013-4-27 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SIOC-PA6 SIOD-PA7
XCLK-PA8 VSYNC-PB15
HREF-PC6 PCLK-PC7 reset根据硬件模组使用说明,接了5K左右的电阻到3.3V,PWDN直接接了GND。
参考的别人的程序,初始化几乎没动,但是不能成功,读出7670ID高字节是00。
我使用的晶振是8M,OV7670不带晶振,不带FIFO。XCLK选择的是PLL时钟2分频,36MHZ。在RCC里,PLL时钟是72M。
SCCB总线复位这,根据程序仿真看,应该是复位成功了。SIOC,SIOD电平根据程序有变化。3.27及3.03V。
u8 rdOV7660Reg(u8 regID, u8 *regDat)
{
//通过写操作设置寄存器地址
startSCCB();
if(0==SCCBwriteByte(0x42))
{
stopSCCB();
return(0);
}
DelaySCCB(1000);
          if(0==SCCBwriteByte(regID))
{
stopSCCB();
return(0);
}
stopSCCB();

DelaySCCB(1000);

//设置寄存器地址后,才是读
startSCCB();
if(0==SCCBwriteByte(0x43))
{
stopSCCB();
return(0);
}
DelaySCCB(1000);
          *regDat=SCCBreadByte();
          noAck();
          stopSCCB();
          return(1);
}
读ID这一段,SCCBreadByte()函数里,
SCCB_SID_IN;        /*设置SDA为输入*/
DelaySCCB(1500);
for(j=8;j>0;j--) //循环8次接收数据
{             
DelaySCCB(1500);
SCCB_SIC_H();
DelaySCCB(1500);
read=read<<1;
if(SCCB_SID_STATE)
{
read=read+1;
}
SCCB_SIC_L();
DelaySCCB(1500);
}
/*重新配置输出*/
SCCB_SID_OUT;/*设置SDA为输出*/       
return(read);
头文件里#define SCCB_SID_STATE GPIOA->IDR&0x80,仿真时候看,IDR07也就是PA7(SIOD)端口位输入从来没变过,导致SCCB_SID_STATE始终是0.用PA7控制小灯,没问题。造成问题无法解决的另一原因是我看了很久的SCCB总线时序,也没看明白。有做过的,了解的,指点下。谢谢。
沙发
cjhk| | 2013-4-27 19:34 | 只看该作者
帮你顶一个   这一块了解的不是很多啊   楼主   真心觉得力不从心

使用特权

评论回复
板凳
jiuhui123| | 2014-4-28 18:31 | 只看该作者
楼主解决没有,我想在也在搞ov7670  也是stm32  现在一头雾水 求资料

使用特权

评论回复
地板
mingjie99| | 2015-6-6 11:14 | 只看该作者
也想做STM32 驱动OV7670

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝