OpenEdv-开源电子网

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

stm32 ov7670

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-3-17
在线时间
0 小时
发表于 2014-3-17 10:25:07 | 显示全部楼层 |阅读模式

 用了stm32f207做的拍照,但是拍的照片一直是第一帧图片,搞不明白

 if(start_bmp==1)
           {                          
             BMPFileHeader BMPFH;  //BMP文件头
             BMPInfoHeader BMPIH;  //BMP信息头  
             u8 *FileHeaderBuf;   //写入到BMP文件的文件头数组
             u8 *InfoHeaderBuf;   //写入到BMP文件的信息头数组
             UINT ByteCnt;
             if(Bmp_Num == 256) Bmp_Num=0;
               Bmp_Num++;           //照片的名字加1
             f_mount(0, &fs);   
             sprintf(m_FileName, "/IMG%4.4d.BMP", Bmp_Num);  //把BMP格式的名字放在m_FileName数组中          
             f_open(&FileObject, m_FileName, FA_CREATE_ALWAYS | FA_WRITE); //创建一个BMP图片文件
             
             BMPFH.bfType[0] = 'B';   //
             BMPFH.bfType[1] = 'M';   //
             Load32(BMPFH.bfSize, 153654);   //文件结构头+文件信息头+实际图画数据,注意每行对4byte求余=0,否则补齐
             Load32(BMPFH.bfOffBits, 54);   //文件结构头+文件信息头          
             Load32(BMPIH.biSize,40);    //装载BMP信息头大小
             Load32(BMPIH.biWidth,320);    //装载图像宽度
             Load32(BMPIH.biHeight,240);    //装载图像高度
             Load16(BMPIH.biPlanes, 1);
             Load32(BMPIH.biBitCount, 16);
             Load32(BMPIH.biCompression, 0);
             Load32(BMPIH.biSizeImage, 153600);   //装载位图实际大小
             Load32(BMPIH.biXPelsPerMeter, 0);
             Load32(BMPIH.biYPelsPerMeter, 0);
             Load32(BMPIH.biClrUsed, 0);
             Load32(BMPIH.biClrImport, 0);
            
             FileHeaderBuf = (u8 *)&(BMPFH);   //将BMP文件结构头转化为数组存放
             InfoHeaderBuf = (u8 *)(&(BMPIH));  //将BMP文件信息头转换为数组存放
             f_write(&FileObject, FileHeaderBuf, 14, &ByteCnt); //写bmp格式的文件头
             f_write(&FileObject, InfoHeaderBuf, 40, &ByteCnt);         //写bmp格式文件的信息头 
             FIFO_CS_L(); //片选
             FIFO_RRST_L();     //至少需要一个时钟周期的跳变才能复位
             FIFO_RD_L();
             FIFO_RD_H();
             FIFO_RRST_H();           
             FIFO_RD_L();
             FIFO_RD_H();              
             for(i= 0; i<240; i++)
             {
              for(j= 0; j<320; j++)
              {
               FIFO_RD_L();
               color=((GPIOF->IDR)&0xff00);   //PF8-PF15数据
               FIFO_RD_H();
               FIFO_RD_L();
               color|=((GPIOF->IDR)&0xff00)>>8;
               FIFO_RD_H();                  
               color_red = (color & 0xF100)>>11;  //获得红色分量
               color_green = (color & 0x07E0)>>6;  //获得绿色分量 取得的绿色分量为6bit 再左移1bit 取得5bit的绿色分量
               color_blue = (color & 0x01F);   //获得蓝色分量
               color = ((color_red)<<10) + ((color_green)<<5) + color_blue;   //组成RGB565数据
               f_write(&FileObject, (u16 *)&color, 2, &ByteCnt);  //color低位在前,高位在后,该转换方式为默认                 
              }           
             }
              
               f_close(&FileObject);   //关闭文件
               f_mount(0, NULL);  
               start_bmp=0;
           }  /*start_bmp==1*/  
照片换成bmp格式的代码

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-17 20:05:22 | 显示全部楼层
回复【楼主位】zhuiqiu1234567:
---------------------------------
207自带DCIM了,楼主还用IO抓取?
如果是抓取,你抓取完以后,没让FIFO更新么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-3-17
在线时间
0 小时
 楼主| 发表于 2014-3-19 19:00:53 | 显示全部楼层
回复【2楼】正点原子:
因为板子不是我画的,207DCMI的IO口都被用作其他地方了,接摄像头的也是普通的IO口。FIFO更新啊,因为监控是好的,只是按键抓图,总是抓的第一帧图像
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 16:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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