Example #1
0
void Init_OV7620_DMA()
{
	MCF_GPIO_PTEPAR = 0;
	MCF_GPIO_DDRTE = 0;
	SCCB_Init();
	SCCB_Bytewrite(0x42,0x14,0x24);
	SCCB_Bytewrite(0x42,0x11,0x04);
	MCF_DMA_DSR(0) |= MCF_DMA_DSR_DONE;//清空传输完成标志位
	MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);
	MCF_SCM_DMAREQC = MCF_SCM_DMAREQC_DMAC0(0x04);//设定DMA0为DTIM0触发
	MCF_DMA_SAR(0)=(uint32)0x40100030;//源地址为PTE
	MCF_DMA_DAR(0)=(uint32)Image_Data[0];//目的地址为图像数组
	MCF_DMA_BCR(0)=320;//传输长度为每行的长度,这里是320个像素
	MCF_DMA_DCR(0)=MCF_DMA_DCR_INT//开启DMA中断
				|MCF_DMA_DCR_SSIZE(1)
				|MCF_DMA_DCR_DSIZE(1)//每次传输源地址和目的地址都为一字节
				|MCF_DMA_DCR_DINC//每次传输之后源地址保持不变,目的地址加1
				|MCF_DMA_DCR_D_REQ//每次传输结束之后关闭DMA外部请求
				//|MCF_DMA_DCR_EEXT
				|MCF_DMA_DCR_CS;//一次DMA请求传输一次
	MCF_GPIO_PTCPAR|=MCF_GPIO_PTCPAR_DTIN0_DTIN0;//设定DTIN0端口的功能
	MCF_DTIM0_DTMR=0;//重置STMR寄存器
	MCF_DTIM0_DTMR=MCF_DTIM_DTMR_CE_RISE//捕捉上升沿
				|MCF_DTIM_DTMR_CLK_DTIN;//时钟输入为DTIN
	MCF_DTIM0_DTER|=MCF_DTIM_DTER_CAP;//边沿捕捉触发
	MCF_DTIM0_DTXMR|=MCF_DTIM_DTXMR_DMAEN;//DMA请求使能
	MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_RST;//开启DTIM
	MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
	MCF_INTC0_IMRL&=~MCF_INTC_IMRL_INT_MASK9;
	MCF_INTC0_ICR09=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(6);
	EPORT_init();
}
Example #2
0
/* DMA Timer Initialization */
int8 dtim_init(/*DTIM_Info info, */uint8 u8DTimModule)
{
	/*MCF_SCM_PPMRL &= ~MCF_SCM_PPMRL_CDDTIM0;
	MCF_SCM_PPMRC |= MCF_SCM_PPMRC_ENABLE_DTIM0;*/
	
	gpio_set_func(PTTC, u8DTimModule, PRIMARY);
	
	MCF_DTIM_DTMR(u8DTimModule)|= 0 | MCF_DTIM_DTMR_PS(0) |  MCF_DTIM_DTMR_CE_NONE | MCF_DTIM_DTMR_CLK_DTIN | MCF_DTIM_DTMR_FRR;
	MCF_DTIM_DTRR(u8DTimModule)=~0;
	MCF_DTIM_DTCN(u8DTimModule)=0;

	/*MCF_GPIO_PTCPAR|=MCF_GPIO_PTCPAR_DTIN0_DTIN0|MCF_GPIO_PTCPAR_DTIN1_DTIN1;
	//timer mode reg
	//	MCF_DTIM_DTMR(u8DTimModule) = MCF_DTIM_DTMR_CE(info.u8CapEdge | MCF_DTIM_DTMR_CLK(info.u8ClkSrc);
	MCF_DTIM_DTMR(u8DTimModule) |= MCF_DTIM_DTMR_CE_NONE | MCF_DTIM_DTMR_CLK_DTIN | MCF_DTIM_DTMR_FRR;

	MCF_DTIM_DTRR(u8DTimModule) = 0xFFFFFFFF;

	MCF_DTIM_DTCN(u8DTimModule) = 0x0;*/

	/*if(info.u8OutputMode)	//toggle output
		MCF_DTIM_DTMR(u8DTimModule) |= MCF_DTIM_DTMR_OM;
	else*/
	//	MCF_DTIM_DTMR(u8DTimModule) &= ~MCF_DTIM_DTMR_OM;
	//	if(info.u8Restart)	//restart
	//	MCF_DTIM_DTMR(u8DTimModule) |= MCF_DTIM_DTMR_FRR;
	//	else
	//		MCF_DTIM_DTMR(u8DTimModule) &= ~MCF_DTIM_DTMR_FRR;

	//Timer extended register
	//	if(info.u8DMAEn)	//DMA request enable
	//	MCF_DTIM_DTXMR(u8DTimModule) |=  MCF_DTIM_DTXMR_DMAEN;	
	//	else
	//		MCF_DTIM_DTXMR(u8DTimModule) &=  ~MCF_DTIM_DTXMR_DMAEN;	
	//	if(info.u8Halt)	//timer stop in halt
	//		MCF_DTIM_DTXMR(u8DTimModule) |=  MCF_DTIM_DTXMR_HALTED;	
	//	else
	//		MCF_DTIM_DTXMR(u8DTimModule) &=  ~MCF_DTIM_DTXMR_HALTED;	
	/*if(info.u8Mode16)
		MCF_DTIM_DTXMR(u8DTimModule) |=  MCF_DTIM_DTXMR_MODE16;
	else*/
	//	MCF_DTIM_DTXMR(u8DTimModule) &=  ~MCF_DTIM_DTXMR_MODE16;

//	DTimEnableInts(u8DTimModule, dtim0_isr);
	return 0;
}
Example #3
0
void DTimDisableInts(uint8 u8DTimModule)
{
	MCF_DTIM_DTMR(u8DTimModule) &= ~MCF_DTIM_DTMR_ORRI;
}
Example #4
0
void DTimEnableInts(uint8 u8DTimModule, dtim_isr isr)
{
	MCF_DTIM_DTMR(u8DTimModule) |= MCF_DTIM_DTMR_ORRI;
	__VECTOR_RAM[64+19] = (uint32) isr;
//	dtim_example_isr[u8DTimModule] = isr;
}
Example #5
0
void dtim_start(uint8 u8DTimModule)
{
		MCF_DTIM_DTMR(u8DTimModule)  |= MCF_DTIM_DTMR_RST;
}