dongfengge555 发表于 2011-5-10 14:48:14

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

我现在把图像格式为YUV输出,STM32直接驱动OV7670,每次采集完成后数据由串口发给上位机看图软件,为什么 我的上位机图像显示区显示的图像那么小,而且还显示了三个?是我的寄存器配置问题还是我的数据处理有问题?

上位机显示图像如下图所示:
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_638789J07799.jpg
(原文件名:未命名.jpg)


以下为我在中断里接受OV7670数据:
/*图像采集数据定义*/
#define hang_max 240                                //定义图像采集的行数
#define lie_max240                                //定义图像采集的列数
uint8_t Image;//图像数据 分辨率
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 = (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},   //HAECC178                                                               ??
        {0xa0, 0xff},   //HAECC268                                                               ??
        {0xa1, 0x03},   //RSVD,0x0b,
        {0xa6, 0xff},   //HAECC3,df                                                                       ??
        {0xa7, 0xff},   //HAECC4,df                                                                       ??
        {0xa8, 0xff},   //HAECC5 f0                                                                       ??
        {0xa9, 0xff},   //HAECC690                           ??
        {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

chinmel 发表于 2011-5-11 01:11:14

我的也是这样。我怀疑是我的上位机有问题。楼主可以发一份你的上位机给我吗,邮箱:chinmel@163.com
我们互相看看。我的上位机发在帖子里啦。

chinmel 发表于 2011-5-11 01:13:58

yuv输出的话 一个字节并不是一个像素吧。会不会是上位机对色彩空间转换时出了问题呢。

dongfengge555 发表于 2011-5-11 08:30:03

回复【1楼】chinmel 朱宁
-----------------------------------------------------------------------

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

dongfengge555 发表于 2011-5-11 08:31:00

回复【2楼】chinmel 朱宁
-----------------------------------------------------------------------

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

dongfengge555 发表于 2011-5-11 08:33:25

如果有谁有显示彩色RGB图像的上位机软件,希望能上传共享一下。以下是我现在用的显示灰度的上位机看图软件。
点击此处下载 ourdev_638950D7IV9W.zip(文件大小:3.50M) (原文件名:上位机看图软件.zip)

dongfengge555 发表于 2011-5-11 08:42:42

回复【5楼】dongfengge555
-----------------------------------------------------------------------

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

chinmel 发表于 2011-5-11 09:17:11

回复【7楼】dongfengge555
-----------------------------------------------------------------------
谢谢你的上位机 我的工程文件也在我那份ov7670的帖子里有下载
我的还没调出效果 今天打算增加一片ram缓冲试试

dongfengge555 发表于 2011-5-11 09:46:27

回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------

哦。呵呵你要加FIFO吗?

dongfengge555 发表于 2011-5-11 09:56:06

回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------

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

chinmel 发表于 2011-5-11 22:37:41

回复【10楼】dongfengge555
-----------------------------------------------------------------------
是的 加FIFO 今天刚焊接完毕 明天继续实验 我平时不上扣扣 呵呵 就在坛子里说吧

dongfengge555 发表于 2011-5-12 08:03:46

回复【11楼】chinmel 朱宁
-----------------------------------------------------------------------

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

sfp208 发表于 2011-5-12 08:44:09

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

huzcmail 发表于 2011-5-12 11:22:58

也想玩玩,请问那种小尺寸模组和大个的模块有区别吗?
我的理解有问题吗:模组≈摄像头模块=镜头+传感器+外围电路?
小模组怎么调焦?像手机里的放大缩小一样?
请指教,O(∩_∩)O谢谢

ggg12345 发表于 2011-5-12 11:31:15

串口传数据速度如何啊

dongfengge555 发表于 2011-5-30 11:13:17

回复【13楼】sfp208
-----------------------------------------------------------------------

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

dongfengge555 发表于 2011-5-30 11:15:19

回复【15楼】ggg12345
-----------------------------------------------------------------------

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

dongfengge555 发表于 2011-5-30 11:23:39

我最近一直比较忙,没更新最新的调试资料。
下面我把我上位机显示的图片上传,希望大家能多多指点。因为我的图像还存在很严重的问题。
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_644178LRGHWY.jpg
(原文件名:未命名.jpg)

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

dingxiao 发表于 2011-7-30 22:30:16

MARK~~~

mamin506 发表于 2011-8-25 18:33:40

mark

zx2592 发表于 2011-9-3 00:07:28

mark

uestc 发表于 2011-9-7 12:49:41

mark下,我也在做

BBQ1215 发表于 2011-9-7 17:14:40

MARK

ksws0482846 发表于 2011-9-7 18:25:07

图像好像还有些问题。

1289786168 发表于 2011-9-9 10:03:14

估计是芯片模块配置没弄好,读取方式不对或RAM空间不够

zw2899 发表于 2011-9-18 16:04:38

回复【楼主位】dongfengge555 冷东风
-----------------------------------------------------------------------

学习……

zhoujiaxg 发表于 2011-10-14 22:49:47

MARK

hebo230 发表于 2012-2-29 13:26:21

dd

baifang20 发表于 2012-4-10 17:02:25

楼主弄好了没?等待楼主结贴。。。。我也遇到这个问题了

xuefeiying1 发表于 2012-4-18 21:01:50

谁弄好了呀,我的也是出了很多竖线~~

tusson 发表于 2012-7-5 18:46:27

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

magicer2010 发表于 2012-7-10 10:09:05

楼上的你这个感觉一个是聚焦的问题 另一个是 数据受干扰 丢数据了。。。。。。。。。。

一粒尘埃 发表于 2012-8-10 15:52:23

请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊是什么格式的

kuangkondy 发表于 2012-8-26 23:27:47

我也记不清楚了。好像要注意下 摄像头是隔行扫描的?配置成raw输出 好像比较简单点。

happytiger 发表于 2012-10-5 22:13:27

串口发送数据,需要大量时间,以致于出现分屏现象

share7we 发表于 2013-11-4 14:18:08

一粒尘埃 发表于 2012-8-10 15:52 static/image/common/back.gif
请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊是什么格式的...

请问你的问题搞清了吗?我现在也不怎么懂
页: [1]
查看完整版本: STM32直接驱动OV7670,数据经485发送给上位机显示----YUV输出,上位机上显示三个图像