本帖最后由 FSL_TICS_ZP 于 2014-3-6 09:21 编辑
小弟这两天配置DMA 程序如下
SIM->SCGC7|=SIM_SCGC7_DMA_MASK;
SIM->SCGC6|=SIM_SCGC6_DMAMUX_MASK;
SIM_ModuleClockSet(SIM_DMAMUX,ENABLE);
SIM_ModuleClockSet(SIM_DMA ,ENABLE);
DMA->DCHPRI1|=DMA_DCHPRI1_ECP_MASK |DMA_DCHPRI1_CHPRI(1);
DMA->TCD[1].NBYTES_MLNO=DMA_NBYTES_MLNO_NBYTES(1);
DMA->TCD[1].ATTR|=DMA_ATTR_DMOD(0)|DMA_ATTR_DSIZE(0)|DMA_ATTR_SSIZE(0)|DMA_ATTR_SMOD(0);
DMA->TCD[1].SADDR=(uint32_t)&(ADC0->R[0]);
DMA->TCD[1].SOFF=DMA_SOFF_SOFF(0);
DMA->TCD[1].DADDR=(uint32_t)&data;
DMA->TCD[1].DOFF=DMA_DOFF_DOFF(0);
DMA->TCD[1].SLAST=DMA_SLAST_SLAST(-4);
DMA->TCD[1].DLAST_SGA=DMA_DLAST_SGA_DLASTSGA(-4);
DMA->TCD[1].CSR=0;
DMA->TCD[1].CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(4);
DMA->TCD[1].BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(4);
// DMA->CR &=~DMA_CR_EMLM_MASK;
SIM_ModuleClockSet(SIM_DMAMUX,ENABLE);
DMAMUX->CHCFG[1]|=DMAMUX_CHCFG_SOURCE(40);
DMA->SERQ|=DMA_CERQ_CERQ(1);
DMAMUX->CHCFG[1]|=DMAMUX_CHCFG_ENBL_MASK;
用的是AD采样,DMA传输数据,,AD采样肯定没有问题,,但是DMA就是老是出错,无论我地址偏移和字节量怎么传输,DMA的ES寄存器总会出现800001c8
附上1c8的错误指示
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
有时细节确实很烦人,好在问题解决啊,以后有问题再交流!!
我最近也在自己配置DMA,也是没有成功,就是这个寄存器额问题,
我看到有好几个寄存器都需要先清零再写,哎,估计我就是这个地方出错了。
我找不到官方的参考程序,要是有就好了。
我就在设置寄存器前清了一次零,就行了,,然后中断的话,有两个方面要配置,一是内核的中断要打开,另一个是DMA的中断要配置好,然后就行了,另外中断服务函数不要写错了,负责,整个程序都会出问题
谢谢了,我再试试,肯定可以的,等好了我把我的错去贴出来大家都注意注意
一周热门 更多>