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

📄 dm642main.c

📁 DM642四路图像采集存储程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    

/*----------------------------------------------------------*/	
	/*初始化Video Port*/
	/*将Vedio Port设为采集输入,以下初始化顺序依次为u4通道,u2通道,u7通道,u9通道*/
	portNumber = 1;
	vpHchannel1 = bt656_8bit_ncfc(portNumber);//打开一个VP口,进行采集,
	                                          //并配置相应DMA通道,函数体详见vportcap.c中子函数
	bt656_capture_start(vpHchannel1);
	/*等待第一帧数据采集完成*/
	while(capNewFrame == 0){}
	/*将数据存入显示缓冲区,并清采集完成的标志*/
	capNewFrame =0;
	VP_close(vpHchannel1);//采集完成,关闭VP口
	for(i=0;i<numLines;i++)
		{
		/*传送Y缓冲区*/
		DAT_copy((void *)(capYbuffer + i * numPixels), 
	             (void *)(disYbuffer + i * numPixels),
	             numPixels);
	    /*传送Cb缓冲区*/
	    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
	             (void *)(disCbbuffer + i * (numPixels >> 1)),
	             numPixels>>1);
		/*传送Cr缓冲区*/
	    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
	             (void *)(disCrbuffer + i * (numPixels >> 1)),
	             numPixels>>1);
	 }
	 
	 
	 
	 portNumber1 = 0;
	 asm( " nop " );
	  asm( " nop " );
	vpHchannel0 = bt656_8bit_ncfc(portNumber1);
	bt656_capture_start(vpHchannel0);
	/*等待第一帧数据采集完成*/
	while(capNewFrame1 == 0){}
	/*将数据存入显示缓冲区,并清采集完成的标志*/
	capNewFrame1 =0;
	VP_close(vpHchannel0);
	//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
	//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
	for(i=0;i<numLines;i++)
		{
		/*传送Y缓冲区*/
		DAT_copy((void *)(capYbuffer + i * numPixels), 
	             (void *)(disYbuffer1 + i * numPixels),
	             numPixels);
	    /*传送Cb缓冲区*/
	    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
	             (void *)(disCbbuffer1 + i * (numPixels >> 1)),
	             numPixels>>1);
		/*传送Cr缓冲区*/
	    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
	             (void *)(disCrbuffer1 + i * (numPixels >> 1)),
	             numPixels>>1);
	 }
	 
	 portNumber2 = 2;
	 WV=0;
	 vpHchannel2 = bt656_8bit_ncfc(portNumber2);
	bt656_capture_start(vpHchannel2);
	/*等待第一帧数据采集完成*/
	while(capNewFrame2 == 0){}
	/*将数据存入显示缓冲区,并清采集完成的标志*/
	capNewFrame2 =0;
	VP_close(vpHchannel2);
	//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
	//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
	for(i=0;i<numLines;i++)
		{
		/*传送Y缓冲区*/
		DAT_copy((void *)(capYbuffer + i * numPixels), 
	             (void *)(disYbuffer2 + i * numPixels),
	             numPixels);
	    /*传送Cb缓冲区*/
	    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
	             (void *)(disCbbuffer2 + i * (numPixels >> 1)),
	             numPixels>>1);
		/*传送Cr缓冲区*/
	    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
	             (void *)(disCrbuffer2 + i * (numPixels >> 1)),
	             numPixels>>1);
	 }
	 
	 
	 
	 portNumber2 = 2;
	 WV=1;
	 vpHchannel2 = bt656_8bit_ncfcb(portNumber2);
	bt656_capture_start(vpHchannel2);
	/*等待第一帧数据采集完成*/
	while(capNewFrame3 == 0){}
	/*将数据存入显示缓冲区,并清采集完成的标志*/
	capNewFrame3 =0;
	VP_close(vpHchannel2);
	//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
	//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
	for(i=0;i<numLines;i++)
		{
		/*传送Y缓冲区*/
		DAT_copy((void *)(capYbuffer + i * numPixels), 
	             (void *)(disYbuffer3 + i * numPixels),
	             numPixels);
	    /*传送Cb缓冲区*/
	    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
	             (void *)(disCbbuffer3 + i * (numPixels >> 1)),
	             numPixels>>1);
		/*传送Cr缓冲区*/
	    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
	             (void *)(disCrbuffer3 + i * (numPixels >> 1)),
	             numPixels>>1);
	 }
	 
	 
	 
	/*启动显示模块*/
	//bt656_display_start(vpHchannel0);
	/*建立采集的循环*/
	ED=1;
	for(;;)
	{
	    portNumber = 1;
	    vpHchannel1 = bt656_8bit_ncfc(portNumber);
	    bt656_capture_start(vpHchannel1);
	    while(capNewFrame == 0){}
		if(capNewFrame == 1)
		{
			VP_close(vpHchannel1);
			/*将数据装入显示缓冲区,并清采集完成的标志*/
			capNewFrame =0;
			//disNewFrame =0;
			for(i=0;i<numLines;i++)
			{
				/*传送Y缓冲区*/
				DAT_copy((void *)(capYbuffer + i * numPixels), 
			             (void *)(disYbuffer + i * numPixels),
			             numPixels);
			    /*传送Cb缓冲区*/
			    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
			             (void *)(disCbbuffer + i * (numPixels >> 1)),
			             numPixels>>1);
				/*传送Cr缓冲区*/
			    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
			             (void *)(disCrbuffer + i * (numPixels >> 1)),
			             numPixels>>1);
			 }
		}
		
		
	    portNumber1 = 0;
	    vpHchannel0 = bt656_8bit_ncfc(portNumber1);
	    bt656_capture_start(vpHchannel0);
		while(capNewFrame1 == 0){}
		if(capNewFrame1 == 1)
		{
			VP_close(vpHchannel0);
			/*将数据装入显示缓冲区,并清采集完成的标志*/
			capNewFrame1 =0;
			//disNewFrame =0;
			for(i=0;i<numLines;i++)
			{
				/*传送Y缓冲区*/
				DAT_copy((void *)(capYbuffer + i * numPixels), 
			             (void *)(disYbuffer1 + i * numPixels),
			             numPixels);
			    /*传送Cb缓冲区*/
			    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
			             (void *)(disCbbuffer1 + i * (numPixels >> 1)),
			             numPixels>>1);
				/*传送Cr缓冲区*/
			    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
			             (void *)(disCrbuffer1 + i * (numPixels >> 1)),
			             numPixels>>1);
			 }
		}
				
		
		portNumber2 = 2;
		WV=0;
	    vpHchannel2 = bt656_8bit_ncfc(portNumber2);
	    bt656_capture_start(vpHchannel2);
	    while(capNewFrame2 == 0){}
		if(capNewFrame2 == 1)
		{
			VP_close(vpHchannel2);
			/*将数据装入显示缓冲区,并清采集完成的标志*/
			capNewFrame2 =0;
			//disNewFrame =0;
			for(i=0;i<numLines;i++)
			{
				/*传送Y缓冲区*/
				DAT_copy((void *)(capYbuffer + i * numPixels), 
			             (void *)(disYbuffer2 + i * numPixels),
			             numPixels);
			    /*传送Cb缓冲区*/
			    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
			             (void *)(disCbbuffer2 + i * (numPixels >> 1)),
			             numPixels>>1);
				/*传送Cr缓冲区*/
			    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
			             (void *)(disCrbuffer2 + i * (numPixels >> 1)),
			             numPixels>>1);
			 }
		}
		
	    portNumber2 = 2;
	    WV=1;
	    vpHchannel2 = bt656_8bit_ncfcb(portNumber2);
	    bt656_capture_start(vpHchannel2);
		while(capNewFrame3 == 0){}
		if(capNewFrame3 == 1)
		{
			VP_close(vpHchannel2);
			/*将数据装入显示缓冲区,并清采集完成的标志*/
			capNewFrame3 =0;
			//disNewFrame =0;
			for(i=0;i<numLines;i++)
			{
				/*传送Y缓冲区*/
				DAT_copy((void *)(capYbuffer + i * numPixels), 
			             (void *)(disYbuffer3 + i * numPixels),
			             numPixels);
			    /*传送Cb缓冲区*/
			    DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)), 
			             (void *)(disCbbuffer3 + i * (numPixels >> 1)),
			             numPixels>>1);
				/*传送Cr缓冲区*/
			    DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)), 
			             (void *)(disCrbuffer3 + i * (numPixels >> 1)),
			             numPixels>>1);
			 }
		}
		
	}
	
 }     

⌨️ 快捷键说明

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