版主,您好!
BF548采集图像,EPPI行中断如何来配置呢?我想采一行灰度图像,利用采集下一行之前的空隙时间把采集的这一行二值化,这样整幅图像采集完二值化也完毕了。
看论坛里其他帖子,是开启内层循环,可是我配置后不生效。
摄像头的时序是最后图片中的时序波形。
#define PPI2_POLS 0<<13
#define PPI2_POLC 2<<11
#define PPI2_DIR_RX 0<<1
#define PPI2_XFR_TYPE11 3<<2
#define PPI2_FS_CFG 2<<4
#define PPI2_DLEN_8 0<<15
void drv_PPI2_Init(void)
{
//Init PPI2
*pEPPI2_CONTROL = PPI2_POLS| PPI2_POLC | PPI2_DLEN_8 | PPI2_DIR_RX | PPI2_XFR_TYPE11 | PPI2_FS_CFG;
ssync();
*pEPPI2_LINE = IMAGE_X_SIZE;
ssync();
*pEPPI2_FRAME = IMAGE_Y_SIZE;
ssync();
}
void drv_PPI2_DMAInit(void)
{
//Init DMA for PPI2
*pDMA14_START_ADDR = Cmos2LineBuffer;
*pDMA14_X_COUNT = IMAGE_X_SIZE;
*pDMA14_X_MODIFY = 0x1;
*pDMA14_Y_COUNT = IMAGE_Y_SIZE;
*pDMA14_Y_MODIFY = 0x1;
*pDMA14_CONFIG = WNR | DI_EN | WDSIZE_8 | DMA2D | DI_SEL;
ssync();
}
void drv_PPI2_InterruptInit(void)
{
int temp;
temp = *pSIC_IAR4;
*pSIC_IAR4 = temp &0xf0ffffff;
*pSIC_IAR4 |= 3<<24;
register_handler(ik_ivg10, EPPI2_RxIsr);
ssync();
*pSIC_IMASK1 |= 0x0040; //EPPI2_RxIsr
ssync();
}
//中断处理函数
EX_INTERRUPT_HANDLER(EPPI2_RxIsr)
{
*pDMA14_IRQ_STATUS |= DMA_DONE;
*pDMA14_CONFIG &= ~0x1;
ssync();
*pEPPI2_CONTROL &= ~0x1;
ssync();
//做图像处理
//TO DO ...
*pDMA14_CONFIG |= 0x1;
*pEPPI2_CONTROL |= 0x1;
ssync();
drv_GPIO_TogglePH(2);
}
「该帖子被 blizzard 在 2015-04-27 23:55:12 编辑过」