19.2
DMAC模塊框圖分析

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


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

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

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

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


-
寄存器
+關注
關注
31文章
5590瀏覽量
129249 -
瑞薩
+關注
關注
36文章
22437瀏覽量
89905 -
中斷
+關注
關注
5文章
913瀏覽量
43598 -
傳輸模式
+關注
關注
0文章
10瀏覽量
7135
原文標題:DMAC模塊框圖分析——瑞薩RA系列FSP庫開發實戰指南(52)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
瑞薩RA6M4系列DMAC和ADC的詳細介紹(1)
瑞薩RA系列MCU中的DMAC和DTC模塊簡介

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