OpenEdv-开源电子网

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

0V7725的移植(F4)遇到一些问题,希望大佬解答

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-31
在线时间
7 小时
发表于 2019-8-6 12:13:06 | 显示全部楼层 |阅读模式
1金钱
正在使用F4的最小核心板移植正点原子的OV7725摄像头,相关配置贴出来了,想请大佬帮我看看哪一处出现了错误导致不能正常显示,万分感谢。下面是移植过程中我修改的两个驱动文件

//OV7725.C
u8 OV7725_Init(void)
{

         GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB\
                              |RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOE\
                              |RCC_AHB1Periph_GPIOG, ENABLE);//ê1ÄüGPIOA B C E Gê±Öó

        /*input*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//D0 1 2 3 4 5
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //
        GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ        
        

        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;//D6 7
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//VSYNC ÖD¶Ïêäèë
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
        /*output*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//PCLK
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;         
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
        /*output*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//RRST
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;         
        GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;// WRST  
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_15;//WEN
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//OE
        GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ

                                

         SCCB_Init();                        //3õê¼»ˉSCCB μÄIO¿ú
        u16 reg=0;
        delay_ms(50);
        reg=SCCB_RD_Reg(0X1c);                //¶áè¡3§¼òID ¸ß°Ëλ
        reg<<=8;
        reg|=SCCB_RD_Reg(0X1d);                //&#182;áè&#161;3§&#188;òID μí°&#203;&#206;&#187;
        if(reg!=OV7725_MID)
        {
                printf("MID:%d\r\n",reg);
                return 1;
        }
        reg=SCCB_RD_Reg(0X0a);                //&#182;áè&#161;3§&#188;òID &#184;&#223;°&#203;&#206;&#187;
        reg<<=8;
        reg|=SCCB_RD_Reg(0X0b);                //&#182;áè&#161;3§&#188;òID μí°&#203;&#206;&#187;
        if(reg!=OV7725_PID)
        {
                printf("HID:%d\r\n",reg);
                return 2;
        }            
        for(u16 i=0;i<sizeof(ov7670_init_reg_tbl)/sizeof(ov7670_init_reg_tbl[0]);i++)
        {
                   SCCB_WR_Reg(ov7670_init_reg_tbl[0],ov7670_init_reg_tbl[1]);
          }
           return 0x00;         //ok


//OV7725.H
#ifndef _OV7725_H
#define _OV7725_H
#include "sys.h"
#include "sccb.h"


#define OV7725_MID                                0X7FA2   
#define OV7725_PID                                0X7721

#define OV7725_VSYNC          PBin(8)                        //í&#172;2&#189;D&#197;o&#197;&#188;ì2aIO
#define OV7725_WRST                PBout(0)                //D′&#214;&#184;&#213;&#235;&#184;′&#206;&#187;
#define OV7725_WREN                PBout(14)                //D′è&#235;FIFOê1&#196;ü
#define OV7725_RCK_H        GPIOB->BSRRL=1<<6//éè&#214;&#195;&#182;áêy&#190;Yê±&#214;ó&#184;&#223;μ&#231;&#198;&#189;
#define OV7725_RCK_L        GPIOB->BSRRH=1<<6        //éè&#214;&#195;&#182;áêy&#190;Yê±&#214;óμíμ&#231;&#198;&#189;
#define OV7725_RRST                PEout(7)                  //&#182;á&#214;&#184;&#213;&#235;&#184;′&#206;&#187;
#define OV7725_CS                PEout(9)                  //&#198;&#172;&#209;&#161;D&#197;o&#197;(OE)

                          /*bit 6789->bit 0123*/         /*bit 11->bit 4*/
#define OV7725_DATA   ( ((GPIOB->IDR&0x0040)>>1 | ((GPIOE->IDR&0x0060)<<1))                                        //êy&#190;Yê&#228;è&#235;&#182;&#203;&#191;ú
                        /*bit 6->bit 5*/            /*bit 56->bit 67*/

                                             
u8 OV7725_Init(void);        
void EXTI8_Init(void);

void OV7725_Window_Set(u16 width,u16 height,u8 mode);

#endif


//SCCB.C


void SCCB_Init(void)
{                                
        GPIO_InitTypeDef  GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1&#196;üGPIODê±&#214;ó
        //GPIOB13&#245;ê&#188;&#187;ˉéè&#214;&#195;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PDB1 í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  //PB1 í&#198;íìê&#228;3&#246;
        //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//é&#207;à-
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉ

        GPIO_SetBits(GPIOB,GPIO_Pin_1);
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PE8 í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  //PDE8 í&#198;íìê&#228;3&#246;
        //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//é&#207;à-
        GPIO_Init(GPIOE, &GPIO_InitStructure);//3&#245;ê&#188;&#187;ˉ

        GPIO_SetBits(GPIOE,GPIO_Pin_8);
        
        SCCB_SDA_OUT();           
}               


//SCCB.H

#define SCCB_SDA_IN()  {GPIOB->MODER&=~(3<<(7*2));GPIOD->MODER|=0<<7*2;}        
#define SCCB_SDA_OUT() {GPIOE->MODER&=~(3<<(7*2));GPIOD->MODER|=1<<7*2;}



#define SCCB_SCL                    PBout(1)         
#define SCCB_SDA                    PEout(8)                 

#define SCCB_READ_SDA            PEin(8)                    
                          
#define SCCB_ID                   0X42                  

void SCCB_Init(void);
void SCCB_Start(void);
void SCCB_Stop(void);
void SCCB_No_Ack(void);
u8 SCCB_WR_Byte(u8 dat);
u8 SCCB_RD_Byte(void);
u8 SCCB_WR_Reg(u8 reg,u8 data);
u8 SCCB_RD_Reg(u8 reg);
#endif

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

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10570
金钱
10570
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-8-6 15:34:19 | 显示全部楼层
OV77725带不带FIFO?带的话参考
【正点原子OV7725/7670(都带FIFO)接探索者程序】http://www.openedv.com/forum.php?mod=viewthread&tid=277588
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-7-24
在线时间
8 小时
发表于 2019-8-7 11:06:09 | 显示全部楼层
非常需要,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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