完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位大哥,能帮小弟看一下有关DMA的设置这段不。
DMACH1BurstConfig(16,1,1); DMACH1TransferConfig(63,-16,0); DMACH1WrapConfig(66,0,66,16); DMACH1ModeConfig(DMA_SEQ1INT,PERINT_ENABLE,ONESHOT_ENABLE,CONT_DISABLE,SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,CHINT_END,CHINT_ENABLE); 这样设置的话不是意味着要在ADC采样的结果寄存器,转移64次数据才产生一个DMA中断吗? 我的理解是如果AD采样频率是64HZ的话,DMA的中断频率差不多是1HZ。 然而我不论是设置采样频率为2000HZ还是2HZ,DMA产生中断的频率都没有变化。 不知道是我理解有错还是什么原因,恳请各位指导。谢谢。 |
|
相关推荐
2个回答
|
|
首先你的DMACH1BurstConfig(16,1,1)就有问题,后面地址偏移时肯定会出问题,你改成DMACH1BurstConfig(15,1,1);还有这一句DMACH1ModeConfig(DMA_SEQ1INT,PERINT_ENABLE,ONESHOT_ENABLE,CONT_DISABLE,SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,CHINT_END,CHINT_ENABLE);这个ONESHOT_ENABLE要改成disable
最佳答案
|
|
|
|
void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source)
源地址有两个,一个A为用于传输时(随每个字节递增),另一个B作为返回的备份(当一帧结束后,重新装载入A) 目的地址有两个,一个A为用于传输时(随每个字节递增),另一个B作为返回的备份(当一帧结束后,重新装载入A) 每次启动DMA相应通道,都会把B装载入A void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 de***step) Bsize: 每一个脉冲传递的字的个数,实际脉冲数为bsize+1 Srcbstep:每传递一个字后,源地址A增量 De***step:每传递一个字后,目的地址A增量 void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) Tsize:每一帧的脉冲个数,脉冲递减到0时(即一帧传递完成,也是DMA传递完成),产生DMA中断。实际帧数为tsize+1 Srctstep:每个脉冲的最后一个字传递结束后,源地址A增量 Deststep:每个脉冲的最后一个字传递结束后,目的地址A增量 void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) Srcwsize:当已经传递的脉冲数为srcwsize+1的整数倍时,源地址(B)增加srcwstep(常为0),并装载入源地址A Deswsize:当已经传递的脉冲数为deswsize+1的整数倍时,目的地址(B)增加deswstep(常为0),并装载入目的地址A void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) Persel:选择触发DMA的外设中断源 Perinte:外设中断使能, Oneshot:使能时,外设产生一次中断,就能够把一帧传递完。禁止,外设产生一次中断,只能传递一个脉冲 Cont:使能时,每次DMA结束后,需要再次启动DMA时,就不需要调用void StartDMACH1(void)。禁止时,重启DMA,需要调用void StartDMACH1(void) Datasize:设置每个字是16位或者32位 Chintmode:设置DMA中断是在DMA启动或者结束时产生 Chinte:DMA相应通道的中断使能(外设级)。 注:Perinte和Chinte同时使能时,才能进入DMA通道中断 仅Perinte使能,可以传输数据,但是不进入通道的中断程序 void StartDMACH1(void) 首次启动DMA,若Cont为禁止,每次DMA结束后,需要再次启动DMA时需要调用 只开启相应用于触发的外设级中断,不开启PIE对应位,则能够触发DMA而不触发CPU的中断程序 经过DMACH1ModeConfig配置的中断,DMA会自动清除相应外设级的中断标志位,不用程序清除 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2343 浏览 0 评论
681 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2780 浏览 0 评论
3541 浏览 1 评论
1194 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:52 , Processed in 0.497050 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号