瑞萨RA系列MCU中的DMAC和DTC模块简介

描述

第19章

DMAC/DTC——直接存储器访问与数据传输

19.1

DMAC和DTC模块简介

DMAC(Direct Memory Access Controller)为直接存储器访问控制器或者直接内存访问控制器,可以在不占用CPU的情况下将数据从一个内存位置传输到另一个内存位置。

DTC(Data Transfer Controller)为数据传输控制器,用于在被中断请求激活时传输数据。DTC也可以在不占用CPU的情况下将数据传输,它的功能与DMAC的功能其实是相似的。

DMAC和DTC它们的主要功能都是用来搬数据,但是却不需要占用CPU,即在传输数据的时候,不需要CPU去读取数据,在此期间CPU完全可以干其他的事情,类似于多线程一样。数据传输支持从外设到存储器或者存储器到存储器,这里的存储器可以是SRAM或者FLASH。实际上,我们前面有讲过,外设寄存器也是一种存储器。

DMAC和DTC实际上还是会有区别的,正因为有所区别,在不同的情况下需要考虑是使用DMAC还是DTC更加合适。下面就让我们来了解一下DMAC和DTC这两个模块的一些特性。

19.1.1

DMAC特性

RA6M5包括一个8通道的直接内存访问控制器(DMAC),可以在不需要CPU干预的情况下传输数据。当产生DMA传输请求时,DMAC将存储在传输源地址的数据传输到传输目标地址。

DMAC外设模块特性如下:

1通道数:8个通道(Channel 0通道的优先级最高)

2传输可寻址空间:4GB(0x00000000~0xFFFFFFFF,不包含保留区域)

3最大传输量:64M数据(块传输模式下的最大传输数:1024×65536个块)

4DMAC激活源(每个通道单独可选):

软件触发

来自外设模块或者外部中断输入引脚的中断请求

5传输数据:

单个数据单元:1字节(8 bits),2字节(16 bits),4字节(32 bits)

单个块的大小(Block size):1~1024个数据单元

6传输模式:

正常传输模式(Normal Transfer Mode)

触发一次DMA传输请求时传输1个数据单元

可选的自由运行功能(Free-running function)

重复传输模式(Repeat Transfer Mode)

触发一次DMA传输请求时传输1个数据单元

当指定重复大小的数据传输完成后,程序重置传输起始地址从而实现重复传输。

最大可设置重复大小:1024个数据单元(同块大小)

可选的自由运行功能(Free-running function)

块传输模式(Block Transfer Mode)

触发一次DMA传输请求时传输1个块数据

最大可设置块大小:1024个数据单元

可选的自由运行功能(Free-running function)

重复-块传输模式(Repeat-block Transfer Mode)

触发一次DMA传输请求时传输1个块数据

最大可设置块大小:1024个数据单元

块传输可以重复

最大可设置重复大小:65536个块

可选的自由运行功能(Free-running function)

7扩展重复区域功能(可选功能):

可以通过重复指定范围内的地址值来传输数据的功能,其中传输地址寄存器中的高位值是固定的

2字节至128M字节的区域可单独设置为传输源和目标的扩展重复区域

8中断(中断频率):

全部传输完成后中断(传输结束中断):

传输计数器指定的传输数据量完成时产生

每次传输完成都产生中断(传输转义结束中断):

当重复大小的数据传输完成时产生

当源地址扩展重复区域溢出时产生

当目标地址扩展重复区域溢出时产生

错误响应检测中断:

DMAC传输发生错误时产生

9事件链接激活:

每次数据传输后都会生成一个事件链接请求(对于块传输,在每个块传输后)

19.1.2

DTC特性

数据传输控制器(DTC)模块用于在被中断请求激活时传输数据。

DTC外设模块特性如下:

1传输模式:

正常传输模式(Normal Transfer Mode)

单次激活时触发单个数据单元的传输

重复传输模式(Repeat Transfer Mode)

单次激活时触发单个数据单元的传输

数据传输次数达到指定的重复大小后,传输地址重置回起始地址

最大重复传输次数为256,最大数据传输大小为256×32位(1024字节)

块传输模式(Block Transfer Mode)

单次激活时触发单个块的传输

最大的块大小为256×32位(1024字节)

2传输通道:

传输通道与中断源相关联(通过来自ICU的DTC激活请求传输)

可以在单个激活源上传输多个数据单元(链式传输)

链传输可以选择在计数器为0时执行,也可以选择始终执行

3传输可寻址空间:

4GB(0x00000000~0xFFFFFFFF,不包含保留区域)

4传输数据:

单个数据单元:1字节(8 bits),1 半字(16 bits),1字(32 bits)

单个块的大小(Block size):1~256个数据单元

5CPU中断源:

可以在触发DTC激活的中断向CPU生成中断请求

可以在单次数据传输之后向CPU生成中断请求

可以在指定量的数据传输之后向CPU生成中断请求

6错误响应检测中断:

发生DTC传输错误时生成

7事件链接激活:

每次数据传输后都会生成一个事件链接请求(对于块传输,在每个块传输后)

 

存储器

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

全部0条评论

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

×
20
完善资料,
赚取积分