我用的是BF561,我用matlab把图片读取进来,然后在用VDSP把数据读进来,384*288的图片可以显示,720*576的图片却是图片的左半部分和右半部分重叠了,而且只显示了图片的上面一部分。一些寄存器的设置如下,这个项目是之前的人写的,我也不是很看得懂。
EX_INTERRUPT_HANDLER(VideoOutISR)
{
//PPI输出时的场同步中断.
*pDMA1_1_IRQ_STATUS |= *pDMA1_1_IRQ_STATUS;
*pTMRS4_STATUS |= TIMIL11;
*pDMA1_1_CONFIG &= ~0x01;
*pPPI1_CONTROL &= ~0x01;
*pDMA1_1_CONFIG = 0x0000 |/DMA2D | WDSIZE_32;//不产生中断
*pDMA1_1_X_COUNT = g_swWidthVideoA;//列数
*pDMA1_1_X_MODIFY = 0x0004;
*pDMA1_1_Y_COUNT = g_swHeightVideoA; //行数
*pDMA1_1_Y_MODIFY = 0x0004;
*pDMA1_1_START_ADDR = (void*)g_pdwVideoLogo;
*pPPI1_DELAY = 0;
*pPPI1_CONTROL = 0<<14 | 1<<11 | 1<<8 | 0<<4 | 3<<2 | 1<<1;//带同步
*pPPI1_COUNT = g_swWidthVideoA-1;
*pPPI1_FRAME = g_swHeightVideoA;
*pDMA1_1_CONFIG |= DMAEN;
ssync();
*pPPI1_CONTROL |= PORT_EN;
ssync();
}
void EnableVideoOut_AD7123(BOOL bEnable)
{
*pDMA1_1_CONFIG &= ~0x01;
ssync();
*pPPI1_CONTROL &= ~0x01;
ssync();
*pTMRS4_DISABLE = 1<<2 | 1<<3;
*pTMRS4_STATUS |= TRUN10 | TOVL_ERR10 | TIMIL10;
*pTMRS4_STATUS |= TRUN11 | TOVL_ERR11 | TIMIL11;
if(bEnable)
{
//注册中断服务程序
*pSICA_IAR5 = 0x43333333;
btISR = (((*pSICA_IAR5) >> 24 ) & 0x0F) + 0x07;
*pILAT |= EVT_IVG10;
*pSICA_IAR5 = Peripheral_IVG(14,10);
register_handler(ik_ivg10,VideoOutISR);//定时器11中断
*pSICA_IMASK1 |= 1 << 14;
//Timer11,即FS2同步信号,下降沿有效,采集模式
*pTIMER11_CONFIG |= WDTH_CAP | PERIOD_CNT | IRQ_ENA | EMU_RUN |PULSE_HI;
*pTIMER10_CONFIG |= WDTH_CAP | PERIOD_CNT | IRQ_ENA | EMU_RUN |PULSE_HI;
*pTMRS4_ENABLE = TIMEN11 | TIMEN10;
}
}