调试cvbs输出时,遇到一个问题,请各位大神指教:
摄像头输入448*448尺寸的8bit灰度图,将每个像素点的灰度值放在rgb的r位置,g、b位置都赋值0,生成448*448尺寸的24bit的rgb图,然后配置给ch7024通过dma输出到显示器。
ch7024寄存器配置文件生成如下图:(选择500*500的)
寄存器配置如下:(dma和eppi的配置都有参考配置文档和datasheet)
void InitDMA(void)
{
*pDMA12_START_ADDR = (void*)imgbuf_rgb;
*pDMA12_X_COUNT = 448*3/4;//448*3/2;// //跟实际buf大小相关
*pDMA12_X_MODIFY = 0x4;
*pDMA12_Y_COUNT = 448;
*pDMA12_Y_MODIFY = 0x4;
*pDMA12_CONFIG = DI_EN |WDSIZE_32 | DMA2D | SYNC |FLOW;//flow?
ssync();
}
其中pEPPI0_FS1W_HBL和pEPPI0_FS2W_LVB不知道到底应该配多少,保留了之前的配置值。
void InitEPPI0()
{
*pEPPI0_CLKDIV = 3; //100/(2*(3+1))=12.5MHz
*pEPPI0_LINE = 500; //ch7024的hti和vti
*pEPPI0_FRAME = 500;
*pEPPI0_HCOUNT = 448;
*pEPPI0_VCOUNT = 448;
*pEPPI0_FS1P_AVPL = 500;//与hti一致
*pEPPI0_FS2P_LAVF = 250000;//hti*vti
*pEPPI0_FS1W_HBL = 336;
*pEPPI0_FS2W_LVB = 5760;
*pEPPI0_VDELAY = 0;
*pEPPI0_HDELAY = 0;
//*pEPPI0_CONTROL = 0x1<<1 | 0xB<<2 | 0x1<<9 | 0x1<<10 | 0xC<<11 | 0x5<<15 | 0x1<<20 | 0x1<<26 | 0xD<<27;
*pEPPI0_CONTROL = 0x6C12E62E;
}
显示效果问题如下图,左边为buffer图片通过vdsp的viewer保存下来的,右边是输出到显示器上的。
右边的图片左右有一部分颠倒,上面好像少了一部分,下面补齐了,中间有一小截图片也不对。
不知道是eppi、dma的寄存器配置有问题还是ch7024配置有问题,大神能不能从显示效果上看出到底哪里有问题?多谢!