MSPM0L1306开发板教程之DMA

描述

DMA使用是一个不需要CPU干预,自己搬运数据的模块,在前面讲中断事件的章节里面,就有提到过事件的DMA通道,DMA事件路由(DMA Event Route)。

数据表

MSPM0L系列提供了6中DMA工作模式,除了比较常见的固定地址到固定地址(Fixed Address To Fixed Address),固定地址到地址块(Fixed Address To Block Of Address),地址块到固定(Block Of Address To Fixed Address),地址块到地址块( Block Of Address To Block Of Address)。

数据表

还提供了填数据到地址块(Fill Data To Block Of Address),数据表到特定地址(Data Table To Specific Address)功能。

数据表

填数据到地址块(Fill Data To Block Of Address)功能是用来快速生成一个等距数组,间距可以选择±1,±2,±4,±8四个选项,DMA会把源地址中填入的数据当做起始数据,然后进行加减间距,填到目标地址中。

数据表到特定地址(Data Table To Specific Address)功能,就是DMA顺序读两次源地址中的数据,把第一个数据当做目标地址的地址,第二个数据当做目标地址的数据,依次填入对应的RAM中。

这里就接着上一次的UART的使用教程,上一次UART发送收到的信息是使用的中断的方式,这次的程序使用UART接收中断触发DMA,DMA再把收到的信息通过UART发送出去。

在上次UART的SYSCONFIG配置中,在UART选项页面配置DMA。

数据表

DMA的触发源选择UART的接收中断,会生成一个DMA通道的配置,因为是把串口接收寄存器中的数据搬运到串口的发送寄存器,所以选择的是固定地址到固定地址的发送,每次触发发送为1个字节,发送模式选择Repeat Single,如果不是Repeat的话,DMA会在发送完成传输次数(Transfer Size)后关闭DMA通道。

再到程序中,配置也比较简单,只需要手动配置好源地址和目标地址,使能DMA即可。

数据表

配套的工程文件名为DMA,需要复制到SDK目录下运行。

DMA的触发源比较多,在mspm0l1306.h中可以找到对应芯片支持的触发源。

数据表

可以看到除了除了DMA事件路由和软件触发外,还支持通用事件路由。

其实DMA的中断除了可以中断CPU,也可以产生通用路由事件做其他控制用,这样就可以最大程度的较少CPU的干预,提升效率,降低功耗。

数据表

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分