社区导航

 

搜索
查看: 870|回复: 0

[分享] 学习TMS320F28335了解一下 DMA配置详解

[复制链接]

1570

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-2-6 18:54 | 显示全部楼层 |阅读模式

     DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。它的优点在于一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。不需要依于CPU的大量中断负载,从而节省大量的CPU资源。

      TMS320F28335具有6通道DMA,而且每个通道具有独立的PIE中断。DMA的触发源种类有很多,可以配置为ADC、MCBSPs、外部中断、CPU定时器、ePWM1-6 ADCSOCA and ADSOCB和软件等出发方式。DMA可以对L4-L7 16Kx16 SARAM、XINTF外部接口、ADC、MCBSPs、ePWM1-6/HRPWM1-6映射到Peripheral Frame 3空间的寄存器进行数据操作。工作方式可以配置为32位或者16位。吞吐量最高为4时钟/字。需要注意的是,当DMA对MCBSPs进行数据操作时,只能配置为16位工作模式,而且最大的吞吐量为5时钟/字。

 

具体原因参考一下TI的数据手册。

下面以TI的例程为例详细讲解一下DMA配置。

28335 DMA的配置主要是一下几个函数,可以在DSP2833x_DMA.c找到。

函数及配置详解:

void DMACHxAddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source)
参数解析:配置DMA的数据目的地址和源地址(跟函数中参数的排序相同,下同)。

void DMACHxBurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep)
参数解析:配置每帧大小、帧内源地址增加偏移和帧内源地址增加偏移。地址增加偏移就是指传输一个字(或帧)之后地址增量。

void DMACHxTransferConfig(Uint16 tsize, int16 srctstep, int16 deststep)
参数解析:配置每次触发DMA转移多少帧、帧间源地址增加偏移和帧间源地址增加偏移。

void DMACHxWrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep)
参数解析:配置源地址偏移总量、重载的源地址、目的地址偏移总量、重载的目的地址。也就是说在源地址(或者目的地址)偏移量超过所设置的偏移总量的时候重载所设置的新的源地址(或者目的地址)。我是这么理解的。

void DMACHxModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte)
参数解析:配置触发源选择、触发源使能、ONESHOT使能、继续模式使能、外设同步使能、同步对象选择(源同步还是目的同步)、溢出中断使能、工作方式选择(16位还是32位)、产生中断模式选择(开始还是结束)、产生中断使能。

大约就这些了。具体该配置成个什么样子还是去看手册吧。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-27 17:58 , Processed in 0.096327 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表