OpenEdv-开源电子网

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

关于ov2640能读出厂家id,但VSYNC,HREF,PCLX,均没有号信输出,是怎么回事啊?

[复制链接]

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-28
在线时间
0 小时
发表于 2015-7-1 21:48:03 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]#include "stm32f4xx.h" #include "usart.h" #include "sys.h" #include "delay.h" #include "led.h" #include "usmart.h" #include "sccb.h" #include "ov2640.h" #include "exti.h" u32 JPEG_Cnt = 0; extern u32 JpegDataCnt; extern u8 JpegBuffer[10240]; extern u8 VsyncActive; const u16 jpeg_img_size_tbl[][2]= { 176,144, //QCIF 160,120, //QQVGA 352,288, //CIF 320,240, //QVGA 640,480, //VGA 800,600, //SVGA 1024,768, //XGA 1280,1024, //SXGA 1600,1200, //UXGA }; const u8*EFFECTS_TBL[7]={"Normal","Negative","B&W","Redish","Greenish","Bluish","Antique"}; //7?????§ const u8*JPEG_SIZE_TBL[9]={"QCIF","QQVGA","CIF","QVGA","VGA","SVGA","XGA","SXGA","UXGA"}; //JPEG???? 9?????? int main(void) { u32 i; u8 size=3; //??????QVGA 320*240???? u32 jpeglen=0; u8 no=0; uart_init(115200); //???????®???¨??????115200 delay_init(168); //?????????±???? NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//?è????????????????·?×é2 LED_Init(); OV2640_Init(); OV2640_JPEG_Mode(); //JPEG???? OV2640_OutSize_Set(jpeg_img_size_tbl[size][0],jpeg_img_size_tbl[size][1]);//?è?????????? SCCB_WR_Reg(0XFF,0X00); SCCB_WR_Reg(0XD3,30); SCCB_WR_Reg(0XFF,0X01); SCCB_WR_Reg(0X11,0X1); while(1) { for(i=0;i<10;i++) //???ú10????????OV2640×????÷?????¨????°×?????®?à???© { while(OV2640_VSYNC==1); while(OV2640_VSYNC==0); } while(OV2640_VSYNC==1) //????????jpeg???? { LED1=0; while(OV2640_HREF) { LED2=0; while(OV2640_PCLK==0); JpegBuffer[jpeglen]=OV2640_DATA; while(OV2640_PCLK==1); LED2=1; jpeglen++; } LED2=1; no=1; } while(no) { for(i = 0; i < jpeglen; i ++) { USART_SendData(USART1,JpegBuffer); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); } jpeglen=0; no=0; } } } [/mw_shl_code]
[mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true]u8 OV2640_Init(void) { u16 i=0; u16 reg; GPIO_InitTypeDef GPIO_InitStructure; //?è??IO //RCC_AHB1PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO, ENABLE); //?????à???????±?? //RCC_AHB1Periph_GPIOD RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOG, ENABLE); //?????à???????±?? //VSYNC???????? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//PD6???? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//???¨???????? GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_0); //HREF???? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PG14???? //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//???¨???????? GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_1); //PCLK???? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PB4 ???? ???? //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//???¨???????? GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_SetBits(GPIOD,GPIO_Pin_2); //POWER ???????? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //PB3 ???? //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //???? GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì???? GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_3); //???????????? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; //PG15???? //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //???? GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì???? GPIO_Init(GPIOG, &GPIO_InitStructure); GPIO_SetBits(GPIOG,GPIO_Pin_15); GPIO_InitStructure.GPIO_Pin = 0xff; //PC0~7 ???? ???? //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//???¨???????? GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_Init(GPIOE, &GPIO_InitStructure); OV2640_PWDN=0; //POWER ON delay_ms(10); OV2640_RST=0; //????OV2640 delay_ms(10); OV2640_RST=1; //?á?????? SCCB_Init(); //??????SCCB ??IO?? SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01); //??×÷sensor?????÷ SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80); //?í????OV2640 delay_ms(50); reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH); //?????§??ID ??°??? reg<<=8; reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL); //?????§??ID ??°??? if(reg!=OV2640_MID) { printf("MID:%d\r\n",reg); return 1; } reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH); //?????§??ID ??°??? reg<<=8; reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL); //?????§??ID ??°??? if(reg!=OV2640_PID) { printf("HID:%d\r\n",reg); //return 2; } //?????? OV2640,????SXGA·?±???(1600*1200) for(i=0;i<sizeof(ov2640_uxga_init_reg_tbl)/2;i++) { SCCB_WR_Reg(ov2640_uxga_init_reg_tbl[0],ov2640_uxga_init_reg_tbl[1]); } return 0x00; //ok } [/mw_shl_code]


[/mw_shl_code] [mw_shl_code=c,true]void OV2640_JPEG_Mode(void) { u16 i=0; //?è??:YUV422???? for(i=0;i<(sizeof(ov2640_yuv422_reg_tbl)/2);i++) { SCCB_WR_Reg(ov2640_yuv422_reg_tbl[0],ov2640_yuv422_reg_tbl[1]); } //?è??:????JPEG???? for(i=0;i<(sizeof(ov2640_jpeg_reg_tbl)/2);i++) { SCCB_WR_Reg(ov2640_jpeg_reg_tbl[0],ov2640_jpeg_reg_tbl[1]); } }[/mw_shl_code]

[mw_shl_code=c,true]u8 OV2640_ImageWin_Set(u16 offx,u16 offy,u16 width,u16 height) { u16 hsize; u16 vsize; u8 temp; if(width%4)return 1; if(height%4)return 2; hsize=width/4; vsize=height/4; SCCB_WR_Reg(0XFF,0X00); SCCB_WR_Reg(0XE0,0X04); SCCB_WR_Reg(0X51,hsize&0XFF); //?è??H_SIZE????°??? SCCB_WR_Reg(0X52,vsize&0XFF); //?è??V_SIZE????°??? SCCB_WR_Reg(0X53,offx&0XFF); //?è??offx????°??? SCCB_WR_Reg(0X54,offy&0XFF); //?è??offy????°??? temp=(vsize>>1)&0X80; temp|=(offy>>4)&0X70; temp|=(hsize>>5)&0X08; temp|=(offx>>8)&0X07; SCCB_WR_Reg(0X55,temp); //?è??H_SIZE/V_SIZE/OFFX,OFFY?????? SCCB_WR_Reg(0X57,(hsize>>2)&0X80); //?è??H_SIZE/V_SIZE/OFFX,OFFY?????? SCCB_WR_Reg(0XE0,0X00); return 0; } [/mw_shl_code]



最佳答案

查看完整内容[请看2#楼]

回复【3楼】zhuacai: --------------------------------- 慢慢调,呵呵。 读ID是SCCB就是IIC,和dcmi无关,你ID都读不出来,说明SCCB就有问题,参考我们f4的代码,完全是可以的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-7-1 21:48:04 | 显示全部楼层
回复【3楼】zhuacai:
---------------------------------
慢慢调,呵呵。
读ID是SCCB就是IIC,和dcmi无关,你ID都读不出来,说明SCCB就有问题,参考我们f4的代码,完全是可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-7-1 22:57:23 | 显示全部楼层
你这个id就是错误的吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-28
在线时间
0 小时
 楼主| 发表于 2015-7-1 23:27:16 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,不知道id对不对呢,上面前是用你的f103代码的移植到f407(我不想用dcmi接囗)上的呢,不管怎么调VSYNC,HREF,PCLX,均没有号信输出,原子哥帮我看看吧,都调了差不多一个星期了!
回复

使用道具 举报

29

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
952
金钱
952
注册时间
2014-10-9
在线时间
94 小时
发表于 2015-7-2 09:14:30 | 显示全部楼层
SCCB_Init();  这个函数发出来,看看是不是错在里面,我stm32f407,也移植成功的,只是出图不是很完美
淘宝小店,没事可以点一下增加点流量http://shop69767205.taobao.com/
回复

使用道具 举报

29

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
952
金钱
952
注册时间
2014-10-9
在线时间
94 小时
发表于 2015-7-2 09:17:04 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子大哥,你解答问题,一点多还没睡啊
淘宝小店,没事可以点一下增加点流量http://shop69767205.taobao.com/
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-28
在线时间
0 小时
 楼主| 发表于 2015-7-2 23:17:55 | 显示全部楼层
[mw_shl_code=c,true]//??????SCCB???? //CHECK OK void SCCB_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//????GPIOD?±?? //GPIOF9,F10???????è?? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;//PD6,7 ???ì???? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //PD6,7 ???ì???? GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì???? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//???? GPIO_Init(GPIOD, &GPIO_InitStructure);//?????? GPIO_SetBits(GPIOD,GPIO_Pin_6|GPIO_Pin_7); SCCB_SDA_OUT(); } [/mw_shl_code]
[mw_shl_code=c,true]//IO??×÷???? #define SCCB_SCL PDout(6) //SCL #define SCCB_SDA PDout(7) //SDA #define SCCB_READ_SDA PDin(7) //????SDA #define SCCB_ID 0X60 //OV2640??ID [/mw_shl_code]

大哥能发你的代码看看吗?我的邮箱是416954665@qq.com
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-28
在线时间
0 小时
 楼主| 发表于 2015-7-2 23:18:52 | 显示全部楼层
回复【5楼】yuanxinfei:
---------------------------------
01
//??????SCCB????
02
//CHECK OK
03
void SCCB_Init(void)
04
{                      
05
  
06
     
07
  GPIO_InitTypeDef  GPIO_InitStructure;
08
 
09
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//????GPIOD?±??
10
  //GPIOF9,F10???????è??
11
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;//PD6,7 ???ì????
12
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  //PD6,7 ???ì????
13
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
14
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
15
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
16
  GPIO_Init(GPIOD, &GPIO_InitStructure);//??????
17
  
18
    GPIO_SetBits(GPIOD,GPIO_Pin_6|GPIO_Pin_7);
19
    SCCB_SDA_OUT();
20
     
21
        
22
}  
view sourceprint?
1
//IO??×÷????    
2
#define SCCB_SCL            Dout(6)        //SCL
3
#define SCCB_SDA            Dout(7)        //SDA   
4
 
5
#define SCCB_READ_SDA       Din(7)         //????SDA   
6
#define SCCB_ID             0X60            //OV2640??ID

大哥能发你的代码看看吗?我的邮箱是416954665@qq.com
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-28
在线时间
0 小时
 楼主| 发表于 2015-7-2 23:20:33 | 显示全部楼层
回复【5楼】yuanxinfei:
---------------------------------
void SCCB_Init(void)
{
 

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//????GPIOD?±??
  //GPIOF9,F10???????è??
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;//PD6,7 ???ì????
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  //PD6,7 ???ì????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
  GPIO_Init(GPIOD, &GPIO_InitStructure);//??????
 
GPIO_SetBits(GPIOD,GPIO_Pin_6|GPIO_Pin_7);
SCCB_SDA_OUT();

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


//IO??×÷????  
#define SCCB_SCL     PDout(6)   //SCL
#define SCCB_SDA     PDout(7)  //SDA  

#define SCCB_READ_SDA     PDin(7)   //????SDA    
#define SCCB_ID    0X60   //OV2640??ID
回复

使用道具 举报

29

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
952
金钱
952
注册时间
2014-10-9
在线时间
94 小时
发表于 2015-7-3 11:27:14 | 显示全部楼层
定义上面和我的差不多呀
淘宝小店,没事可以点一下增加点流量http://shop69767205.taobao.com/
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-8-27
在线时间
22 小时
发表于 2015-9-25 15:48:30 | 显示全部楼层
回复【2楼】正点原子:
--------------------------------
请问原子:我的程序是想采集图片让LCD显示,现在LCD初始化正常,ov2640初始化无法读到ID号,读的都是0x0000,并且当程序进行到
while(ov2640_Init())的时候,LCD就不正常了。我的这些初始化函数都是按照战舰的开发板写的,GPIO接口也都没有问题,请问你有过类似的问题或者调试经验吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-9-25 22:17:31 | 显示全部楼层
回复【11楼】wangyueming:
---------------------------------
我们有提供战舰板的OV2640例程,你可以参考下.
论坛搜索:ATK-OV2640,下载资料,里面就有.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-3-27
在线时间
13 小时
发表于 2016-3-27 15:26:21 | 显示全部楼层
版主,我也遇到跟你一样的问题,你有解决这个问题吗?
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-26
在线时间
10 小时
发表于 2019-6-10 11:47:29 | 显示全部楼层
我也遇到过这个问题,但是最后发现是移植程序的时候,IO口的定义问题,不能用51方式定义
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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