TI中文支持网
TI专业的中文技术问题搜集分享网站

DM642采集输出程序摄像头拔掉再插上后出现画面分屏

采集和输出芯片分别是TVP5150和SAA7120。之前拔掉摄像头后再插上,发现图像分屏。考虑了一下可能是内部存储空间存了插拔摄像头前后两帧不同图像导致的。进一步发现拔掉摄像头后中断程序会有short field detect,考虑解决办法是在检测到short field detect时把对应的DMA传输空间清零或者结束调,查阅了TMS320C64x DSP VIC Reference Guide (Rev. C)手册,感觉可以通过写Video Capture Channel A Control Register (VCACTL)的 RSTCH位实现,但试验了好像不行,求助各位大神怎么解决。中断服务程序如下:

interrupt void VPCapChaAIsr(void)
{
Uint32 vpis = 0;
/* Get video port status register value */
vpis = VP_RGETH(vpCaptureHandle, VPIS);
if(vpis & _VP_VPIS_CCMPA_MASK) /* capture complete */
{
/* Clear frame complete bit in VCX_CTL to continue capture in non-continuous mode*/
VP_FSETH(vpCaptureHandle, VCASTAT, FRMC,VP_VCASTAT_FRMC_CLEAR);
/* Clear CCMPA to enable next frame complete interrupts*/
VP_FSETH(vpCaptureHandle, VPIS, CCMPA,VP_VPIS_CCMPA_CLEAR);
capChaAFrameCount++; /* increment captured frame count */
capNewFrame = 1;
}
if(vpis & _VP_VPIS_COVRA_MASK) /* overrun error */
{
capChaAOverrun++;
VP_FSETH(vpCaptureHandle, VPIS, COVRA,VP_VPIS_COVRA_CLEAR);
}
if(vpis & _VP_VPIS_SERRA_MASK) /* synchronization error */
{
capChaASyncError++;
VP_FSETH(vpCaptureHandle, VPIS, SERRA,VP_VPIS_SERRA_CLEAR);
}
if(vpis & _VP_VPIS_SFDA_MASK) /* short field detect */
{
capChaAShortFieldDetect++;
VP_FSETH(vpCaptureHandle, VPIS, SFDA, VP_VPIS_SFDA_CLEAR);
////////////////////////////////////
// VP_FSETH(vpCaptureHandle, VCACTL, RSTCH, VP_VCACTL_RSTCH_RESET);

}
if(vpis & _VP_VPIS_LFDA_MASK) /* long field detect */
{
capChaALongFieldDetect++;
VP_FSETH(vpCaptureHandle, VPIS, LFDA, VP_VPIS_LFDA_CLEAR);
}
}

wj xz:

回复 Chris Meng:

请问您说的复位一下后端采集的同步是指对tvp5150复位还是DM642数据采集端复位?具体如何实现

赞(0)
未经允许不得转载:TI中文支持网 » DM642采集输出程序摄像头拔掉再插上后出现画面分屏
分享到: 更多 (0)