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@163.com
我们互相看看。我的上位机发在帖子里啦。 yuv输出的话 一个字节并不是一个像素吧。会不会是上位机对色彩空间转换时出了问题呢。 回复【1楼】chinmel 朱宁
-----------------------------------------------------------------------
恩好的。呵呵我把上位机代码上传到论坛里吧。你可以下载。呵呵你的还没解决掉吗?》 回复【2楼】chinmel 朱宁
-----------------------------------------------------------------------
YUV输出,一个像素点应该是YU或者是YV,即两个字节。上位机是我论坛里下的,我也不清楚是怎么回事。急死人了。 如果有谁有显示彩色RGB图像的上位机软件,希望能上传共享一下。以下是我现在用的显示灰度的上位机看图软件。
点击此处下载 ourdev_638950D7IV9W.zip(文件大小:3.50M) (原文件名:上位机看图软件.zip) 回复【5楼】dongfengge555
-----------------------------------------------------------------------
能否把你的工程上传给我,我们交流下,怎么样? 回复【7楼】dongfengge555
-----------------------------------------------------------------------
谢谢你的上位机 我的工程文件也在我那份ov7670的帖子里有下载
我的还没调出效果 今天打算增加一片ram缓冲试试 回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------
哦。呵呵你要加FIFO吗? 回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------
你QQ号多少?加下我们讨论。1790485810我的号。 回复【10楼】dongfengge555
-----------------------------------------------------------------------
是的 加FIFO 今天刚焊接完毕 明天继续实验 我平时不上扣扣 呵呵 就在坛子里说吧 回复【11楼】chinmel 朱宁
-----------------------------------------------------------------------
恩好的。希望你今天实验成功。呵呵等你的好消息 哦啊,我们都在调,呵呵,我读出的不是图像,就一些彩色块,不知道怎么回事,不过摄像头移动到时候会有变化,我是直接用液晶显示 的(STM32 FSMC),好像图片也是分成了三块一样大的区域,上面的两位如果找到原因的话分享一下啊,大家一起学习,嘿嘿~~~~~~~~~~~~ 也想玩玩,请问那种小尺寸模组和大个的模块有区别吗?
我的理解有问题吗:模组≈摄像头模块=镜头+传感器+外围电路?
小模组怎么调焦?像手机里的放大缩小一样?
请指教,O(∩_∩)O谢谢 串口传数据速度如何啊 回复【13楼】sfp208
-----------------------------------------------------------------------
恩好的。呵呵大家有问题,一块把问题贴出来吧。 回复【15楼】ggg12345
-----------------------------------------------------------------------
不知道是我用的232转485的原因还是我的485芯片的问题,我的串口波特率调不高。我的上位机软件只有2400 9600 115200 19200这几个波特率可选 ,如果把串口波特率 调为115200或者以上,传输数据就会丢码,而且丢的很多。所以只能用9600来传输了。一帧图像的数据传输给上位机,要1分钟。哎 我最近一直比较忙,没更新最新的调试资料。
下面我把我上位机显示的图片上传,希望大家能多多指点。因为我的图像还存在很严重的问题。
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_644178LRGHWY.jpg
(原文件名:未命名.jpg)
1.图像上面显示的竖线,难道是因为我在采集的时候丢码了吗?
2.我配置OV7670摄像头图片输出大小是320*240,我采集160*160个像素点的数据,送上位机显示。
3.我配置的YUV模式,我在网上看了下,有两种类型,一种是打包格式,另一种是平面格式,我想知道OV7670摄像头的YUV模式是属于哪种模式? MARK~~~ mark mark mark下,我也在做 MARK 图像好像还有些问题。 估计是芯片模块配置没弄好,读取方式不对或RAM空间不够 回复【楼主位】dongfengge555 冷东风
-----------------------------------------------------------------------
学习…… MARK dd 楼主弄好了没?等待楼主结贴。。。。我也遇到这个问题了 谁弄好了呀,我的也是出了很多竖线~~ 图像被分成三份的问题,我也遇到了,而且刚解决了。
我是OV7670不带FIFO
设置为 RGB565 320 240
用LCD来显示摄像头的图像
出现了三份的等份的样子
是因为我把LCD设置为了水平(240点)扫描
改为垂直扫描(320点)后就好了
不过现在问题也很大,图像受光线特别敏感
根本无法看清图像
谁知道帮帮忙啊
先谢谢各位了!!!
楼上的你这个感觉一个是聚焦的问题 另一个是 数据受干扰 丢数据了。。。。。。。。。。
请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊是什么格式的 我也记不清楚了。好像要注意下 摄像头是隔行扫描的?配置成raw输出 好像比较简单点。 串口发送数据,需要大量时间,以致于出现分屏现象 一粒尘埃 发表于 2012-8-10 15:52 static/image/common/back.gif
请教下 ov7670 的 YUV422 每个像素点 是几个byte的啊 4个 还是 2个啊是什么格式的...
请问你的问题搞清了吗?我现在也不怎么懂
页:
[1]