搜索
bottom↓
回复: 38

STM32直接驱动OV7670,数据经485发送给上位机显示----YUV输出,上位机上显示三个图像

[复制链接]

出0入0汤圆

发表于 2011-5-10 14:48:14 | 显示全部楼层 |阅读模式
我现在把图像格式为YUV输出,STM32直接驱动OV7670,每次采集完成后数据由串口发给上位机看图软件,为什么 我的上位机图像显示区显示的图像那么小,而且还显示了三个?是我的寄存器配置问题还是我的数据处理有问题?

上位机显示图像如下图所示:

(原文件名:未命名.jpg)


以下为我在中断里接受OV7670数据:
/*图像采集数据定义*/
#define hang_max 240                                //定义图像采集的行数
#define lie_max  240                                //定义图像采集的列数
uint8_t Image[hang_max][lie_max];  //图像数据 分辨率
uint8_t hang_count  = 0;                   //图像行数采集计数
uint8_t finish_flag = 0;                   //图像采集完成标志位
void EXTI9_5_IRQHandler(void)  //VSYNC (场同步) ---  PA6
{
        uint16_t i;
        if((EXTI->PR & 0x00040) != 0)        //检测是否有场中断触发PA6 发生了选择的中断触发,该位被置1
          {                                                                          
                EXTI->PR |= 1<<6;                        //向该位置1,清除中断标志
                for(i = 0;i < 5000;i++);
                hang_count = 0;                            
                EXTI->IMR |= 1<<7;                        //开行中断
          }
        else                                                        //场中断被关闭后,直接进入行中断HREF即PA7的信号输入中断
        {
            if((EXTI->PR & 0x00080) != 0)//检测是否真的有中断触发
                {
                        while(!(GPIOB->IDR & GPIO_Pin_5)); //像素时钟PCLK上升沿读数据有效
                    for(i = 0;i < hang_max;i++)
                        {                                    
                            Image[hang_count] = (GPIOD->IDR&0xff);
                    }
                    hang_count++;
                        if(hang_count > (lie_max-1))//采集完成
                        {                 
                                   EXTI->IMR &= 0<<6;//屏蔽场中断
                                 EXTI->IMR &= 0<<7;//屏蔽行中断
                                    finish_flag = 1;//置数据采集完成标志位   
                         }
                          EXTI->PR |= 1<<7;//清中断标志
            }         
    }
}
以下为我的寄存器配置:
        {0x3a, 0x00},  //行缓冲测试选项         00                                                                          ??
        {0x40, 0xd0},  //普通控制14        d0                                                                                  ??
        {0x12, 0x20},  //通用控制7COM7 20                                                                                  ??
        {0x32, 0x80},  //HREF控制
        {0x17, 0x16},   //HSTART
        {0x18, 0x04},  //HSTOP
        {0x19, 0x02},  //VSTART
        {0x1a, 0x7b},  //VSTOP,0x7a,
        {0x03, 0x06},  //VREF,0x0a,                       
        {0x0c, 0x00},  //COM3       10   //default setting                   //10
        {0x3e, 0x00},  //COM14    00                                                          ??
        {0x70, 0x00},  //SCALING_XSC
        {0x71, 0x01},  //SCALING_YSC
        {0x72, 0x11},  //SCALING_DCWCTR    //default setting
        {0x73, 0x00},  //SCALING_PC     00                                  ??
        {0xa2, 0x02},  //SCALING_PCLK_DELAY  //default setting
        {0x11, 0x82},  //{0x11, 0x81},  //CLKRC,2分频
        {0x7a, 0x20},  //SLOP
        {0x7b, 0x1c},  //GAM1
        {0x7c, 0x28},  //GAM2                                     //20
        {0x7d, 0x3c},  //GAM3
        {0x7e, 0x55},  //GAM4
        {0x7f, 0x68},  //GAM5
        {0x80, 0x76},  //GAM6
        {0x81, 0x80},  //GAM7
        {0x82, 0x88},  //GAM8
        {0x83, 0x8f},  //GAM9
        {0x84, 0x96},  //GAM10
        {0x85, 0xa3},  //GAM11
        {0x86, 0xaf},  //GAM12                                    // 30
        {0x87, 0xc4},  //GAM13
        {0x88, 0xd7},  //GAM14
        {0x89, 0xe8},  //GAM15
    {0x13, 0xe0},  //COM8
        {0x00, 0x0f},  //AGC
        {0x10, 0x00},  //AECH         40                                                                  ??
        {0x0d, 0x00},  //COM4//default setting
        {0x14, 0x38},  //0x38, limit the max gain
        {0xa5, 0x05},  //BD50MAX
        {0xab, 0x07},  //BD60MAX                                  //40
        {0x24, 0x75},   //AEW
        {0x25, 0x63},   //AEB
        {0x26, 0xA5},   //VPT
        {0x9f, 0xff},   //HAECC1  78                                                                 ??
        {0xa0, 0xff},   //HAECC2  68                                                                 ??
        {0xa1, 0x03},   //RSVD,0x0b,
        {0xa6, 0xff},   //HAECC3,df                                                                         ??
        {0xa7, 0xff},   //HAECC4,df                                                                         ??
        {0xa8, 0xff},   //HAECC5 f0                                                                         ??
        {0xa9, 0xff},   //HAECC6  90                             ??
        {0xaa, 0x94},   //HAECC7
        {0x13, 0xe5},   //COM8
        {0x0e, 0x61},   //COM5
        {0x0f, 0x4b},   //COM6
        {0x16, 0x02},    //RSVD
        {0x1e, 0x07},    //MVFP,27                                                                          ??
        {0x21, 0x02},    //ADCCTR1
        {0x22, 0x91},    //ADCCTR2
        {0x23, 0x00},    //ADCCTR2
        {0x29, 0x07},    //RSVD                            //60
        {0x33, 0x0b},    //CHLF        0b                                                                          ??
        {0x35, 0x0b},    //RSVD                                                          
        {0x37, 0x1d},    //ADC
        {0x38, 0x71},    //ACOM
        {0x39, 0x2a},   //OFON
        {0x3c, 0x78},   //COM12       65
        {0x4d, 0x40},   //RSVD
        {0x4e, 0x20},   //RSVD
        {0x69, 0x5d},   //GFIX
        {0x6b, 0x60},   //DBLV,PLL=inX4                          //70
        {0x74, 0x19},   //REG4
        {0x8d, 0x4f},   //RSVD
        {0x8e, 0x00},   //RSVD
        {0x8f, 0x00},   //RSVD
        {0x90, 0x00},   //RSVD
        {0x91, 0x00},   //RSVD
        {0x92, 0x00},   //DW_LNL,0x19,//0x66
        {0x96, 0x00},   //RSVD
        {0x9a, 0x80},   //RSVD
        {0xb0, 0x84},   //RSVD                             //80
        {0xb1, 0x0c},   //ABLC1
        {0xb2, 0x0e},   //RSVD
        {0xb3, 0x82},   //THL_DLT
        {0xb8, 0x0a},   //RSVD                            //84
        {0x43, 0x14},   //AWBC1
        {0x44, 0xf0},   //AWBC2
        {0x45, 0x34},   //AWBC3
        {0x46, 0x58},   //AWBC4
        {0x47, 0x28},   //AWBC5
        {0x48, 0x3a},   //AWBC6
        {0x59, 0x88},   //RSVD
        {0x5a, 0x88},   //RSVD
        {0x5b, 0x44},   //RSVD
        {0x5c, 0x67},   //RSVD
        {0x5d, 0x49},   //RSVD
        {0x5e, 0x0e},   //RSVD
        {0x64, 0x04},   //LCC3
        {0x65, 0x20},   //LCC4
        {0x66, 0x05},   //LCC5
        {0x94, 0x04},   //LCC6
        {0x95, 0x08},   //LCC7           100
        {0x6c, 0x0a},   //AWBCTR3
        {0x6d, 0x55},   //AWBCTR2
        {0x6e, 0x11},   //AWBCTR1
        {0x6f, 0x9f},        //AWBCTR0,0x9e for advance AWB
        {0x6a, 0x40},   //GGAIN
        {0x01, 0x40},   //BLUE
        {0x02, 0x40},   //RED
        {0x13, 0xe7},   //COM8
        {0x15, 0x00},   //COM10
        {0x2d, 0x00},
         /* Color Matrix */
        {0x4f, 0x80},   //MTX1
        {0x50, 0x80},   //MTX2
        {0x51, 0x00},   //MTX3
        {0x52, 0x22},   //MTX4
        {0x53, 0x5e},   //MTX5
        {0x54, 0x80},   //MTX6
    {0x55, 0x00},   //亮度//default setting
    {0x56, 0x52},   //对比度
    {0x58, 0x9e},        //MTXS
        {0x41, 0x08},   //COM16
        {0x3f, 0x05},   //边缘增强调整
        {0x75, 0x05},   //REG75
        {0x76, 0xe1},   //REG76
        {0x4c, 0x0F},   //噪声抑制强度
        {0x77, 0x0a},   //REG77
        {0x3d, 0xc2},        //0xc0,
        {0x4b, 0x09},   //REG4B
        {0xc9, 0x60},   //SATCTR
        {0x41, 0x38},    //COM16
        {0x56, 0x40},    //0x40,  change according to Jim's request       
        {0x34, 0x11},    //ARBLM
        {0x3b, 0x02},    //COM11,00                                             ??
        {0xa4, 0x89},    //0x88,
        {0x96, 0x00},    //RSVD
        {0x97, 0x30},    //RSVD
        {0x98, 0x20},    //RSVD                135
        {0x99, 0x30},    //RSVD
        {0x9a, 0x84},    //RSVD
        {0x9b, 0x29},    //RSVD
        {0x9c, 0x03},    //RSVD
        {0x9d, 0x4c},    //BD50ST
        {0x9e, 0x3f},    //BD60ST
        {0x78, 0x04},         //RSVD
        {0x79, 0x01},    //RSVD
        {0xc8, 0xf0},    //RSVD
        {0x79, 0x0f},    //RSVD
        {0xc8, 0x00},    //RSVD
        {0x79, 0x10},    //RSVD
        {0xc8, 0x7e},    //RSVD
        {0x79, 0x0a},    //RSVD
        {0xc8, 0x80},    //RSVD
        {0x79, 0x0b},    //RSVD
        {0xc8, 0x01},    //RSVD
        {0x79, 0x0c},    //RSVD
        {0xc8, 0x0f},    //RSVD
        {0x79, 0x0d},    //RSVD
        {0xc8, 0x20},    //RSVD
        {0x79, 0x09},    //RSVD
        {0xc8, 0x80},    //RSVD
        {0x79, 0x02},    //RSVD
        {0xc8, 0xc0},    //RSVD
        {0x79, 0x03},    //RSVD
        {0xc8, 0x40},    //RSVD
        {0x79, 0x05},    //RSVD
        {0xc8, 0x30},    //RSVD
        {0x79, 0x26},    //RSVD               
        {0x09, 0x02},    //COM2
        {0x3b, 0x42},    //COM11,x82,//0xc0,//0xc2,        //night mode   167

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-5-11 01:11:14 | 显示全部楼层
我的也是这样。我怀疑是我的上位机有问题。楼主可以发一份你的上位机给我吗,邮箱:chinmel@163.com
我们互相看看。我的上位机发在帖子里啦。

出0入0汤圆

发表于 2011-5-11 01:13:58 | 显示全部楼层
yuv输出的话 一个字节并不是一个像素吧。会不会是上位机对色彩空间转换时出了问题呢。

出0入0汤圆

 楼主| 发表于 2011-5-11 08:30:03 | 显示全部楼层
回复【1楼】chinmel 朱宁
-----------------------------------------------------------------------

恩好的。呵呵我把上位机代码上传到论坛里吧。你可以下载。呵呵你的还没解决掉吗?》

出0入0汤圆

 楼主| 发表于 2011-5-11 08:31:00 | 显示全部楼层
回复【2楼】chinmel 朱宁
-----------------------------------------------------------------------

YUV输出,一个像素点应该是YU或者是YV,即两个字节。上位机是我论坛里下的,我也不清楚是怎么回事。急死人了。

出0入0汤圆

 楼主| 发表于 2011-5-11 08:33:25 | 显示全部楼层
如果有谁有显示彩色RGB图像的上位机软件,希望能上传共享一下。以下是我现在用的显示灰度的上位机看图软件。
点击此处下载 ourdev_638950D7IV9W.zip(文件大小:3.50M) (原文件名:上位机看图软件.zip)

出0入0汤圆

 楼主| 发表于 2011-5-11 08:42:42 | 显示全部楼层
回复【5楼】dongfengge555
-----------------------------------------------------------------------

能否把你的工程上传给我,我们交流下,怎么样?

出0入0汤圆

发表于 2011-5-11 09:17:11 | 显示全部楼层
回复【7楼】dongfengge555  
-----------------------------------------------------------------------
谢谢你的上位机 我的工程文件也在我那份ov7670的帖子里有下载
我的还没调出效果 今天打算增加一片ram缓冲试试

出0入0汤圆

 楼主| 发表于 2011-5-11 09:46:27 | 显示全部楼层
回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------

哦。呵呵你要加FIFO吗?

出0入0汤圆

 楼主| 发表于 2011-5-11 09:56:06 | 显示全部楼层
回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------

你QQ号多少?加下我们讨论。1790485810我的号。

出0入0汤圆

发表于 2011-5-11 22:37:41 | 显示全部楼层
回复【10楼】dongfengge555  
-----------------------------------------------------------------------
是的 加FIFO 今天刚焊接完毕 明天继续实验 我平时不上扣扣 呵呵 就在坛子里说吧

出0入0汤圆

 楼主| 发表于 2011-5-12 08:03:46 | 显示全部楼层
回复【11楼】chinmel 朱宁
-----------------------------------------------------------------------

恩好的。希望你今天实验成功。呵呵等你的好消息

出0入0汤圆

发表于 2011-5-12 08:44:09 | 显示全部楼层
哦啊,我们都在调,呵呵,我读出的不是图像,就一些彩色块,不知道怎么回事,不过摄像头移动到时候会有变化,我是直接用液晶显示 的(STM32 FSMC),好像图片也是分成了三块一样大的区域,上面的两位如果找到原因的话分享一下啊,大家一起学习,嘿嘿~~~~~~~~~~~~

出0入0汤圆

发表于 2011-5-12 11:22:58 | 显示全部楼层
也想玩玩,请问那种小尺寸模组和大个的模块有区别吗?
我的理解有问题吗:模组≈摄像头模块=镜头+传感器+外围电路?
小模组怎么调焦?像手机里的放大缩小一样?
请指教,O(∩_∩)O谢谢

出0入0汤圆

发表于 2011-5-12 11:31:15 | 显示全部楼层
串口传数据速度如何啊

出0入0汤圆

 楼主| 发表于 2011-5-30 11:13:17 | 显示全部楼层
回复【13楼】sfp208
-----------------------------------------------------------------------

恩好的。呵呵大家有问题,一块把问题贴出来吧。

出0入0汤圆

 楼主| 发表于 2011-5-30 11:15:19 | 显示全部楼层
回复【15楼】ggg12345
-----------------------------------------------------------------------

不知道是我用的232转485的原因还是我的485芯片的问题,我的串口波特率调不高。我的上位机软件只有2400 9600 115200 19200这几个波特率可选 ,如果把串口波特率 调为115200或者以上,传输数据就会丢码,而且丢的很多。所以只能用9600来传输了。一帧图像的数据传输给上位机,要1分钟。哎

出0入0汤圆

 楼主| 发表于 2011-5-30 11:23:39 | 显示全部楼层
我最近一直比较忙,没更新最新的调试资料。
下面我把我上位机显示的图片上传,希望大家能多多指点。因为我的图像还存在很严重的问题。

(原文件名:未命名.jpg)

1.图像上面显示的竖线,难道是因为我在采集的时候丢码了吗?
2.我配置OV7670摄像头图片输出大小是320*240,我采集160*160个像素点的数据,送上位机显示。
3.我配置的YUV模式,我在网上看了下,有两种类型,一种是打包格式,另一种是平面格式,我想知道OV7670摄像头的YUV模式是属于哪种模式?

出0入0汤圆

发表于 2011-7-30 22:30:16 | 显示全部楼层
MARK~~~

出0入0汤圆

发表于 2011-8-25 18:33:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-3 00:07:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-7 12:49:41 | 显示全部楼层
mark下,我也在做

出0入0汤圆

发表于 2011-9-7 17:14:40 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-7 18:25:07 | 显示全部楼层
图像好像还有些问题。

出0入0汤圆

发表于 2011-9-9 10:03:14 | 显示全部楼层
估计是芯片模块配置没弄好,读取方式不对或RAM空间不够

出0入0汤圆

发表于 2011-9-18 16:04:38 | 显示全部楼层
回复【楼主位】dongfengge555 冷东风
-----------------------------------------------------------------------

学习……

出0入0汤圆

发表于 2011-10-14 22:49:47 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-29 13:26:21 | 显示全部楼层
dd

出0入0汤圆

发表于 2012-4-10 17:02:25 | 显示全部楼层
楼主弄好了没?等待楼主结贴。。。。我也遇到这个问题了

出0入0汤圆

发表于 2012-4-18 21:01:50 | 显示全部楼层
谁弄好了呀,我的也是出了很多竖线~~

出0入0汤圆

发表于 2012-7-5 18:46:27 | 显示全部楼层
图像被分成三份的问题,我也遇到了,而且刚解决了。
我是OV7670不带FIFO
设置为 RGB565 320 240
用LCD来显示摄像头的图像
出现了三份的等份的样子
是因为我把LCD设置为了水平(240点)扫描
改为垂直扫描(320点)后就好了
不过现在问题也很大,图像受光线特别敏感
根本无法看清图像
谁知道帮帮忙啊
先谢谢各位了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-7-10 10:09:05 | 显示全部楼层
楼上的你这个感觉一个是聚焦的问题 另一个是 数据受干扰 丢数据了。。。。。。。。。。

出0入0汤圆

发表于 2012-8-10 15:52:23 | 显示全部楼层
请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊  是什么格式的

出0入0汤圆

发表于 2012-8-26 23:27:47 | 显示全部楼层
我也记不清楚了。好像要注意下 摄像头是隔行扫描的?配置成raw输出 好像比较简单点。

出0入0汤圆

发表于 2012-10-5 22:13:27 | 显示全部楼层
串口发送数据,需要大量时间,以致于出现分屏现象

出0入0汤圆

发表于 2013-11-4 14:18:08 | 显示全部楼层
一粒尘埃 发表于 2012-8-10 15:52
请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊  是什么格式的  ...

请问你的问题搞清了吗?  我现在也不怎么懂
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 03:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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