|
本帖最后由 FSL_TICS_ZJJ 于 2014-1-27 16:07 编辑
K60+数字摄像头7660 DMA采集
在图像一行的点数比较小的时候,程序可以正常采集,但是一行点数超过180的时候就只能菜一场图像。只有在第一场的时候才能进DMA中断清除
贴出程序如下 请指导 是否DMA需要特殊设置?
void PORTA_IRQHandler()
{
//---HREF行中断处理
if( PORTA_ISFR & (1 << 9)) //PTA9触发中断
{
PORTA_ISFR |= (1 << 9); //写1清中断标志位
if(2 == rowCnt%ROWSIZE)
{
DMA_PORTx2BUFF_Init (DMA_CH4, (void *)&PTD_BYTE0_IN, ImageBuf[rowCnt/ROWSIZE], PTC19, DMA_BYTE1, COL, DMA_rising);//----使能DMA,初始化的时候禁止DMA
DMA_EN(DMA_CH4);
}
rowCnt++;
if(rowCnt >= MaxRow) //是否采集完成
{
HANGIRQ_DIS; //关了行中断
CHANGIRQFLAG_CLR; ////清场中断标志
CHANGIRQ_EN; //开启场中断
ImageReadyFlag=1; //表明图像接受完成
}
}
}
void PORTB_IRQHandler()//场中断
{
PORTB_ISFR |=( 1 << 1); //PTB0清0
rowCnt = 0; //行数清零
CHANGIRQ_DIS;//关场中断
HANGIRQFLAG_CLR;//写1清行中断标志位
HANGIRQ_EN;
}
//DMA 中断
void DMA_CH4_Handler(void)
{
//DMA通道4
DMA_IRQ_CLEAN(DMA_CH4);
DMA_IRQ_DIS(DMA_CH4); //禁止DMA 等待下一次行中断来临开启DMA
}
|
|