第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事件链接激活:
每次数据传输后都会生成一个事件链接请求(对于块传输,在每个块传输后)
![]()
-
控制器
+关注
关注
114文章
17638浏览量
190164 -
存储器
+关注
关注
39文章
7714浏览量
170797 -
数据传输
+关注
关注
9文章
2075浏览量
67162
原文标题:DMAC/DTC:直接存储器访问与数据传输——瑞萨RA系列FSP库开发实战指南(51)
文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
瑞萨RA系列MCU中的DTC模块框图分析
瑞萨RA6M4系列DMAC和ADC的详细介绍(1)

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