在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DMA技術(shù)原理

sally100 ? 來源:數(shù)字ICer ? 作者:數(shù)字ICer ? 2022-11-16 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DMA,全稱Direct Memory Access,即直接存儲(chǔ)器訪問。

DMA傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。 我們知道CPU有轉(zhuǎn)移數(shù)據(jù)、計(jì)算、控制程序轉(zhuǎn)移等很多功能,系統(tǒng)運(yùn)作的核心就是CPU,CPU無時(shí)不刻的在處理著大量的事務(wù),但有些事情卻沒有那么重要,比方說數(shù)據(jù)的復(fù)制和存儲(chǔ)數(shù)據(jù),如果我們把這部分的CPU資源拿出來,讓CPU去處理其他的復(fù)雜計(jì)算事務(wù),是不是能夠更好的利用CPU的資源呢? 因此:轉(zhuǎn)移數(shù)據(jù)(尤其是轉(zhuǎn)移大量數(shù)據(jù))是可以不需要CPU參與。比如希望外設(shè)A的數(shù)據(jù)拷貝到外設(shè)B,只要給兩種外設(shè)提供一條數(shù)據(jù)通路,直接讓數(shù)據(jù)由A拷貝到B不經(jīng)過CPU的處理。

a8ec61d4-657b-11ed-8abf-dac502259ad0.png

DMA就是基于以上設(shè)想設(shè)計(jì)的,它的作用就是解決大量數(shù)據(jù)轉(zhuǎn)移過度消耗CPU資源的問題。有了DMA使CPU更專注于更加實(shí)用的操作–計(jì)算、控制等。

01DMA定義:

DMA用來提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無須CPU的干預(yù),通過DMA數(shù)據(jù)可以快速地移動(dòng)。這就節(jié)省了CPU的資源來做其他操作。

02DMA傳輸方式

DMA的作用就是實(shí)現(xiàn)數(shù)據(jù)的直接傳輸,而去掉了傳統(tǒng)數(shù)據(jù)傳輸需要CPU寄存器參與的環(huán)節(jié),主要涉及四種情況的數(shù)據(jù)傳輸,但本質(zhì)上是一樣的,都是從內(nèi)存的某一區(qū)域傳輸?shù)絻?nèi)存的另一區(qū)域(外設(shè)的數(shù)據(jù)寄存器本質(zhì)上就是內(nèi)存的一個(gè)存儲(chǔ)單元)。四種情況的數(shù)據(jù)傳輸如下:

外設(shè)到內(nèi)存

內(nèi)存到外設(shè)

內(nèi)存到內(nèi)存

外設(shè)到外設(shè)

03DMA傳輸參數(shù)

我們知道,數(shù)據(jù)傳輸,首先需要的是1數(shù)據(jù)的源地址,2數(shù)據(jù)傳輸位置的目標(biāo)地址,3傳遞數(shù)據(jù)多少的數(shù)據(jù)傳輸量,4進(jìn)行多少次傳輸?shù)膫鬏斈J剑珼MA所需要的核心參數(shù),便是這四個(gè)。

當(dāng)用戶將參數(shù)設(shè)置好,主要涉及源地址、目標(biāo)地址、傳輸數(shù)據(jù)量這三個(gè),DMA控制器就會(huì)啟動(dòng)數(shù)據(jù)傳輸,當(dāng)剩余傳輸數(shù)據(jù)量為0時(shí) 達(dá)到傳輸終點(diǎn),結(jié)束DMA傳輸 ,當(dāng)然,DMA 還有循環(huán)傳輸模式當(dāng)?shù)竭_(dá)傳輸終點(diǎn)時(shí)會(huì)重新啟動(dòng)DMA傳輸。也就是說只要剩余傳輸數(shù)據(jù)量不是0,而且DMA是啟動(dòng)狀態(tài),那么就會(huì)發(fā)生數(shù)據(jù)傳輸。

a8fedfa8-657b-11ed-8abf-dac502259ad0.png

04DMA的主要特征

每個(gè)通道都直接連接專用的硬件DMA請(qǐng)求,每個(gè)通道都同樣支持軟件觸發(fā)。這些功能通過軟件來配置:

在同一個(gè)DMA模塊上,多個(gè)請(qǐng)求間的優(yōu)先權(quán)可以通過軟件編程設(shè)置(共有四級(jí):很高、高、中等和低),優(yōu)先權(quán)設(shè)置相等時(shí)由硬件決定(請(qǐng)求0優(yōu)先于請(qǐng)求1,依此類推);

獨(dú)立數(shù)據(jù)源和目標(biāo)數(shù)據(jù)區(qū)的傳輸寬度(字節(jié)、半字、全字),模擬打包和拆包的過程。源和目標(biāo)地址必須按數(shù)據(jù)傳輸寬度對(duì)齊;

支持循環(huán)的緩沖器管理;

每個(gè)通道都有3個(gè)事件標(biāo)志(DMA半傳輸、DMA傳輸完成和DMA傳輸出錯(cuò)),這3個(gè)事件標(biāo)志邏輯或成為一個(gè)單獨(dú)的中斷請(qǐng)求;

存儲(chǔ)器和存儲(chǔ)器間的傳輸、外設(shè)和存儲(chǔ)器、存儲(chǔ)器和外設(shè)之間的傳輸;

閃存、SRAM、外設(shè)的SRAM、APB1、APB2和AHB外設(shè)均可作為訪問的源和目標(biāo);

可編程的數(shù)據(jù)傳輸數(shù)目:最大為65535。

05STM32少個(gè)DMA資源?

對(duì)于大容量的STM32芯片有2個(gè)DMA控制器,DMA1有7個(gè)通道,DMA2有5個(gè)通道。每個(gè)通道都可以配置一些外設(shè)的地址。

①DMA1 controller從外設(shè)(TIMx[x=1、2、3、4]、ADC1、SPI1、SPI/I2S2、I2Cx[x=1、2]和USARTx[x=1、2、3])產(chǎn)生的7個(gè)DMA請(qǐng)求,通過邏輯或輸入到DMA1控制器,其中每個(gè)通道都對(duì)應(yīng)著具體的外設(shè):

a9140de2-657b-11ed-8abf-dac502259ad0.png

a928f496-657b-11ed-8abf-dac502259ad0.png

② DMA2 controller從外設(shè)(TIMx[5、6、7、8]、ADC3、SPI/I2S3、UART4、DAC通道1、2和SDIO)產(chǎn)生的5個(gè)請(qǐng)求,經(jīng)邏輯或輸入到DMA2控制器,其中每個(gè)通道都對(duì)應(yīng)著具體的外設(shè):

a93dfb98-657b-11ed-8abf-dac502259ad0.png

a959d944-657b-11ed-8abf-dac502259ad0.png

這些在下方系統(tǒng)框圖中也可以清晰地看到。

06DMA工作系統(tǒng)框圖

a968b8d8-657b-11ed-8abf-dac502259ad0.png

上方的框圖,我們可以看到STM32內(nèi)核,存儲(chǔ)器,外設(shè)及DMA的連接,這些硬件最終通過各種各樣的線連接到總線矩陣中,硬件結(jié)構(gòu)之間的數(shù)據(jù)轉(zhuǎn)移都經(jīng)過總線矩陣的協(xié)調(diào),使各個(gè)外設(shè)和諧的使用總線來傳輸數(shù)據(jù)。我們對(duì)他來進(jìn)行一點(diǎn)一點(diǎn)的分析: 下面看有與沒有DMA的情況下,ADC采集的數(shù)據(jù)是怎樣存放到SRAM中的?沒有DMA:如果沒有DMA,CPU傳輸數(shù)據(jù)還要以內(nèi)核作為中轉(zhuǎn)站,比如要將ADC采集的數(shù)據(jù)轉(zhuǎn)移到到SRAM中,這個(gè)過程是這樣的: 內(nèi)核通過DCode經(jīng)過總線矩陣協(xié)調(diào),從獲取AHB存儲(chǔ)的外設(shè)ADC采集的數(shù)據(jù),然后內(nèi)核再通過DCode經(jīng)過總線矩陣協(xié)調(diào)把數(shù)據(jù)存放到內(nèi)存SRAM中。

a97f75fa-657b-11ed-8abf-dac502259ad0.png

在這里插入圖片描述

有DMA傳輸:有DMA的話,

DMA傳輸時(shí)外設(shè)對(duì)DMA控制器發(fā)出請(qǐng)求。

DMA控制器收到請(qǐng)求,觸發(fā)DMA工作。

DMA控制器從AHB外設(shè)獲取ADC采集的數(shù)據(jù),存儲(chǔ)到DMA通道中。

DMA控制器的DMA總線與總線矩陣協(xié)調(diào),使用AHB把外設(shè)ADC采集的數(shù)據(jù)經(jīng)由DMA通道存放到SRAM中,這個(gè)數(shù)據(jù)的傳輸過程中,完全不需要內(nèi)核的參與,也就是不需要CPU的參與。

a995d228-657b-11ed-8abf-dac502259ad0.png

在這里插入圖片描述

我們把上面的步驟專業(yè)一點(diǎn)介紹: 在發(fā)生一個(gè)事件后,外設(shè)向DMA控制器發(fā)送一個(gè)請(qǐng)求信號(hào)。DMA控制器根據(jù)通道的優(yōu)先權(quán)處理請(qǐng)求。當(dāng)DMA控制器開始訪問發(fā)出請(qǐng)求的外設(shè)時(shí),DMA控制器立即發(fā)送給它一個(gè)應(yīng)答信號(hào)。當(dāng)從DMA控制器得到應(yīng)答信號(hào)時(shí),外設(shè)立即釋放它的請(qǐng)求。一旦外設(shè)釋放了這個(gè)請(qǐng)求,DMA控制器同時(shí)撤銷應(yīng)答信號(hào)。DMA傳輸結(jié)束,如果有更多的請(qǐng)求時(shí),外設(shè)可以啟動(dòng)下一個(gè)周期。 總之,每次DMA傳送由3個(gè)操作組成:

從外設(shè)數(shù)據(jù)寄存器或者從當(dāng)前外設(shè)/存儲(chǔ)器地址寄存器指示的存儲(chǔ)器地址取數(shù)據(jù),第一次傳輸時(shí)的開始地址是DMA_CPARx或DMA_CMARx寄存器指定的外設(shè)基地址或存儲(chǔ)器單元;

存數(shù)據(jù)到外設(shè)數(shù)據(jù)寄存器或者當(dāng)前外設(shè)/存儲(chǔ)器地址寄存器指示的存儲(chǔ)器地址,第一次傳輸時(shí)的開始地址是DMA_CPARx或DMA_CMARx寄存器指定的外設(shè)基地址或存儲(chǔ)器單元;

執(zhí)行一次DMA_CNDTRx寄存器的遞減操作,該寄存器包含未完成的操作數(shù)目。

07DMA傳輸方式

方法1:DMA_Mode_Normal,正常模式

當(dāng)一次DMA數(shù)據(jù)傳輸完后,停止DMA傳送 ,也就是只傳輸一次。方法2:DMA_Mode_Circular ,循環(huán)傳輸模式當(dāng)傳輸結(jié)束時(shí),硬件自動(dòng)會(huì)將傳輸數(shù)據(jù)量寄存器進(jìn)行重裝,進(jìn)行下一輪的數(shù)據(jù)傳輸。也就是多次傳輸模式。

08仲裁器

a9a93c32-657b-11ed-8abf-dac502259ad0.png

仲裁器的作用是確定各個(gè)DMA傳輸?shù)膬?yōu)先級(jí)。 仲裁器根據(jù)通道請(qǐng)求的優(yōu)先級(jí)來啟動(dòng)外設(shè)/存儲(chǔ)器的訪問。 優(yōu)先權(quán)管理分2個(gè)階段: 軟件:每個(gè)通道的優(yōu)先權(quán)可以在DMA_CCRx寄存器中設(shè)置,有4個(gè)等級(jí):

最高優(yōu)先級(jí)

高優(yōu)先級(jí)

中等優(yōu)先級(jí)

低優(yōu)先級(jí);

硬件:如果2個(gè)請(qǐng)求有相同的軟件優(yōu)先級(jí),則較低編號(hào)的通道比較高編號(hào)的通道有較高的優(yōu)先權(quán)。比如:如果軟件優(yōu)先級(jí)相同,通道2優(yōu)先于通道4。 注意:在大容量產(chǎn)品和互聯(lián)型產(chǎn)品中,DMA1控制器擁有高于DMA2控制器的優(yōu)先級(jí)。

09DMA數(shù)據(jù)流

(僅存在于STM32F4 /M4 內(nèi)核上)

在設(shè)置了DMA的通道之后,還要選擇通道對(duì)應(yīng)外設(shè)的數(shù)據(jù)流。

8 個(gè) DMA 控制器數(shù)據(jù)流都能夠提供源和目標(biāo)之間的單向傳輸鏈路。每個(gè)數(shù)據(jù)流配置后都可以執(zhí)行:●常規(guī)類型事務(wù):存儲(chǔ)器到外設(shè)、外設(shè)到存儲(chǔ)器或存儲(chǔ)器到存儲(chǔ)器的傳輸。●雙緩沖區(qū)類型事務(wù):使用存儲(chǔ)器的兩個(gè)存儲(chǔ)器指針的雙緩沖區(qū)傳輸(當(dāng) DMA 正在進(jìn)行自/至緩沖區(qū)的讀/寫操作時(shí),應(yīng)用程序可以進(jìn)行至/自其它緩沖區(qū)的寫/讀操作)。要傳輸?shù)臄?shù)據(jù)量(多達(dá) 65535)可以編程,并與連接到外設(shè) AHB 端口的外設(shè)(請(qǐng)求 DMA 傳輸)的源寬度相關(guān)。每個(gè)事務(wù)完成后,包含要傳輸?shù)臄?shù)據(jù)項(xiàng)總量的寄存器都會(huì)遞減。 DMA_SxCR 寄存器控制數(shù)據(jù)流到底使用哪一個(gè)通道,每個(gè)數(shù)據(jù)流有 8 個(gè)通道可 供選擇,每次只能選擇其中一個(gè)通道進(jìn)行 DMA 傳輸。接下來,我們看看 DMA2 的各數(shù)據(jù)流通 道映射表,如表 28.1.1 所示:

a9b82972-657b-11ed-8abf-dac502259ad0.png

10DMA傳輸通道

每個(gè)通道都可以在有固定地址的外設(shè)寄存器和存儲(chǔ)器地址之間執(zhí)行DMA傳輸。DMA傳輸?shù)臄?shù)據(jù) 量是可編程的,大達(dá)到65535。包含要傳輸?shù)臄?shù)據(jù)項(xiàng)數(shù)量的寄存器,在每次傳輸后遞減。

可編程的數(shù)據(jù)量:外設(shè)和存儲(chǔ)器的傳輸數(shù)據(jù)量可以通過DMA_CCRx寄存器中的PSIZE和MSIZE位編程。

11指針遞增模式

根據(jù) DMA_SxCR 寄存器中 PINC 和 MINC 位的狀態(tài),外設(shè)和存儲(chǔ)器指針在每次傳輸后可以自動(dòng)向后遞增或保持常量。當(dāng)設(shè)置為增量模式時(shí),下一個(gè)要傳輸?shù)牡刂穼⑹乔耙粋€(gè)地址加上增量值。

通過單個(gè)寄存器訪問外設(shè)源或目標(biāo)數(shù)據(jù)時(shí),禁止遞增模式十分有用。 如果使能了遞增模式,則根據(jù)在 DMA_SxCR 寄存器 PSIZE 或 MSIZE 位中編程的數(shù)據(jù)寬度,下一次傳輸?shù)牡刂穼⑹乔耙淮蝹鬏數(shù)牡刂愤f增 1個(gè)數(shù)據(jù)寬度、2個(gè)數(shù)據(jù)寬度或 4個(gè)數(shù)據(jù)寬度。

12存儲(chǔ)器到存儲(chǔ)器模式

DMA通道的操作可以在沒有外設(shè)請(qǐng)求的情況下進(jìn)行,這種操作就是存儲(chǔ)器到存儲(chǔ)器模式。

當(dāng)設(shè)置了DMA_CCRx寄存器中的MEM2MEM位之后,在軟件設(shè)置了DMA_CCRx寄存器中的EN位啟動(dòng)DMA通道時(shí),DMA傳輸將馬上開始。當(dāng)DMA_CNDTRx寄存器變?yōu)?時(shí),DMA傳輸結(jié)束。存儲(chǔ)器到存儲(chǔ)器模式不能與循環(huán)模式同時(shí)使用。 這里要注意僅 DMA2 的外設(shè)接口可以訪問存儲(chǔ)器,所以僅 DMA2 控制器支持存儲(chǔ)器到存儲(chǔ)器的傳輸,DMA1 不支持。 存儲(chǔ)器到存儲(chǔ)器模式不能與循環(huán)模式同時(shí)使用。

13DMA中斷

每個(gè)DMA通道都可以在DMA傳輸過半、傳輸完成和傳輸錯(cuò)誤時(shí)產(chǎn)生中斷。為應(yīng)用的靈活性考慮,通過設(shè)置寄存器的不同位來打開這些中斷。

a9ca6664-657b-11ed-8abf-dac502259ad0.png

使沒開啟,我們也可以通過查詢這些位來獲得當(dāng)前 DMA 傳輸?shù)臓顟B(tài)。這里我們常用的是 TCIFx位,即數(shù)據(jù)流 x 的 DMA 傳輸完成與否標(biāo)志。 可編程的數(shù)據(jù)傳輸寬度、對(duì)齊方式和數(shù)據(jù)大小端 當(dāng)PSIZE和MSIZE不相同時(shí),DMA模塊按照下圖進(jìn)行數(shù)據(jù)對(duì)齊。 注意:在大容量產(chǎn)品中, DMA2 通道 4 和 DMA2 通道 5 的中斷被映射在同一個(gè)中斷向量上。在互聯(lián)型產(chǎn)品中, DMA2 通道 4 和 DMA2 通道 5 的中斷分別有獨(dú)立的中斷向量。所有其他的 DMA 通道都有自己的中斷向量。

14DMA的內(nèi)存占用

在STM32控制器中,芯片采用Cortex-MX架構(gòu),總線結(jié)構(gòu)有了很大的優(yōu)化,DMA占用另外的地址總線,并不會(huì)與CPU的系統(tǒng)總線發(fā)生沖突。也就是說,DMA的使用不會(huì)影響CPU的運(yùn)行速度。

但是要注意:DMA 控制器和Cortex-M3核共享系統(tǒng)數(shù)據(jù)總線執(zhí)行直接存儲(chǔ)器數(shù)據(jù)傳輸。當(dāng)CPU和DMA同時(shí)訪問相同的目標(biāo)(RAM或外設(shè))時(shí),DMA請(qǐng)求可能會(huì)停止 CPU訪問系統(tǒng)總線達(dá)若干個(gè)周期,總線仲裁器執(zhí)行循環(huán)調(diào)度,以保證CPU至少可以得到一半的系統(tǒng)總線(存儲(chǔ)器或外設(shè))帶寬。

DMA配置部分我們分為DMA寄存器和DMA庫函數(shù)分別介紹:

15DMA寄存器

DMA配置參數(shù)包括:通道地址、優(yōu)先級(jí)、數(shù)據(jù)傳輸方向、存儲(chǔ)器/外設(shè)數(shù)據(jù)寬度、存儲(chǔ)器/外設(shè)地址是否增量、循環(huán)模式、數(shù)據(jù)傳輸量。

16DMA中斷狀態(tài)寄存器(DMA_ISR)

a9dab9f6-657b-11ed-8abf-dac502259ad0.png

我們?nèi)绻_啟了 DMA_ISR 中這些中斷,在達(dá)到條件后就會(huì)跳到中斷服務(wù)函數(shù)里面去,即使 沒開啟,我們也可以通過查詢這些位來獲得當(dāng)前 DMA 傳輸?shù)臓顟B(tài)。這里我們常用的是 TCIFx, 即通道 DMA 傳輸完成與否的標(biāo)志。 注意此寄存器為只讀寄存器,所以在這些位被置位之后,只能通過其他的操作來清除。

17DMA中斷標(biāo)志清除寄存器

(DMA_IFCR)

a9f4c8a0-657b-11ed-8abf-dac502259ad0.png

DMA_IFCR 的各位就是用來清除 DMA_ISR 的對(duì)應(yīng)位的,通過寫 0 清除。在 DMA_ISR 被置位后,我們必須通過向該位寄存器對(duì)應(yīng)的位寫入 0 來清除。

18DMA通道x配置寄存器

(DMA_CCRx)

aa083b60-657b-11ed-8abf-dac502259ad0.png

該寄存器控制著 DMA 的很多相關(guān)信息,包括數(shù)據(jù)寬度、外設(shè)及存儲(chǔ)器的寬度、通道優(yōu)先級(jí)、增量模式、傳輸方向、中斷允許、 使能等都是通過該寄存器來設(shè)置的。所以 DMA_CCRx 是 DMA 傳輸?shù)暮诵目刂萍拇嫫?

19DMA通道x傳輸數(shù)量寄存器

(DMA_CNDTRx)(x = 1…7)

aa2106fe-657b-11ed-8abf-dac502259ad0.png

這個(gè)寄存器控制 DMA 通道 x 的每次傳輸所要傳輸?shù)臄?shù)據(jù)量。其設(shè)置范圍為 0~65535。并且該寄存器的值會(huì)隨著傳輸?shù)倪M(jìn)行而減少,當(dāng)該寄存器的值為 0 的時(shí)候就代表此次數(shù)據(jù)傳輸已經(jīng)全部發(fā)送完成了。所以可以通過這個(gè)寄存器的值來知道當(dāng)前 DMA 傳輸?shù)倪M(jìn)度。

20DMA通道x外設(shè)地址寄存器

(DMA_CPARx)(x = 1…7)

aa31e56e-657b-11ed-8abf-dac502259ad0.png

該寄存器用來存儲(chǔ) STM32 外設(shè)的地址,比如我們使用串口 1,那么該寄存器必須寫入 0x40013804(其實(shí)就是&USART1_DR)。如果使用其他外設(shè),就修改成相應(yīng)外設(shè)的地址就行了。

21DMA通道x配置寄存器

(DMA_CMARx)

aa4290da-657b-11ed-8abf-dac502259ad0.png

該寄存器和 DMA_CPARx 差不多,但是是用來放存儲(chǔ)器的地址的。比如我們使用 SendBuf[5200]數(shù)組來做存儲(chǔ)器,那么我們?cè)?DMA_CMARx 中寫入&SendBuff 就可以了。

22DMA寄存器配置流程

通道配置過程 下面是配置DMA通道x的過程(x代表通道號(hào)):

在DMA_CPARx寄存器中設(shè)置外設(shè)寄存器的地址。發(fā)生外設(shè)數(shù)據(jù)傳輸請(qǐng)求時(shí),這個(gè)地址將是數(shù)據(jù)傳輸?shù)脑椿蚰繕?biāo)。

在DMA_CMARx寄存器中設(shè)置數(shù)據(jù)存儲(chǔ)器的地址。發(fā)生外設(shè)數(shù)據(jù)傳輸請(qǐng)求時(shí),傳輸?shù)臄?shù)據(jù)將從這個(gè)地址讀出或?qū)懭脒@個(gè)地址。

在DMA_CNDTRx寄存器中設(shè)置要傳輸?shù)臄?shù)據(jù)量。在每個(gè)數(shù)據(jù)傳輸后,這個(gè)數(shù)值遞減。

在DMA_CCRx寄存器的PL[1:0]位中設(shè)置通道的優(yōu)先級(jí)。

在DMA_CCRx寄存器中設(shè)置數(shù)據(jù)傳輸?shù)姆较颉⒀h(huán)模式、外設(shè)和存儲(chǔ)器的增量模式、外設(shè)和存儲(chǔ)器的數(shù)據(jù)寬度、傳輸一半產(chǎn)生中斷或傳輸完成產(chǎn)生中斷。

設(shè)置DMA_CCRx寄存器的ENABLE位,啟動(dòng)該通道。

一旦啟動(dòng)了DMA通道,它既可響應(yīng)連到該通道上的外設(shè)的DMA請(qǐng)求。當(dāng)傳輸一半的數(shù)據(jù)后,半傳輸標(biāo)志(HTIF)被置1,當(dāng)設(shè)置了允許半傳輸中斷位(HTIE)時(shí),將產(chǎn)生 一個(gè)中斷請(qǐng)求。在數(shù)據(jù)傳輸結(jié)束后,傳輸完成標(biāo)志(TCIF)被置1,當(dāng)設(shè)置了允許傳輸完成中斷位 (TCIE)時(shí),將產(chǎn)生一個(gè)中斷請(qǐng)求。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124270
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11074

    瀏覽量

    216838
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    576

    瀏覽量

    103107

原文標(biāo)題:DMA技術(shù)原理

文章出處:【微信號(hào):數(shù)字ICer,微信公眾號(hào):數(shù)字ICer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:DMA 控制單元設(shè)計(jì)

    DMA 控制單元負(fù)責(zé)控制 DMA 傳輸事務(wù), 該單元承擔(dān)了 DMA 事務(wù)到 NVMe 事務(wù)的轉(zhuǎn)換任務(wù), 使用戶對(duì)數(shù)據(jù)傳輸事務(wù)的控制更加簡單快捷。 DMA 控制功能由
    的頭像 發(fā)表于 07-02 19:47 ?652次閱讀
    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:<b class='flag-5'>DMA</b> 控制單元設(shè)計(jì)

    RDMA簡介1之RDMA開發(fā)必要性

    解決FPGA存儲(chǔ)容量不足的問題。 直接內(nèi)存訪問技術(shù)提供了一種不經(jīng)過CPU的數(shù)據(jù)傳輸方式,其具有高性能、低延遲、CPU旁路等多種優(yōu)勢,在現(xiàn)代數(shù)據(jù)中心和計(jì)算機(jī)系統(tǒng)中得到廣泛應(yīng)用 。DMA技術(shù)通常被部署在高級(jí)微控制器
    發(fā)表于 06-03 14:38

    一文詳解AXI DMA技術(shù)

    AXI直接數(shù)值存取(Drect Memory Access,DMA)IP核在AXI4內(nèi)存映射和AXI4流IP接口之間提供高帶寬的直接內(nèi)存訪問。DMA可以選擇分散收集(Scatter Gather
    的頭像 發(fā)表于 04-03 09:32 ?980次閱讀
    一文詳解AXI <b class='flag-5'>DMA</b><b class='flag-5'>技術(shù)</b>

    CKS32F107xx系列的DMA控制器簡介

    直接存儲(chǔ)器存取(DMA)用來提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無須CPU干預(yù),數(shù)據(jù)可以通過DMA快速地移動(dòng),這就節(jié)省了CPU的資源來做其他操作。兩個(gè)DMA控制器有12個(gè)通道
    的頭像 發(fā)表于 02-18 17:24 ?880次閱讀
    CKS32F107xx系列的<b class='flag-5'>DMA</b>控制器簡介

    如何使用DMA進(jìn)行USART不定長度接收

    在上一講中,我們對(duì)USART進(jìn)行了簡單介紹,并講解了如何在不使用DMA的情況下進(jìn)行不定長度數(shù)據(jù)接收,本講將著重講解如何使用DMA進(jìn)行USART不定長度接收。
    的頭像 發(fā)表于 02-18 17:01 ?900次閱讀
    如何使用<b class='flag-5'>DMA</b>進(jìn)行USART不定長度接收

    1分鐘學(xué)會(huì)如何提升PCIe通信速率,基于RK3568J + FPGA國產(chǎn)平臺(tái)!

    用于擴(kuò)充計(jì)算機(jī)系統(tǒng)總線數(shù)據(jù)吞吐量以及提高設(shè)備通信速度。 圖 1 DMA技術(shù)介紹 DMA(Direct Memory Access,直接內(nèi)存訪問)是一種讓硬件外設(shè)直接與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換的技術(shù)
    的頭像 發(fā)表于 01-23 16:17 ?489次閱讀
    1分鐘學(xué)會(huì)如何提升PCIe通信速率,基于RK3568J + FPGA國產(chǎn)平臺(tái)!

    ZYNQ基礎(chǔ)---AXI DMA使用

    前言 在ZYNQ中進(jìn)行PL-PS數(shù)據(jù)交互的時(shí)候,經(jīng)常會(huì)使用到DMA,其實(shí)在前面的ZYNQ學(xué)習(xí)當(dāng)中,也有學(xué)習(xí)過DMA的使用,那就是通過使用自定義的IP,完成HP接口向內(nèi)存寫入和讀取數(shù)據(jù)的方式。同樣
    的頭像 發(fā)表于 01-06 11:13 ?2254次閱讀
    ZYNQ基礎(chǔ)---AXI <b class='flag-5'>DMA</b>使用

    EE-116:SHARC簡詞DMA

    電子發(fā)燒友網(wǎng)站提供《EE-116:SHARC簡詞DMA.pdf》資料免費(fèi)下載
    發(fā)表于 01-05 09:56 ?0次下載
    EE-116:SHARC簡詞<b class='flag-5'>DMA</b>

    雅特力AT32F402/F405 DMA使用指南

    DMA簡介DMA控制器的作用不僅在增強(qiáng)系統(tǒng)性能并減少處理器的中斷生成,而且還針對(duì)32位MCU應(yīng)用程序?qū)iT優(yōu)化設(shè)計(jì)。DMA控制器為存儲(chǔ)器到存儲(chǔ)器,存儲(chǔ)器到外設(shè)和外設(shè)到存儲(chǔ)器的傳輸提供了7個(gè)通道。每個(gè)
    的頭像 發(fā)表于 11-20 01:03 ?990次閱讀
    雅特力AT32F402/F405 <b class='flag-5'>DMA</b>使用指南

    DMA是什么?詳細(xì)介紹

    DMA(Direct Memory Access)是一種允許某些硬件子系統(tǒng)直接訪問系統(tǒng)內(nèi)存的技術(shù),而無需中央處理單元(CPU)的介入。這種技術(shù)可以顯著提高數(shù)據(jù)傳輸速率,減輕CPU的負(fù)擔(dān),并提高整體
    的頭像 發(fā)表于 11-11 10:49 ?1.8w次閱讀

    使用TMS320C6000增強(qiáng)型DMA的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《使用TMS320C6000增強(qiáng)型DMA的應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 10-23 09:48 ?0次下載
    使用TMS320C6000增強(qiáng)型<b class='flag-5'>DMA</b>的應(yīng)用

    DMA與C64x的框架組件結(jié)合使用

    電子發(fā)燒友網(wǎng)站提供《將DMA與C64x的框架組件結(jié)合使用.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 10:29 ?0次下載
    將<b class='flag-5'>DMA</b>與C64x的框架組件結(jié)合使用

    用于ADC的DMA乒乓

    電子發(fā)燒友網(wǎng)站提供《用于ADC的DMA乒乓.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 11:27 ?1次下載
    用于ADC的<b class='flag-5'>DMA</b>乒乓

    經(jīng)驗(yàn)分享 | DMA助力實(shí)時(shí)控制

    直接存儲(chǔ)器訪問(DMA,DirectMemoryAccess)的優(yōu)點(diǎn)·提高系統(tǒng)效率:通過繞過CPU,DMA顯著減少了數(shù)據(jù)傳輸對(duì)CPU資源的占用,使得CPU能夠?qū)W⒂谄渌?jì)算任務(wù),提升了系統(tǒng)整體
    的頭像 發(fā)表于 07-18 08:18 ?1423次閱讀
    經(jīng)驗(yàn)分享 | <b class='flag-5'>DMA</b>助力實(shí)時(shí)控制

    RL78系列MCU DMA在UART中的使用

    對(duì)于RL78系列的MCU,為了提高運(yùn)行效率,減少CPU的占用,建議UART數(shù)據(jù)收發(fā)使用DMA功能。DMA(Direct Memory Access)是RL78 MCU內(nèi)置的一個(gè)控制器,能在支持DMA外圍硬件的SFR和內(nèi)部RAM之
    的頭像 發(fā)表于 07-17 14:24 ?1223次閱讀
    RL78系列MCU <b class='flag-5'>DMA</b>在UART中的使用
    主站蜘蛛池模板: 日本xxx69| 91最新网站免费 | 男啪女r18肉车文 | 性欧美大胆高清视频 | 理论片一区 | 国模网站 | 福利视频自拍 | 第四色亚洲 | 伊人狠狠丁香婷婷综合色 | 手机在线看片国产日韩生活片 | 神马午夜第九 | 黄色污网站在线观看 | 福利视频99 | 高h办公室| 国产精品www视频免费看 | 色黄网站 | 一级特级aaaa毛片免费观看 | 国产真实灌醉美女疯狂弄 | 日日做日日摸夜夜爽 | 欧美视频区 | 操女人网址| 嫩草影院在线入口 | 免费的色网站 | 高清一级做a爱免费视 | 在线欧美激情 | yy4080午夜理论一级毛片 | 人操人操 | 爱爱动态视频免费视频 | 久久精品影院永久网址 | 色综合亚洲天天综合网站 | 六月丁香激情综合成人 | 情趣店上班h系列小说 | 中文一区二区在线观看 | 大尺度在线 | 日本高清色图 | 欧美日韩性猛交xxxxx免费看 | 丁香激情五月 | 偷偷要色偷偷 | 欧美猛操 | 一本在线免费视频 | 日韩高清特级特黄毛片 |