新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2019-7-31
- 在线时间
- 7 小时
|
发表于 2019-8-5 23:16:57
|
显示全部楼层
楼主我想换一块最小系统F407去使用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); //¶áè¡3§¼òID μí°Ëλ
if(reg!=OV7725_MID)
{
printf("MID:%d\r\n",reg);
return 1;
}
reg=SCCB_RD_Reg(0X0a); //¶áè¡3§¼òID ¸ß°Ëλ
reg<<=8;
reg|=SCCB_RD_Reg(0X0b); //¶áè¡3§¼òID μí°Ëλ
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[i][0],ov7670_init_reg_tbl[i][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) //í¬2½DÅożì2aIO
#define OV7725_WRST PBout(0) //D′Ö¸Õë¸′λ
#define OV7725_WREN PBout(14) //D′èëFIFOê1Äü
#define OV7725_RCK_H GPIOB->BSRRL=1<<6//éèÖöáêy¾Yê±Öó¸ßμçƽ
#define OV7725_RCK_L GPIOB->BSRRH=1<<6 //éèÖöáêy¾Yê±Öóμíμçƽ
#define OV7725_RRST PEout(7) //¶áÖ¸Õë¸′λ
#define OV7725_CS PEout(9) //ƬѡDÅoÅ(OE)
/*bit 6789->bit 0123*/ /*bit 11->bit 4*/
#define OV7725_DATA ( ((GPIOB->IDR&0x0040)>>1 | ((GPIOE->IDR&0x0060)<<1)) //êy¾Yêäèë¶Ë¿ú
/*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ÄüGPIODê±Öó
//GPIOB13õê¼»ˉéèÖÃ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PDB1 íÆíìêä3ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //PB1 íÆíìêä3ö
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PE8 íÆíìêä3ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //PDE8 íÆíìêä3ö
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ
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
请大佬批评指正,不胜感激
|
|