智能车制作

标题: 哪位大婶帮我看看DMA的程序吧!! [打印本页]

作者: zqj2008    时间: 2013-1-1 12:40
标题: 哪位大婶帮我看看DMA的程序吧!!
        PORTD->PCR[2] = PORT_PCR_MUX(1);//gpio
        PTD->PDDR &= ~(0x1u<<2);                //input
        PORTD->PCR[2] |= PORT_PCR_IRQC(3); //irq DMA falling edge
        PORTD->PCR[2] |= PORT_PCR_PE_MASK ;//pull down

        SIM->SCGC6|=SIM_SCGC6_DMAMUX_MASK;
        SIM->SCGC6|=SIM_SCGC7_DMA_MASK;
        DMAMUX->CHCFG[1]|=DMAMUX_CHCFG_SOURCE(52);//DMA通道一打开第52号请求源,即PROTD
        DMA0->TCD[1].SADDR=(uint32_t)Source;//源地址
        DMA0->TCD[1].SOFF=1;//每次传送源地址加1
        DMA0->TCD[1].ATTR=DMA_ATTR_SSIZE(0)|DMA_ATTR_DSIZE(0);//源8位,目的8位
        DMA0->TCD[1].NBYTES_MLNO=DMA_NBYTES_MLNO_NBYTES(0);//每次传送8位
        DMA0->TCD[1].SLAST=(uint32_t)-PixNum ; //主循环结束后源地址返回到数组头
        DMA0->TCD[1].DADDR=(uint32_t)CCD_Buf; //目的地址
        DMA0->TCD[1].DOFF=1;//每次传送目的地址加1
        DMA0->TCD[1].CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(PixNum);//当前传送次数
        DMA0->TCD[1].DLAST_SGA=(uint32_t)- PixNum  ;//
        DMA0->TCD[1].BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(PixNum);//每次传送次数
        DMA0->TCD[1].CSR|=DMA_CSR_DREQ_MASK;//主循环结束后自动清除REQ
        DMA0->TCD[1].CSR|=DMA_CSR_INTMAJOR_MASK;//中循环结束后产生中断
        DMA0->INT|=DMA_INT_INT1_MASK;
        DMA0->ERQ&=~DMA_ERQ_ERQ0_MASK;
        DMAMUX->CHCFG[1]|=DMAMUX_CHCFG_ENBL_MASK;//开始
        NVIC_EnableIRQ(DMA0_IRQn);
        DMA0->TCD[1].CSR|=DMA_CSR_START_MASK ;
我想把数据从一个数组传送到另一个数组都不行,数组值没传过去,DMA中断也没触发,感觉触发源设置没有问题,大婶们帮忙看看吧


作者: I'M_Not_The    时间: 2013-1-1 12:49
;P
作者: 河边有棵树    时间: 2013-1-1 13:10
表示 看不懂
作者: zqj2008    时间: 2013-1-1 13:15
I'M_Not_The 发表于 2013-1-1 12:49



作者: zqj2008    时间: 2013-1-1 13:15
河边有棵树 发表于 2013-1-1 13:10
表示 看不懂



作者: 461536135    时间: 2013-1-1 21:06
问题解决了吗?
作者: 461536135    时间: 2013-1-1 21:07
QQ:461536135 我也正在看dma和你的问题一样
作者: zqj2008    时间: 2013-1-3 12:14
461536135 发表于 2013-1-1 21:07
QQ:461536135 我也正在看dma和你的问题一样

解决了 数据类型不对 之前目的数据类型是32位的





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2