19.2
DMAC模塊框圖分析

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


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

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

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

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


-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
130013 -
瑞薩
+關(guān)注
關(guān)注
37文章
22482瀏覽量
90900 -
中斷
+關(guān)注
關(guān)注
5文章
917瀏覽量
43770 -
傳輸模式
+關(guān)注
關(guān)注
0文章
10瀏覽量
7142
原文標(biāo)題:DMAC模塊框圖分析——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(52)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
瑞薩RA6M4系列DMAC和ADC的詳細(xì)介紹(1)
瑞薩RA8系列高性能MCU開發(fā)上手體驗(yàn)
瑞薩RA系列MCU中的DMAC和DTC模塊簡介
瑞薩電子RA系列MCU解決智能物聯(lián)網(wǎng)系統(tǒng)開發(fā)痛點(diǎn)
瑞薩RA系列MCU中的DMAC模塊框圖分析
評(píng)論