/****************************************************************************
* 名称 :Video_Frame_Capture
* 功能 : 初始化PPI控制器 初始化DMA0控制器
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Video_Frame_Capture(void)
{
*pPPI_FRAME = 480;
*pPPI_COUNT = 1279;
*pPPI_DELAY = 0;
*pPPI_CONTROL = 0x01AC;
*pDMA0_START_ADDR = ydata_buffer;
*pDMA0_X_COUNT = 640;
*pDMA0_X_MODIFY = 0x1;
*pDMA0_Y_COUNT = 480;
*pDMA0_Y_MODIFY = 0x1;
*pDMA0_PERIPHERAL_MAP = 0x0;
*pDMA0_CONFIG = WNR | WDSIZE_8| DMA2D | RESTART | DI_EN;
*pDMA0_CONFIG |= DMAEN;
ssync();
*pPPI_CONTROL |= PORT_EN;
ssync();
}
/****************************************************************************
* 名称 :EX_INTERRUPT_HANDLER
* 功能 : 中断函数 清 DMA 中断标志,关PPI
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
EX_INTERRUPT_HANDLER(DMA0_PPI_ISR)
{
int i,j;
*pDMA0_IRQ_STATUS = 0x1;
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
DisplayBuffer_565[2*(240*i+j)+1] = ydata_buffer[640*i+j]&0xf8;
DisplayBuffer_565[2*(240*i+j)+1] |= (ydata_buffer[640*i+j]>>5)&0x07;
DisplayBuffer_565[2*(240*i+j)+0] = (ydata_buffer[640*i+j]<<3)&0xe0;
DisplayBuffer_565[2*(240*i+j)+0] |= (ydata_buffer[640*i+j]>>3)&0x1f;
}
}
Write_pic(0,DisplayBuffer_565);
Video_Frame_Capture();
}