OpenEdv-开源电子网

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

STM32F103RCT6控制OV2640摄像头输出的JPEG数据无法看图片

[复制链接]

9

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-4-7
在线时间
87 小时
发表于 2016-12-3 15:36:50 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 zway 于 2016-12-3 15:54 编辑

STM32F103RCT6控制OV2640摄像头,通过串口输出JPEG数据到电脑,由串口助手查看数据确实是一幅由FF D8~FF D9的JPEG数据,但是在电脑上无法看图片,如下图,有人知道这是什么原因吗
程序是这样的:
void ov2640_jpg_photo()
{
        u8 res=0;
        u32 i=0;
        u32 jpeglen=0;
        u8* pbuf;
        
        OV2640_JPEG_Mode();                                                        //切换为JPEG模式
        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++)                //丢弃10帧,等待OV2640自动调节好(曝光白平衡之类的)
        {
                while(OV2640_VSYNC==1);         
                while(OV2640_VSYNC==0);         
        }  
        while(OV2640_VSYNC==1)        //开始采集jpeg数据
        {
                while(OV2640_HREF)
                {  
                        while(OV2640_PCLK==0);
                        ov2640_framebuf[jpeglen]=OV2640_DATA;
                        while(OV2640_PCLK==1);  
                        jpeglen++;
                }
        }                  

        pbuf=(u8*)ov2640_framebuf;
        for(i=0;i<jpeglen;i++)//查找0XFF,0XD8
        {
                if((pbuf==0XFF)&&(pbuf[i+1]==0XD8))break;
        }
        if(i==jpeglen)res=0XFD;//没找到0XFF,0XD8
        else                //找到了
        {
                pbuf+=i;//偏移到0XFF,0XD8处
                usart_send(pbuf, jpeglen);  //串口输出
        }  
}

int main(void)
{
        delay_init();                     //延时函数初始化        
        LED_Init();
        SPI1_Init();
        uart_init(115200);                                                                                             
        while(OV2640_Init());                        //初始化OV2640                                                                           
        delay_ms(1500);                                                                                            
        ov2640_speed_ctrl();                  
        while(1)
        {
                while(OV2640_VSYNC)                        //等待帧信号
                {
                                ov2640_jpg_photo();
                                ov2640_speed_ctrl();                        
//                                delay_ms(1000);                              
                }                 
        }        

}

RTX截图未命名.png

最佳答案

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

确实是数据有丢失,把OV2640的寄存器 (0XD3 和 0X11 )两个时钟分频设置高一点就看到图像了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-4-7
在线时间
87 小时
 楼主| 发表于 2016-12-3 15:36:51 | 显示全部楼层
确实是数据有丢失,把OV2640的寄存器 (0XD3 和 0X11 )两个时钟分频设置高一点就看到图像了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-4 21:55:30 | 显示全部楼层
估计是数据有丢失、
回复

使用道具 举报

9

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-4-7
在线时间
87 小时
 楼主| 发表于 2016-12-5 09:04:37 | 显示全部楼层
正点原子 发表于 2016-12-4 21:55
估计是数据有丢失、

图片数据有20K字节多
回复

使用道具 举报

9

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-4-7
在线时间
87 小时
 楼主| 发表于 2016-12-5 10:41:34 | 显示全部楼层
接下来就是帧率的问题了
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-3-24
在线时间
10 小时
发表于 2017-3-27 15:30:38 | 显示全部楼层
大哥,我也是同样的问题,接受到的16进制信息,利用C2B可以改成JPG的图片在电脑显示,但是串口还是没有图片输出,是帧率还是啥问题吗?
回复

使用道具 举报

17

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2017-2-1
在线时间
74 小时
发表于 2017-5-2 21:54:35 | 显示全部楼层
RCT6驱动2640的例程哪里有?
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-7-19
在线时间
6 小时
发表于 2017-8-4 10:33:52 | 显示全部楼层
你这代码有问题吧 ,并没有把图片数据放到串口,只是把jpeglen放到了串口而已
回复

使用道具 举报

11

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2018-7-11
在线时间
42 小时
发表于 2018-7-12 00:40:54 | 显示全部楼层
楼主你寄存器是怎么配置的啊,可以给我看看你的程序么,我的可以读出id,但是时钟信号端pclk时钟无信号,这是咋回事儿啊
回复

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2018-5-22
在线时间
23 小时
发表于 2018-8-4 14:39:48 | 显示全部楼层
有代码吗
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-8-5
在线时间
5 小时
发表于 2018-8-5 17:45:52 | 显示全部楼层
我说,我新买的板子 战舰v3,跟着视频做综合测试时候,摄像头插上之后一直检测不到怎么回事?有没有遇到相同问题的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 09:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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