DSP论坛
直播中

蒋增华

9年用户 50经验值
擅长:嵌入式技术
私信 关注

【创龙TMS320C6748试用】用定时器实现EDMA3的数据定时传输(或搬移)

                     用定时器实现EDMA3的数据定时传输(或搬移)
    开始之前,要感谢在我前一个帖子给我回复的人,是他们帮助我解决了这个问题!
    下面开始进入正题,如标题,这次是要实现用定时器实现EDMA3对数据的定时搬移,这种方法可用于将来在使用AD采集数据的时候,可以定时对采集的数据通过EDMA3传输到相应位置,然后对其进行数据处理,处理完成后,同样可以用这种方法将数据传送至上位机。
     现阶段为了简单起见,可将某一个变量的值复制到另一个变量,归根究底也是实现了数据的搬移。这种方法是可以应用到前面所说的情况中的。
     1、多说无益,直接上代码,第一步当然还是对外设使能初始化 1.png 这里选择通道控制器CC0以及传输控制器TC0

    2、然后进行DSP中断初始化,中断初始化基本都一样,故不用多说
2.png

    3、接着进行定时器中断初始化
3.png

这里选择非捕获模式下的tiM12, 如选择TMR_INT_TMR12_NON_CAPT_MODE,查看技术手册
4.png ,可以知道TIM12具有事件输出功能,同时选择基地址为Timer0,同时对EDMA3的传输进行初始化

     4、对EDMA3初始化
5.png 注意这里利用一维传输,
将源变量StringScr={1,2,3,4,5,5,4,3,2,1,6,7,8,9,10,10,9,8,7,6}转移到目的变量StringDst,还包括申请 EDMA3 通道、写参数 RAM、使能EDMA3传输等另外”paramSet.opt=0x906000u;“主要是设置传输为一维传输;注意chNum=10, tccNum=10即是设置在CC0和TC0的情况下,通过TIM12定时器进行触发
    5、下面对定时器其进行初始化
6.png 这里选择与TIM12定时器的相关设置,定时时间由“#define TMR_PERIOD_32   (5 * 24 * 1000 * 1000)”,可以知道定时时间为5s。这里设置定时器只进行一次定时,由“TMR_ENABLE_ONCE”体现。


到这里基本设置已经完成,上面的各个函数的配置顺序可交换,然后将上述的函数放到main()中即可实现

下面为调试后的结果:
程序运行前,变量StringScr和StringDst的值
7.png 8.png

程序运行后,StringDst的值
9.png

可以看到已经完成了对数据的搬移。


回帖(2)

cchdd901021

2016-6-3 17:36:26
好东西,学习下
举报

韩震

2017-8-31 22:15:30
定时器连续工作状态只会产生一次DMA事件,这是为什么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分