OpenEdv-开源电子网

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

STM32F1+OV2640总是丢失数据

[复制链接]

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
发表于 2016-4-10 21:09:33 | 显示全部楼层 |阅读模式
3金钱
最近在用STM32F1采集OV2640的数据,当用JPEG输出的时候,320*280每幅图片只能采集到几百个数据,最多的时候能采集到5k数据。不知道什么原因,望大神们指教。代码如下。
ov2640_speed_ctrl();
       
OV2640_JPEG_Mode();                                                                                                       
OV2640_OutSize_Set(OV2640_JPEG_WIDTH,OV2640_JPEG_HEIGHT);
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XD3,30);
SCCB_WR_Reg(0XFF,0X01);
SCCB_WR_Reg(0X11,0X1);
for(i=0;i<10;i++)                //丢掉前十帧图像
{
        while(OV2640_VSYNC==1);         
        while(OV2640_VSYNC==0);          
}

while(1)
        {

                while(OV2640_VSYNC)
                {

                  while(OV2640_PCLK)
                        {
                                i++;
                                while(OV2640_PCLK);
                        }
                }
                 while(!OV2640_VSYNC)
                {
                        printf("PCLK num %d\r\n",i);
                        i=0;
                        while(!OV2640_VSYNC);
                }
                       
        }







引脚配置如下:
RCC->APB2ENR|=1<<2;               
RCC->APB2ENR|=1<<3;               

GPIOB->CRH&=0XFFFF000F;           
GPIOB->CRH|=0X00008830;         //PB9-RST  PB10-PCLK,PB11-HERF
GPIOB->ODR|=1<<9;
GPIOB->ODR|=1<<10;
GPIOB->ODR|=1<<11;
       
GPIOB->CRL&=0X0FFFFFFF;           
GPIOB->CRH|=0X30000000;         //PB7  PWDN
GPIOB->ODR|=1<<7;
       
GPIOA->CRL=0X88888888;                 //PA0~7 数据端  
GPIOA->ODR|=0x00ff;
       
GPIOB->CRL&=0XFFFFFFF0;
GPIOB->CRL|=0X00000008;                 //PB0  VSYNC
GPIOB->ODR|=1;


//OV2640 引脚
#define OV2640_VSYNC         PBin(0)                     //VSYNC
#define OV2640_PWDN          PBout(7)                     //POWER DOWN
#define OV2640_RST                  PBout(9)                    //复位控制引脚
#define OV2640_HREF          PBin(11)                    //HREF
#define OV2640_PCLK          PBin(10)                            //PCLK
#define OV2640_DATA   GPIOA->IDR&0x00FF           //数据端







请各位大神不吝赐教。

最佳答案

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

问题找到。OV1640寄存器操作不对。 现在找了份输出QCIF的.寄存器配置如下。 const unsigned char OV2640_JPEG_INIT[][2]= { 0xff, 0x00, 0x2c, 0xff, 0x2e, 0xdf, 0xff, 0x01, 0x3c, 0x32, 0x11, 0x30, 0x09, 0x02, 0x04, 0x28, 0x13, 0xe5, 0x14, 0x48, 0x2c, 0x0c, 0x33, 0x78, 0x3a, 0x33, 0x3b, 0xfB, 0x3e, 0x00, 0x43, 0x11, 0x16, 0x10, 0x39, 0x92, 0x35, 0x ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
 楼主| 发表于 2016-4-10 21:09:34 | 显示全部楼层
问题找到。OV1640寄存器操作不对。
现在找了份输出QCIF的.寄存器配置如下。
const unsigned char OV2640_JPEG_INIT[][2]=
{
  0xff, 0x00,
  0x2c, 0xff,
  0x2e, 0xdf,
  0xff, 0x01,
  0x3c, 0x32,
  0x11, 0x30,
  0x09, 0x02,
  0x04, 0x28,
  0x13, 0xe5,
  0x14, 0x48,
  0x2c, 0x0c,
  0x33, 0x78,
  0x3a, 0x33,
  0x3b, 0xfB,
  0x3e, 0x00,
  0x43, 0x11,
  0x16, 0x10,
  0x39, 0x92,
  0x35, 0xda,
  0x22, 0x1a,
  0x37, 0xc3,
  0x23, 0x00,
  0x34, 0xc0,
  0x36, 0x1a,
  0x06, 0x88,
  0x07, 0xc0,
  0x0d, 0x87,
  0x0e, 0x41,
  0x4c, 0x00,
  0x48, 0x00,
  0x5B, 0x00,
  0x42, 0x03,
  0x4a, 0x81,
  0x21, 0x99,
  0x24, 0x40,
  0x25, 0x38,
  0x26, 0x82,
  0x5c, 0x00,
  0x63, 0x00,
  0x61, 0x70,
  0x62, 0x80,
  0x7c, 0x05,
  0x20, 0x80,
  0x28, 0x30,
  0x6c, 0x00,
  0x6d, 0x80,
  0x6e, 0x00,
  0x70, 0x02,
  0x71, 0x94,
  0x73, 0xc1,
  0x12, 0x40,//0x40
  0x17, 0x11,
  0x18, 0x43,
  0x19, 0x00,
  0x1a, 0x4b,
  0x32, 0x09,
  0x37, 0xc0,
  0x4f, 0x60,
  0x50, 0xa8,
  0x6d, 0x00,
  0x3d, 0x38,
  0x46, 0x3f,
  0x4f, 0x60,
  0x0c, 0x3c,
  0xff, 0x00,
  0xe5, 0x7f,
  0xf9, 0xc0,
  0x41, 0x24,
  0xe0, 0x14,
  0x76, 0xff,
  0x33, 0xa0,
  0x42, 0x20,
  0x43, 0x18,
  0x4c, 0x00,
  0x87, 0xd5,
  0x88, 0x3f,
  0xd7, 0x03,
  0xd9, 0x10,
  0xd3, 0x82,
  0xc8, 0x08,
  0xc9, 0x80,
  0x7c, 0x00,
  0x7d, 0x00,
  0x7c, 0x03,
  0x7d, 0x48,
  0x7d, 0x48,
  0x7c, 0x08,
  0x7d, 0x20,
  0x7d, 0x10,
  0x7d, 0x0e,
  0x90, 0x00,
  0x91, 0x0e,
  0x91, 0x1a,
  0x91, 0x31,
  0x91, 0x5a,
  0x91, 0x69,
  0x91, 0x75,
  0x91, 0x7e,
  0x91, 0x88,
  0x91, 0x8f,
  0x91, 0x96,
  0x91, 0xa3,
  0x91, 0xaf,
  0x91, 0xc4,
  0x91, 0xd7,
  0x91, 0xe8,
  0x91, 0x20,
  0x92, 0x00,
  0x93, 0x06,
  0x93, 0xe3,
  0x93, 0x05,
  0x93, 0x05,
  0x93, 0x00,
  0x93, 0x04,
  0x93, 0x00,
  0x93, 0x00,
  0x93, 0x00,
  0x93, 0x00,
  0x93, 0x00,
  0x93, 0x00,
  0x93, 0x00,
  0x96, 0x00,
  0x97, 0x08,
  0x97, 0x19,
  0x97, 0x02,
  0x97, 0x0c,
  0x97, 0x24,
  0x97, 0x30,
  0x97, 0x28,
  0x97, 0x26,
  0x97, 0x02,
  0x97, 0x98,
  0x97, 0x80,
  0x97, 0x00,
  0x97, 0x00,
  0xc3, 0xed,
  0xa4, 0x00,
  0xa8, 0x00,
  0xc5, 0x11,
  0xc6, 0x51,
  0xbf, 0x80,
  0xc7, 0x10,
  0xb6, 0x66,
  0xb8, 0xA5,
  0xb7, 0x64,
  0xb9, 0x7C,
  0xb3, 0xaf,
  0xb4, 0x97,
  0xb5, 0xFF,
  0xb0, 0xC5,
  0xb1, 0x94,
  0xb2, 0x0f,
  0xc4, 0x5c,
  0xc0, 0x64,
  0xc1, 0x4B,
  0x8c, 0x00,
  0x86, 0x3D,
  0x50, 0x00,
  0x51, 0xC8,
  0x52, 0x96,
  0x53, 0x00,
  0x54, 0x00,
  0x55, 0x00,
  0x5a, 0xC8,
  0x5b, 0x96,
  0x5c, 0x00,
  0xd3, 0x7f,
  0xc3, 0xed,
  0x7f, 0x00,
  0xda, 0x00,
  0xe5, 0x1f,
  0xe1, 0x67,
  0xe0, 0x00,
  0xdd, 0x7f,
  0x05, 0x00,

  0x12, 0x40,//0x40
  0xd3, 0x7f,
  0xc0, 0x16,
  0xC1, 0x12,
  0x8c, 0x00,
  0x86, 0x3d,
  0x50, 0x00,
  0x51, 0x2C,
  0x52, 0x24,
  0x53, 0x00,
  0x54, 0x00,
  0x55, 0x00,
  0x5A, 0x2c,
  0x5b, 0x24,
  0x5c, 0x00,
};
回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
 楼主| 发表于 2016-4-11 08:42:43 | 显示全部楼层
自己顶一个
回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
 楼主| 发表于 2016-4-12 20:53:43 | 显示全部楼层
现在有如下的问题,希望吧里的大神帮下忙。
看原子的教程里面写着:传感器窗口设置,图像尺寸设置,图像窗口设置,图像输出大小等。不知道这具体的是什么?
在原子的code里面有函数
OV2640_OutSize_Set(OV2640_JPEG_WIDTH,OV2640_JPEG_HEIGHT);
OV2640_OutSize_Set(lcddev.width,lcddev.height);
是不是这样就能直接改变输出大小了呢?比如说uxga改为cif??
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-4-28
在线时间
26 小时
发表于 2016-4-29 10:52:16 | 显示全部楼层
我的OV2640通过串口输出的十六进制数据流缺失0,请问楼主知不知道是为什么
回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
 楼主| 发表于 2016-4-29 22:25:28 | 显示全部楼层
Sanji_Beckham 发表于 2016-4-29 10:52
我的OV2640通过串口输出的十六进制数据流缺失0,请问楼主知不知道是为什么

那就检查你是不是某个引脚是不是读取数据错误
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2016-4-27
在线时间
104 小时
发表于 2016-8-3 13:11:32 | 显示全部楼层
楼主 你的ov2640成功了吗  能把程序发给我研究一下 627472819@qq.com  感激不尽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 15:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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