扫一扫,访问微社区
7
293
0
常驻嘉宾
荔枝糖葫芦 发表于 2012-2-16 18:03 我感觉我也是地址那里没有设置好,minor loop和major loop,dlast、citer与nbytes的关系还没搞太清楚…… ...
使用道具 举报
11
280
杰出人士
真·打酱油
月下听蝉 发表于 2012-2-16 18:09 能不能连续触发并有效地传数组
荔枝糖葫芦 发表于 2012-2-16 18:11 连续触发没问题,但是数据有没有效不知道……数组里的数据全满了,其他的就不知道了……
月下听蝉 发表于 2012-2-16 18:13 求代码参考
void DMA1_Init(void) { SIM_SCGC6|=SIM_SCGC6_DMAMUX_MASK;//打开DMA多路复用器时钟 SIM_SCGC7|=SIM_SCGC7_DMA_MASK;//打开DMA模块时钟 DMAMUX_CHCFG1=DMAMUX_CHCFG_SOURCE(52);//DMA通道1对应52号DMA请求,即PORTD DMA_ERQ|=DMA_ERQ_ERQ1_MASK;//使能通道1硬件DMA请求 DMA_TCD1_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(10);//当前主循环次数 DMA_TCD1_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(10);//起始主循环次数 DMA_TCD1_SADDR=(uint32)&GPIOB_PDIR;//设置源地址GPIO口 DMA_TCD1_SOFF=0;//源地址不变 //DMA_TCD1_NBYTES_MLOFFYES=DMA_NBYTES_MLOFFYES_NBYTES(1)+DMA_NBYTES_MLOFFNO_SMLOE_MASK+DMA_NBYTES_MLOFFYES_MLOFF(-4);//传送4字节 DMA_TCD1_NBYTES_MLNO=DMA_NBYTES_MLNO_NBYTES(1);//每次读取一字节 DMA_TCD1_SLAST=0;//主循环结束后源地址0回写tcd DMA_TCD1_DLASTSGA=0;//主循环结束后目的地址-10回写tcd DMA_TCD1_DADDR=(uint32)PORTB_BUFF;//设置目的地址 DMA_TCD1_DOFF=1;//每次写目的地址加1 DMA_TCD1_ATTR=DMA_ATTR_SSIZE(0)+DMA_ATTR_DSIZE(0);//源数据宽度8bit,目的数据宽度8bit DMA_TCD1_CSR=0; DMAMUX_CHCFG1|=DMAMUX_CHCFG_ENBL_MASK;//DMA通道使能 //DMA_TCD1_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA中断 //DMA_TCD0_CSR|=DMA_CSR_START_MASK; }
荔枝糖葫芦 发表于 2012-2-16 18:17 队长说只能给参考代码……
月下听蝉 发表于 2012-2-16 18:25 要不我发代码给你,你帮我看看哪里错
荔枝糖葫芦 发表于 2012-2-16 18:34 估计咱们水平都差不多……邮箱通过消息发给你了~
2
284
金牌会员
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号 )
GMT+8, 2025-1-24 14:56 , Processed in 0.048465 second(s), 25 queries , Gzip On.
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.