各位好!
我使用BF609两路的EPPI实现视频采集及输出,使用pingpong采集,pingpong输出,但是出现了有路DMA无法进入中断,只显示初始化指向的buf,代码如下,请大家指教,不胜感激!
adi_int_InstallHandler((uint32_t)INTR_EPPI1_CH0_DMA, EPPI1_DMA33_Handler, (void *)0, true);
adi_int_InstallHandler((uint32_t)INTR_EPPI2_CH0_DMA, EPPI2_DMA31_Handler, (void *)0, true);
配置好DMA33及PPI1能完成采集,
这个是采集的中断函数:
void EPPI1_DMA33_Handler(uint32_t iid, void* handlerArg)
{
*pREG_DMA33_STAT |= (uint32_t)ENUM_DMA_STAT_IRQDONE;
ssync();
if((Frame1Flag == 1))
{
*pREG_DMA33_ADDRSTART = InBuffer1;
ssync();
*pREG_DMA33_CFG |= ENUM_DMA_CFG_EN;
ssync();
Frame1done = 1;
}
else if((Frame1Flag == 2))
{
*pREG_DMA33_ADDRSTART = InBuffer2;
ssync();
*pREG_DMA33_CFG |= ENUM_DMA_CFG_EN;
ssync();
Frame2done = 1;
}
}
输入处理pingpong到输出的buf
配置好DMA31及PPI2能完成输出,
这个是输出的中断函数:
void EPPI2_DMA31_Handler(uint32_t iid, void* handlerArg)
{
*pREG_DMA31_STAT |= (uint32_t)ENUM_DMA_STAT_IRQDONE;
ssync();
if((Frame1empty==1)&&(Frame1Flag == 1))
{
*pREG_DMA31_ADDRSTART = OutBuffer1;
ssync();
*pREG_DMA31_CFG |= ENUM_DMA_CFG_EN;
ssync();
}
else if((Frame2empty==1)&&(Frame1Flag == 2))
{
*pREG_DMA31_ADDRSTART =OutBuffer2;
ssync();
*pREG_DMA31_CFG |= ENUM_DMA_CFG_EN;
ssync();
}
}