19.2
DMAC模塊框圖分析

19.2.1
DMAC激活源
軟件觸發(fā)、來自外設模塊的中斷請求和外部中斷請求都可以指定為DMAC激活源。DMAC激活源是在DMTMD寄存器的DCTG[1:0]位進行設置。
19.2.1.1
通過軟件激活DMAC
我們可以選擇通過軟件啟動DMA進行傳輸,也就是不使用片上外設模塊和外部中斷的中斷請求進行激活DMAC,而是手動地激活DMA進行傳輸。
19.2.1.2
通過來自片上外設模塊或外部中斷的中斷請求激活DMAC
除了通過軟件手動激活DMAC,還可以通過片上外設模塊的中斷請求或外部中斷請求激活DMAC。
我們可以將片上外設模塊的中斷請求和外部中斷請求設置為DMAC的激活源??梢酝ㄟ^ICU的DELSRn寄存器的DELS[8:0]位(n=0~7)為每個通道單獨選擇激活源。
19.2.2
中斷優(yōu)先級
當存在多個DMA傳輸請求時,DMAC確定具有DMA傳輸請求的通道的優(yōu)先級。通道優(yōu)先級固定如下:通道0>通道1>通道2>通道3…>通道7(通道0:優(yōu)先級最高)
當在數(shù)據傳輸期間產生DMA傳輸請求時,在最終數(shù)據已傳輸之后開始通道仲裁,并且開始優(yōu)先級較高的通道的DMA傳輸。
19.2.3
事件鏈接
每個DMAC通道在每次完成數(shù)據傳輸或塊傳輸模式下的塊傳輸時,都會輸出一個事件鏈接請求信號 (DMACn_INT)。當傳輸目的地是外部總線時,在寫入緩沖區(qū)操作被接受時會產生一個事件鏈接請求信號。有關詳細信息,可以查看事件鏈接控制器 (ELC)章節(jié)。如果寫入傳輸?shù)淖詈髷?shù)據時發(fā)生總線錯誤,則會發(fā)生傳輸結束事件和錯誤響應檢測中斷(DMA_TRANSERR)。
19.3
DMAC傳輸模式
DMAC有4種傳輸模式:
正常模式(Normal Mode):在正常模式下,DMAC通道每次接收到配置的激活源時都會傳輸單個數(shù)據單元。數(shù)據單元可以是1字節(jié)、2字節(jié)或4字節(jié)。在每次傳輸之后,源地址和目的地址可以是固定、遞增、遞減,或者向下一個數(shù)據單元添加偏移量。16位計數(shù)器在每次傳輸后遞減。當計數(shù)器達到0時,傳輸將不再由激活源觸發(fā),并且可以發(fā)出所有傳輸已完成的信號以中斷CPU。
重復模式(Repeat Mode):重復模式的工作方式與正常模式相同,但長度限制為范圍[1,1024]內的整數(shù)。當傳輸計數(shù)器達到0時,計數(shù)器被重置為其配置值,重復區(qū)域(源或目的地址)被重置到其起始地址,剩余的塊計數(shù)將遞減1。當塊計數(shù)達到0時,傳輸將不再由激活源觸發(fā),并且可配置傳輸完成中斷。
塊模式(Block Mode):在塊模式下,每個中斷傳輸?shù)臄?shù)據單元量可以設置為范圍[1,1024]內的整數(shù)。還可以將要傳輸?shù)膲K數(shù)配置為16位數(shù)字。每次塊傳輸后,重復區(qū)域(源或目的地址)將重置為原始地址,而另一個地址將遞增或遞減到下一個塊。
重復-塊模式(Repeat-Block Mode):在重復-塊模式下,每個中斷傳輸?shù)臄?shù)據單元量可以設置為范圍[1,1024]內的整數(shù)??梢詫⒁獋鬏?shù)膲K的數(shù)量配置為16位數(shù)字(最大可設置重復大小為 64K,即65536)。
如果目標地址模式為偏移模式,則數(shù)據傳輸大小為字節(jié)的塊大小(長度)的最大可配置塊數(shù)為 0xFFFF,數(shù)據傳輸大小為半字的塊大小為 0x7FFF,數(shù)據大小為字的塊大小為0x3FFF。在每個塊傳輸之后,源地址和目的地址將遞增或遞減到下一個塊地址。
對于源地址的偏移地址模式,源地址大小是源緩沖區(qū)的總大小,之后源區(qū)域被翻轉,塊大小可以小于源緩沖區(qū)大小。對于源地址模式作為偏移模式,最大可配置的源緩沖區(qū)大小為0xFFFF用于一個字節(jié)的傳輸數(shù)據大小,0x7FFF用于半字的傳輸數(shù)據大小和0x3FFF用于字的傳輸數(shù)據大小。
采用重復-塊模式可以實現(xiàn)單環(huán)形緩沖區(qū)到多環(huán)形緩沖區(qū)的傳輸類型設計。
19.3.1
正常傳輸模式
在正常傳輸模式(Normal Transfer Mode)下,一個傳輸請求傳輸一個數(shù)據。使用DMCRAL寄存器可以將最大65535設置為傳輸操作數(shù)。當這些位設置為0x0000時,不設置特定數(shù)量的傳輸操作;在傳輸計數(shù)器停止的情況下執(zhí)行數(shù)據傳輸(自由運行功能)。在正常傳輸模式下,設置DMCRB寄存器無效。除自由運行功能外,在完成指定數(shù)量的傳輸操作后,可以生成傳輸結束中斷請求。
表1:正常傳輸模式下的寄存器更新操作


19.3.2
重復傳輸模式
在重復傳輸模式(Repeat Transfer Mode)下,發(fā)起一次傳輸請求,傳輸一個數(shù)據。
通過設置DMCRA寄存器,最多可以將1K數(shù)據設置為總重復傳輸大??;通過設置DMCRB寄存器可以將最大64K設置為重復傳輸操作次數(shù)。
所以,我們可以將最大64M數(shù)據(1K數(shù)據×64K重復傳輸操作計數(shù))設置為總數(shù)據傳輸大小。
可以將傳輸源地址或傳輸目的地址設置為重復區(qū)域。當指定重復大小數(shù)據的傳輸完成時,DMAC將會把重復區(qū)域的地址重新設置為傳輸開始地址,也就是一個循環(huán)的過程。
當完成指定的重復傳輸次數(shù)后,可以產生傳輸完成中斷;當每完成一次循環(huán)的過程都可以產生一次中斷。
通過將DMCNT寄存器的DTE位置1,可以恢復DMA傳輸。
在完成指定數(shù)量的重復傳輸操作后,可以生成傳輸結束中斷請求。

19.3.3
塊傳輸模式
在塊傳輸模式下(Block Transfer Mode),單個塊數(shù)據通過一個傳輸請求傳輸。
使用DMCRA寄存器,最多可以將1K數(shù)據設置為總塊傳輸大小。
使用DMCRB寄存器可以將最大64K設置為塊傳輸操作數(shù);因此,可以將最大64M數(shù)據(1K數(shù)據×64K 塊傳輸操作計數(shù))設置為總數(shù)據傳輸大小。
可以將傳送源或傳送目的地指定為塊區(qū)域。當單個塊數(shù)據的傳輸完成時,指定塊區(qū)域(DMSAR或 DMDAR)的地址返回到傳輸開始地址。當單塊數(shù)據在塊傳輸模式下全部傳輸完畢時,可停止DMA傳輸,并可請求重復大小結束中斷。通過將1寫入重復大小結束中斷處理中的DMCNT.DTE位,可以恢復DMA傳輸。
傳輸結束中斷請求可以在完成指定數(shù)量的塊傳輸操作后生成。

19.3.4
重復-塊傳輸模式
重復-塊傳輸模式(Repeat-Block Transfer Mode),主要在塊模式基礎上增加了一些功能:
重復功能:添加功能(環(huán)形緩沖區(qū))以重復指定的地址區(qū)域。
偏移功能:可以在一個塊傳輸中指定具有偏移的多個區(qū)域。
重復功能和偏移功能可用于重復塊傳輸?shù)膫鬏斣春蛡鬏斈康牡亍?/p>
在重復塊傳輸模式下,單個塊數(shù)據通過一個傳輸請求傳輸。
使用DMACn的DMCRA可以將最多1K數(shù)據設置為總的塊傳輸大小。使用DMACn的DMCRB的塊傳輸操作的數(shù)量可以設置為最大64K;因此,可以將最大64M數(shù)據(1K數(shù)據×64K塊傳輸操作計數(shù))設置為總數(shù)據傳輸大小。
下圖是在重復-塊傳輸模式下的示例

下圖是在重復-塊傳輸模式下,帶偏移增加的示例


-
寄存器
+關注
關注
31文章
5584瀏覽量
128974 -
瑞薩
+關注
關注
36文章
22428瀏覽量
89678 -
中斷
+關注
關注
5文章
912瀏覽量
43536 -
傳輸模式
+關注
關注
0文章
10瀏覽量
7133
原文標題:DMAC模塊框圖分析——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(52)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA6M4系列DMAC和ADC的詳細介紹(1)
瑞薩RA系列MCU中的DMAC和DTC模塊簡介
瑞薩電子RA系列MCU解決智能物聯(lián)網系統(tǒng)開發(fā)痛點

瑞薩RA系列MCU中的DMAC模塊框圖分析
評論