⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpcap.c

📁 合同达开发板串口程序
💻 C
字号:
#include "DM642.h"  

////////////////////////////////////定义采集大小//////////////////////////
#define VCA_HBLNK_SIZE hstat /* (864-720),horizontal blanking */
#define VCA_IMG_VSIZE1 vsize /* (311-24+1), fld1 vertical image size */
#define VCA_IMG_VSIZE2 vsize /* (625-338+1), fld2 vertical image size */
#define VCA_IMG_HSIZE1 hsize /* field1 horizontal image size */
#define VCA_IMG_HSIZE2 hsize /* field2 horizontal image size */
/* 确定一场像素的大小为720×288 */
#define VCA_IMAGE_SIZE1 (VCA_IMG_HSIZE1 * VCA_IMG_VSIZE1)
/* 确定二场像素的大小为720×288 */
#define VCA_IMAGE_SIZE2 (VCA_IMG_HSIZE2 * VCA_IMG_VSIZE2)

#define VCA_VDTHRLD1 (VCA_IMG_HSIZE1/8) /* line length in */
#define VCA_VDTHRLD2 VCA_VDTHRLD1 /* double.words */

#define VCA_XSTART1 (VCA_HBLNK_SIZE-2)/*EAV*/
#define VCA_XSTOP1 (VCA_XSTART1 + VCA_IMG_HSIZE1-1)
/* VRST = 1, end of vertical blanking */
#define VCA_YSTART1 vstat
#define VCA_YSTOP1 (VCA_YSTART1 + VCA_IMG_VSIZE1-1)

#define VCA_XSTART2 (VCA_HBLNK_SIZE-2/*EAV*/)
#define VCA_XSTOP2 (VCA_XSTART2 + VCA_IMG_HSIZE2-1)
/* VRST = 1, end of vertical blanking */
#define VCA_YSTART2 vstat
#define VCA_YSTOP2 (VCA_YSTART2 + VCA_IMG_VSIZE2-1)

#define VCA_THRLD_FIELD1 (VCA_IMG_HSIZE1/8) /* line length in */
#define VCA_THRLD_FIELD2 VCA_THRLD_FIELD1 /* double-words */

#define VCA_CAPEVT1 (VCA_IMAGE_SIZE1 / (VCA_VDTHRLD1 * 8))
#define VCA_CAPEVT2 (VCA_IMAGE_SIZE2 / (VCA_VDTHRLD2 * 8))
/* in this example 定义采1帧  */
#define CAPCHA_FRAME_COUNT 1 

#define VCA_Y_EDMA_ELECNT (VCA_THRLD_FIELD1 * 2) 

#define VCA_Y_EDMA_FRMCNT ((VCA_CAPEVT1) * CAPCHA_FRAME_COUNT)	// + VCA_CAPEVT2

extern unsigned int NewFrame;
extern unsigned char OneOrTwo ;
//未用/////////////////////////////////////////////////////////////

void vpcap(void){/////////////////视频初始化///////////////
	//设置edma
	CCERL = 0x4;
	///////////////////EDMA设置//////////////////////
	*(volatile unsigned int *)0x01A00180=0x40a00002;//0x40a00002;  
	*(volatile unsigned int *)0x01A00184=0x74000000;  
	*(volatile unsigned int *)0x01A00188=VCA_Y_EDMA_ELECNT|((VCA_Y_EDMA_FRMCNT-1)<<16);
	*(volatile unsigned int *)0x01A0018C=DSTADDR;
	*(volatile unsigned int *)0x01A00190=(VCA_Y_EDMA_ELECNT*4)<<16;
	*(volatile unsigned int *)0x01A00194=0x00000600;
//////////
	*(volatile unsigned int *)0x01A00600=0x40a00002; //0x40b21042;// 
	*(volatile unsigned int *)0x01A00604=0x74000000;  
	*(volatile unsigned int *)0x01A00608=VCA_Y_EDMA_ELECNT|((VCA_Y_EDMA_FRMCNT-1)<<16);
	*(volatile unsigned int *)0x01A0060C=DSTADDR1;	
	*(volatile unsigned int *)0x01A00610=(VCA_Y_EDMA_ELECNT*4)<<16;
	*(volatile unsigned int *)0x01A00614=0x00000618;

	*(volatile unsigned int *)0x01A00618=0x40a00002;  
	*(volatile unsigned int *)0x01A0061c=0x74000000;  
	*(volatile unsigned int *)0x01A00620=VCA_Y_EDMA_ELECNT|((VCA_Y_EDMA_FRMCNT-1)<<16);
	*(volatile unsigned int *)0x01A00624=DSTADDR;	
	*(volatile unsigned int *)0x01A00628=(VCA_Y_EDMA_ELECNT*4)<<16;
	*(volatile unsigned int *)0x01A0062c=0x00000600;

	EERL = 0x00010000 ;	

	VP_PCR0=0x000000004 ;
	
    VC_ASTOP01=(VCA_YSTOP1 << 16) | VCA_XSTOP1;
    VC_ASTOP02=(VCA_YSTOP2 << 16) | VCA_XSTOP2;
    VC_ASTRT01=VCA_XSTART1 | (VCA_YSTART1<<16);
    VC_ASTRT02=VCA_XSTART2 | (VCA_YSTART2<<16); 
       
    VC_ATHRLD0=VCA_THRLD_FIELD1 | (VCA_THRLD_FIELD2<<16);
    AEVTCT0=VCA_CAPEVT1 | (VCA_CAPEVT2<<16);
    
    VP_IE0=0x5;
    
    VC_CTL0=0x400a0054;
	VP_CTL0=0x00000030 ;
    VC_CTL0=VC_CTL0 | 0x00008000 ;
    VC_CTL0=VC_CTL0 & 0xBFFFFFFF ;
	VP_CTL0=VP_CTL0 | 0x00004000 ;
}
///////////////////////////////视频中断处理
//interrupt 
void VPK(void)
{
	int vpis;		

 	vpis = VP_IS0;
	
	if(vpis & 0x00000004 )
	{	
		VP_IS0 =0x00000004;
		VC_STAT0=VC_STAT0|0x40000000;
 	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -