注册会员
- 积分
- 72
- 威望
- 48
- 贡献
- 16
- 兑换币
- 17
- 注册时间
- 2013-3-18
- 在线时间
- 5 小时
|
我的Y0-Y7 对应着portB0-B7 下边是我的部分程序 求大神给我指点一下 我根本读不到摄像头的数据额
***********************************************
void DMA0_Init1(void)
{
SIM_SCGC6|=SIM_SCGC6_DMAMUX_MASK;//打开DMA多路复用器时钟
SIM_SCGC7|=SIM_SCGC7_DMA_MASK;//打开DMA模块时钟
DMAMUX_CHCFG0=DMAMUX_CHCFG_SOURCE(50);//DMA通道0对应50号DMA请求,即PORTB
DMA_TCD0_SADDR=(uint32)&GPIOB_PDIR;//设置源地址GPIO口,PORTB
DMA_TCD0_SOFF=0;//每次传送源地址不变
DMA_TCD0_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(V);//当前主循环次数,采集点数
DMA_TCD0_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(V);//起始主循环次数,采集点数
//DMA_TCD1_NBYTES_MLOFFYES=DMA_NBYTES_MLOFFYES_NBYTES(1)+DMA_NBYTES_MLOFFNO_SMLOE_MASK+DMA_NBYTES_MLOFFYES_MLOFF(-4);//传送4字节
DMA_TCD0_NBYTES_MLNO=DMA_NBYTES_MLNO_NBYTES(1);//每次读取一字节
DMA_TCD0_SLAST=0;//主循环结束后源地址0回写tcd
DMA_TCD0_DLASTSGA=0;//主循环结束后目的地址0回写tcd
DMA_TCD0_DADDR=(uint32)video;//设置目的地址,video数组第一个元素
DMA_TCD0_DOFF=1;//每次写目的地址加1//@地址加1了,另外的程序里没看到,以后要注意注意!!!
DMA_TCD0_ATTR=DMA_ATTR_SSIZE(0)+DMA_ATTR_DSIZE(0);//源数据宽度8bit,目的数据宽度8bit
//DMA_TCD0_CSR=DMA_CSR_DREQ_MASK;//DMA通道0主循环结束后停止硬件请求
DMA_TCD0_CSR|= DMA_CSR_DREQ_MASK;/* major_loop递减为0时自动关闭DMA,即只进行一次DMA传输 */
DMA_TCD0_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA0中断
DMAMUX_CHCFG0|=DMAMUX_CHCFG_ENBL_MASK;//DMA通道0使能
//DMA_TCD1_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA中断
//DMA_TCD0_CSR|=DMA_CSR_START_MASK;
DMA_ERQ &= ~(1 << 0); /* 关闭相应通道的DMA请求,在配置阶段先关闭,再调用myDMA_Start函数开启DMA */
}
*************************
****************************************
void porta_isr(void)//场中断,A24,下降沿中断
{
//PORTA_ISFR = 0xFFFFFFFF; //Clear Port A ISR flags
PORTA_ISFR=1<<24; // Clear the PTE25 interrupt flags
//PORTA_PCR24|=PORT_PCR_ISF_MASK;//清除中断标志
if(!Field_Over)
{
DMA0_Init1();
enable_irq(0);//使能DMA通道0完成中断
row=0;//初始化行
imagerow=0;//初始化采集行
disable_irq (87);//我自己架上的
enable_irq (88);//使能B口中断 ,B10行中断
}
gpio_reverse(PORTA,16);
}
***************************************************
************************************************
void portb_isr(void)//行中断,B10,上升沿中断
{
PORTB_ISFR=1<<10; // Clear the PTE25 interrupt flags
//PORTB_PCR10|=PORT_PCR_ISF_MASK;//清除中断标志位
row++; //行计数
if(row==data_table[imagerow])//如果当前行数据应该采集
{
DMA_ERQ|=DMA_ERQ_ERQ0_MASK;//使能通道0硬件DMA请求
}
else if(row>=ENDROW) //一场完成,关闭行中断
{
disable_irq (88);
}
enable_irq (87);//使能a口中断 ,A24行中断(自己家的)
}
******************************
|
|