第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文章
17787瀏覽量
193077 -
存儲器
+關注
關注
39文章
7738瀏覽量
171650 -
數據傳輸
+關注
關注
9文章
2201瀏覽量
67579
原文標題:DMAC/DTC:直接存儲器訪問與數據傳輸——瑞薩RA系列FSP庫開發實戰指南(51)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
瑞薩RA系列MCU中的DTC模塊框圖分析
瑞薩RA6M4系列DMAC和ADC的詳細介紹(1)
瑞薩RA系列MCU中的DMAC和DTC模塊簡介
評論