图片采集同步问题求助:
硬件平台:BF544+CMOS摄像头
软件平台:VDSP5.12
遇到的问题是帧不同步问题,视频输出上看不是不断走屏,而是隔一段时间走几行,有时候又很长时间都不走,硬件上我做了一个为摄像头打光的灯光控制,一帧开灯一帧灭灯,如此循环,所有很容易看到不同步的时候是图片上部分和下部分明显就是开灯的图和不开灯的图拼在一起。我的感觉就是会不会是我配置问题或者硬件问题,比如某一帧由于硬件原因造成丢失了N行,然后这帧不完整,之后就一直不同步,以后每次就都是偏了N行,而没有在下一帧的时候根据帧同步信号去同步。
我的配置如下:(基本上都是由BF548开发板上的程序移植过来的)
#define FLOW_7 0x7000
#define NDSIZE_9 0x900
#define FLOW_STOP 0x0000
#define DI_En 0x0080
void InitPPI1DMA(void)
{
*pDMA13_START_ADDR = cmosbuffer1;
// Line_Length 2 bit transfers will be executed
*pDMA13_X_COUNT = 640/4;
// The modifier is set to 2 because of the 16 bit transfers
*pDMA13_X_MODIFY = 0x4;
// Frame_Length 16 bit transfers will be executed
*pDMA13_Y_COUNT = 480;
// The modifier is set to 2 because of the 16 bit transfers
*pDMA13_Y_MODIFY = 0x4;
// DMA Config: Enable DMA | Generate interrupt on completion | Memory read DMA |
// 16-bit xfers | 2-D DMA | Discard DMA FIFO before start
*pDMA13_CONFIG = WNR |DI_EN |WDSIZE_32 | DMA2D | SYNC ;
ssync();
}
#define POLS_3 0<<13
#define POLC_3 2<<11
#define FS_CFG_2 2<<4
#define DIR_RX 0<<1
#define XFR_TYPE11 3<<2
#define DLEN8 0<<15
void InitEPPI1(void)
{
*pEPPI1_CONTROL = POLS_3| POLC_3 | DIR_RX | XFR_TYPE11 | FS_CFG_2 | PACKEN ;
ssync();
*pEPPI1_LINE = 640;
ssync();
//The PPI is set to receive 525 lines for each frame
*pEPPI1_FRAME = 480; // this is active plus verticle blanking line total
*pEPPI1_VDELAY = 0;
*pEPPI1_HDELAY = 56;
ssync();
}
#pragma optimize_off
EX_INTERRUPT_HANDLER(EPPI1_RxIsr)
{
static unsigned char flag = 0;
if(flag ==0)
{
*pPORTB &= 0xffbf; //关灯、开灯
cmosp->led_flag = flag = 1;//置此帧数据为无灯光图
}
else
{
*pPORTB |= 0x0040; //关灯、开灯
cmosp->led_flag = flag = 0;//置此帧数据为有灯光图
}
csync();
*pDMA13_IRQ_STATUS |= DMA_DONE;
*pDMA13_CONFIG &= ~0x1;
cmosp->cmosflag= 0x1;
cmosp = cmosp->next;
if(cmosp->cmosflag&0x10)
cmosp = cmosp->next;
cmosp->cmosflag = 0x0;
cmosp->led_flag = 0xff;
*pDMA13_START_ADDR = cmosp->ptr;
*pDMA13_CONFIG |= 0x1;
}
摄像头为MT9V034,输出的是752*480的一维黑白灰度图,上面的配置我做了一个*pEPPI1_HDELAY = 56;配置,裁剪出640*480的黑白图。
POLS_3、POLC_3这两位我不断更换配置也还是一样,现在比较没有头绪。也不知道问题表达有没问题,如有问题我会补充,请帮帮忙,谢谢!