图像采集系统设计Word下载.docx
《图像采集系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《图像采集系统设计Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
![图像采集系统设计Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/31/3cb94e67-fc23-4ca7-a61d-3410c3f0c0be/3cb94e67-fc23-4ca7-a61d-3410c3f0c0be1.gif)
128MByte的DDR2SDRAM存储器,256MBit的NorFlash存储器;
用户可选的NANDFlash接口;
可选的256K字节的I²
CE²
PROM;
1个10M/100Mbps自适应以太网接口;
1路立体声音频输入、1路麦克风输入,1路立体声音频输出;
USB2.0高速接口,方便与PC连接;
1个CAN总线、1个UART接口、实时时钟(带256Byte的电池保持RAM);
4个DIP开关,4个状态指示LED;
可配置的BOOT模式;
10层板制作工艺,稳定可靠;
标准外部信号扩展接口;
JTAG仿真器接口;
单电源+5V供电;
板卡软件资源:
完整的DSP示例程序及实验指导书;
USB演示软件,及读写示例C++程序;
功能概述:
EL-DM6437EVM达芬奇视频开发板通过专用的DDR2存储控制器接口扩展了64MBytes的DDR2SDRAM,为视频应用带来了高吞吐、高容量存储带宽,并可以扩展到最大256MByte;
256MBit的NorFlash为视频应用程序脱机运行提供了有力的容量保证;
板卡通过一个视频解码芯片和CPU连接,使得CPU可以接受外部的复合视频信号输入和S信号输入,信号都是自动检测,大大提高了视频处理的灵活性;
CPU还提供视频DAC,通过几个运算放大器即可把DDR2存储器内的数据输出为用户可观察到的信号,非常方便;
除此之外,板卡还包括很多资源,包括音频输入输出、10M/100M的自适应以太网接口、USB2.0接口、实时时钟、4位LED指示和4位DIP开关量输入、CAN总线及UART接口等等一系列功能;
最重要的是所有外部存储器接口信号都连接到扩展接口上,用户可以通过设计外部子板扩展自己的功能。
板上还包括灵活的端口复用切换,使得用户可以根据不同场合使用不同的端口配置,最大的利用CPU各种功能。
板卡通过标准接口提供电源输入,采用单5v的供电方式,注意供电电流需要大于1安培,电源调节模块为微处理器及其他外设提供3.3V和1.04/1.2V(对应不同频率CPU)电压。
在使用该系列板卡开发过程中可以通过J1接口连接仿真器。
四、实习内容:
1.连接好电脑和仿真器,EL_DM6437和仿真器;
2.用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并调制AV模式;
注:
如果带转接头的话,AV输入应该是黄色端子。
3.用视频线连接摄像头输出和板卡的F9插座,注意摄像头输出制式为PAL;
4.给EL_DM6437和摄像头上电,打开CCS并连接;
5.打开ColorSharpen文件夹的工程ColorSharpen.pjt,
此工程功能为:
把摄像头捕捉到的一副图像进行锐化处理,并将之输出到显示器;
6.编译源程序
7.下载程序out文件,如果没有就先编译一下Project—》Build;
8.把摄像头对准需要捕捉的图像场地;
9.设置第一个断点,在video_test.c的422行处;
10.点击运行,稍等片刻后程序停止在断点,此时可以从显示器看到图像;
11.继续点击运行,如果成功,显示出锐化图像;
并显示
这时可以发现显示屏显示出摄像头所指影像已被锐化。
11.结束
1)锐化算法最简单思想是前一个象素取后一象素与本身的差值;
五.实习程序与结构说明
/*
*Copyright2007byTechshineIncorporated.
*Allrightsreserved.
*Author:
lyj
*/
*VideoTest
*
#include"
tvp5146.h"
#defineCOLORBARS1
#defineLOOPBACK0
#defineSVIDEO_OUT1
#defineCOMPONENT_OUT0
typedefstruct__RGBC
{
Uint8Red;
Uint8Green;
Uint8Blue;
}RGBCOLOR;
voidPictureSharpen(Uint32memaddr);
/*------------------------------------------------------------------------*
**
*vpfe_init()*
*NTSC:
*Width:
720*
*Height:
480*
*------------------------------------------------------------------------*/
voidvpfe_init(Uint32buffer,Uint32width,Uint32height)
{//同步、模式设置
VPFE_CCDC_SYN_MODE=0//0x00032F84;
//interlaced,withVDporityasnegative
|(0<
<
19)//使能SDRAM端口输出到resizer的输入,0=disable
18)//使能视频口videoport,输出到SDRAM,0=disable
|(1<
17)//数据写使能,控制CCD列数据是否写入DDR,0=disable
16)//vd/hd使能,如果hd、vd定义为输出,那么内部产生时序,否则外部产生
15)//Field状态,表明当前的field状态,0=奇场,1=偶场
14)//3tap低通滤波器,0=off
|(2<
12)//INPMOD数据输入模式,0=CCDRaw,1=YCbCr16bit,2=YCbCr8bit,3保留
11)//每个象素的包大小,0=16bit/pixel,1=8bit/pixel
|(7<
8)//ccd数据宽度,只有INPMOD=0(12bit-13bit)时有效
//0=16bit,1=15bit,2=14bit,3=13bit,4=12bit
//5=11bit,6=10bit,7=8bit
7)//传感器场模式,0=逐行扫描,1=隔行
6)//CCD数据极性
5)//外部WEN信号选择,如果VDHDEN=1(16bit),设置此位将使CCD数据加载到DDR
//0=不使用
4)//场指示器极性,0=正极,1=负极
3)//HD同步极性,0=正极,1=负极
2)//VD同步极性,0=正极,1=负极
1)//场ID方向,0=输入,1=输出
|(0);
//VD、HD同步方向,0=输入,1=输出
VPFE_CCDC_HD_VD_WID=0;
//HD,VD信号脉冲宽度寄存器
VPFE_CCDC_PIX_LINES=0x02CF020D;
//每行的水平象素,及一帧的行数
//0|(0x2cf<
16)//每行的水平象素719+1=720
//|(0x20d)//每帧或每场的半行数525+1=526
/*
*sph=1,nph=1440,accordingtopage32-33oftheCCDCspec
*forBT.656mode,thissettingcapturesonlythe720x480ofthe
*activeNTSVvideowindow
VPFE_CCDC_HORZ_INFO=width<
1;
//Horizontallines
//水平象素信息,(31-16)=开始象素,(14-0)=输入到DDR的每行象素个数
VPFE_CCDC_HSIZE_OFF=width<
//Horizontallineoffset
//水平大小,(15-0)=每行的地址偏移,即跳行到DDR2读取数据?
//5lsb忽略,最好是256字节的倍数
VPFE_CCDC_VERT_START=0;
//Verticalstartline
//垂直线开始象素(16-31)=SLV0(Field0),(0-14)=SLV1(Field0)
//设定数据输入到DDR的开始行
VPFE_CCDC_VERT_LINES=height>
>
//Verticallines(14bit-0)
//垂直线的线数
VPFE_CCDC_CULLING=0xFFFF00FF;
//Disablecullng,水平及垂直方向的选择方式
//(31-24)=偶场的水平选择,(23-16)=奇场的水平选择
//(15-8)=保留,(7-0)=垂直选择模式
*Interleavethetwofields
VPFE_CCDC_SDOFST=0//0x00000249;
//DDR线偏移
14)//场标志信号翻转,0=正常
12)//场线偏移,0=+1线,1=+2线,2=+3线,3=+4线,
9)//偶线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
//5=-2,6=-3,7=-4,
6)//奇线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
3)//偶线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
0);
//奇线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,
VPFE_CCDC_SDR_ADDR=buffer;
//bufferDDR地址,最低5位忽略
VPFE_CCDC_CLAMP=0//;
//可选的黑色箝位设置
31)//CLAMPEN,CLAMP使能,0=禁止
28)//采样象素长度,0=1pixel,为2^N(次幂),5-7保留
25)//采样线长度,0=1line,为2^N(次幂),5-7保留
10)//采样的开始象素
//bit4-bit0,平均增益
VPFE_CCDC_DCSUB=0;
//CCD数据要减去的值,当CLAMPEN=0时有效
VPFE_CCDC_COLPTN=0xEE44EE44;
//调色板设置
//0|(0<
30)//第三线调色板,3个象素,0=R,1=Gr,2=Gb,3=B
//|(0<
28)//CP3LPC2,象素个数=2
26)//CP3LPC1,象素个数=1
//|(0<
24)//CP3LPC0,象素个数=0
22)//第二线调色板
20)
18)
16)
14)//第一线调色板
12)
10)
8)
6)//第0线调色板
4)
2)
VPFE_CCDC_BLKCMP=0;
//黑色补偿
24)//R红色
16)//Gr
8)//Gb
//B蓝色
VPFE_CCDC_FPC_ADDR=0x86800000;
//不知道干吗用的
VPFE_CCDC_FPC=0;
VPFE_CCDC_VDINT=0;
//VD中断时序,(30-16)=VDINT0,(14-0)=VDINT1
VPFE_CCDC_ALAW=0;
//a率设置
VPFE_CCDC_REC656IF=0//0x00000003;
//rec656接口
1)//FVH错误纠正使能
0);
//Rec656接口使能
*InputformatisCb:
Y:
Cr:
Y,w/Yinodd-pixelposition
VPFE_CCDC_CCDCFG=0//0x00000800;
//CCD配置寄存器
15)//使能VSYNC内部的锁存功能,0=使用VSYNC锁存
13)//MSBINVI,色度输入信号最高位是否在SDRAM中翻转,0=正常
12)//DDR的字节是否交换,如果字节包已经使能,象素个数必须为偶数
//0=正常
11)//YCbCr8bit输入时Y的位置,0=偶像素,1=奇象素
8)//指定CCD有效范围,0=当WEN为逻辑“与”时内部信号有效,反之为“”
6)//FID检测,0=VSYNC时序锁存FID信号,1=不锁存,2=VD边缘锁存,3=VD、HD的相位决定
5)//CCIR656输入数据宽度,0=8bit,1=10bit
4)//YCINSWP,YI输入和CI引脚输入交换,0=不交换
|0;
VPFE_CCDC_FMTCFG=0;
//数据重新格式化、图象口配置
16)//图象口数据准备好频率,跟内核频率有关,0=CoreClock*1/2=75MHz
15)//videoport使能
12)//videoport输入选择,0=bit15~6
//|0;
VPFE_CCDC_FMT_HORZ=0//0x000002D0;
//数据重新格式化、图象输入接口水平信息
16)//bit31~29保留,从HD开始的水平开始象素
|(0x2D0<
0)//bit15~13保留,水平方向的象素个数=0x2d0=720
VPFE_CCDC_FMT_VERT=0//0x0000020E;
//数据重新格式化、图象输入接口垂直信息
16)//bit31~29保留,从vd开始的水平开始象素
|(0x20e<
0)//bit15~13保留,水平方向的象素个数=0x20e=526
VPFE_CCDC_FMT_ADDR0=0;
VPFE_CCDC_FMT_ADDR1=0;
VPFE_CCDC_FMT_ADDR2=0;
VPFE_CCDC_FMT_ADDR3=0;
VPFE_CCDC_FMT_ADDR4=0;
VPFE_CCDC_FMT_ADDR5=0;
VPFE_CCDC_FMT_ADDR6=0;
VPFE_CCDC_FMT_ADDR7=0;
VPFE_CCDC_PRGEVEN_0=0;
VPFE_CCDC_PRGEVEN_1=0;
VPFE_CCDC_PRGODD_0=0;
VPFE_CCDC_PRGODD_1=0;
VPFE_CCDC_VP_OUT=0//0x041A2D00;
//videoport输出设置
|(0x20d<
17)//被时钟输出到videoport的垂直线数=0x20d=525
|(0x2d0<
4)//被时钟输出到videoport的水平线数=0x2d0=720
//每个输出行的水平开始象素=0
VPFE_CCDC_PCR=0x00000001;
//EnableCCDC,bit1=是否busy,bit0=enable
//如果禁止的话,CCDC会向DSP发送中断,不需要中断需要配置INTC
}
*vpbe_init()*
voidvpbe_init(Uint32buffer,Uint32width,Uint32height,Uint32colorbar_loopback_mode,Uint32ntsc_pal_mode,Uint32output_mode)
Int16basep_x;
Int16basep_y;
RGBCOLORrc;
if(ntsc_pal_mode==NTSC)
{
basep_x=0x7A;
//122
basep_y=0x12;
//18
}
else
basep_x=0x84;
//132
basep_y=0x16;
//22
*SetupVPBE
VPSS_CLK_CTRL=0x00000018;
//EnableDACandVENCclock,bothat27MHz
VPBE_PCR=0;
//Noclockdiv,clockenable
*SetupOSD
VPBE_OSD_MODE=0//0x000000fc;
//osd模式寄存器
//最后8位指定背景色地址(ROM0)
15)//cb/cr顺序,0=cb/cr,1=cr/cb(修改这个1会把背景变红)
14)//osd窗口垂直扩展使能,如果使能,bitmap窗口
//Y值将延伸为6/5。
0=*1,1=*6/5
13)//osd窗口水平扩展使能,如果使能,bitmap窗口
//X值将延伸为9/8。
可用于pal和ntsc切换
12)//延伸滤波使能,14、13位使能才有用,或者video串口
//smoothing已经设置,小心使用
11)//video窗口,类似14位
10)//video窗口,类似13位
9)//field(场信号)翻转=1
8)//背景颜色表选择,0=ROM,1=RAM
|(0xfd<
0)//CLUT(colorlook-uptable)背景颜色查找表地址
;
//这是一部分图象不显示时出现的颜色
//--OSD窗口0、1设置,!
!
暂时不用!
VPBE_OSD_OSDWIN0MD=0|//Disablebothosdwindowsandcursorwindow
(0<
13)|//RGB0ERGB输入还是BITMAP输入
//0=bitmap,1=16bitRGB,如果此位设置,
//**#####**那么WINDOW1的该位不能为1**#####**
12)|//CLUTS0,OSDWINDOW0的颜色查找表位置,0=rom,1=RAM
10)|//OHZ0osd窗口0水平放大倍数(1、2、4)
8)|//OVZ0osd窗口0垂直放大倍数
6)|//BMW0bitmap位宽0=1,1=2,2=4,3=8
3)|//BLND0osd窗口0和video窗口0混合率
2)|//TE0osd窗口0透明,0=不使能,如果使能,根据
//BLND0出效果
1)|//osd窗口0显示模式,0=Field,1=Frame
0;
//osd窗口0激活=1
VPBE_OSD_OSDWIN1MD=0|
0<
15|//OASWwindow0的品质模式?
13|//RGB1ERGB输入还是BITMAP输入
12|//CLUTS1
10|//OHZ1
8|//OVZ1
6|//BMW1
3|//BLND1
2|//TE1透明不使能
1|//OFF1显示模式
//OACT1激活
//--
VPBE_OSD_RECTCUR=0;
VPBE_OSD_BASEPX=basep_x;
VPBE_OSD_BASEPY=basep_y;
//videowindow0参数选择--->
4
VPBE_OSD_VIDWIN0OFST=width>
4;
VPBE_OSD_VIDWIN0ADR=buffer;
//videowindow0地址寄存器,这里指向DDR,最低5位忽略
VPBE_OSD_VIDWIN0XP=0;
//videowindow0X起始坐标实际偏移比此值少一半?
//象素单位,从basepx开始算起,20刚好在边上
VPBE_OSD_VIDWIN0YP=20;
//此值对NTSC显示有影响,0则无影响
VPBE_OSD_VIDWIN0XL=