日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式微處理器
[導(dǎo)讀]DMA的基本介紹1DMA的基本定義DMA,全稱DirectMemoryAccess,即直接存儲(chǔ)器訪問。DMA傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。當(dāng)CPU初始化這個(gè)傳輸動(dòng)作,傳輸動(dòng)作本身是由DMA控制器來(lái)實(shí)現(xiàn)和完...

DMA的基本介紹


1DMA的基本定義

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


DMA傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另一個(gè)地址空間,提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。當(dāng)CPU初始化這個(gè)傳輸動(dòng)作,傳輸動(dòng)作本身是由DMA控制器來(lái)實(shí)現(xiàn)和完成的。DMA傳輸方式無(wú)需CPU直接控制傳輸,也沒有中斷處理方式那樣保留現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)過程,通過硬件為RAM和IO設(shè)備開辟一條直接傳輸數(shù)據(jù)的通道,使得CPU的效率大大提高。


2DMA的主要特征

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

  • 在同一個(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。


3STM33F10x系列芯片DMA控制器

STM32F10x系列芯片最多有2個(gè)DMA控制器(DMA2僅存在大容量產(chǎn)品中),DMA1有7個(gè)通道。DMA2有5個(gè)通道。每個(gè)通道專門用來(lái)管理來(lái)自于一個(gè)或多個(gè)外設(shè)對(duì)存儲(chǔ)器訪問的請(qǐng)求。還有一個(gè)仲裁起來(lái)協(xié)調(diào)各個(gè)DMA請(qǐng)求的優(yōu)先權(quán)。


從外設(shè)(TIMx[x=1、2、3、4]、ADC1、SPI1、SPI/I2S2、I2Cx[x=1、2]和USARTx[x=1、2、3])產(chǎn)生的7個(gè)請(qǐng)求,通過邏輯或輸入到DMA1控制器,這意味著同時(shí)只能有一個(gè)請(qǐng)求有效。各個(gè)通道的DMA1請(qǐng)求一覽見下圖:



從外設(shè)(TIMx[5、6、7、8]、ADC3、SPI/I2S3、UART4、DAC通道1、2和SDIO)產(chǎn)生的5個(gè)請(qǐng)求,經(jīng)邏輯或輸入到DMA2控制器,這意味著同時(shí)只能有一個(gè)請(qǐng)求有效。各個(gè)通道的DMA2請(qǐng)求一覽見下圖:




DMA的基本原理


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è))帶寬。


0DMA的工作框圖


DMA模塊的框圖看起來(lái)比較復(fù)雜,接下來(lái)會(huì)一點(diǎn)一點(diǎn)地對(duì)它進(jìn)行分析。


1DMA處理

在發(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)。如果有更多的請(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ù)目。


2仲裁器

仲裁器根據(jù)通道請(qǐng)求的優(yōu)先級(jí)來(lái)啟動(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í)。


3DMA通道

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


4可編程的數(shù)據(jù)量

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


6指針增量

通過設(shè)置DMA_CCRx寄存器中的PINC和MINC標(biāo)志位,外設(shè)和存儲(chǔ)器的指針在每次傳輸后可以有選擇地完成自動(dòng)增量。當(dāng)設(shè)置為增量模式時(shí),下一個(gè)要傳輸?shù)牡刂穼⑹乔耙粋€(gè)地址加上增量值,增量值取決于所選的數(shù)據(jù)寬度為1、2或4。


第一個(gè)傳輸?shù)牡刂肥谴娣旁贒MA_CPARx /DMA_CMARx寄存器中的值。在傳輸過程中,這些寄存器保持它們初始的數(shù)值,軟件不能改變和讀出當(dāng)前正在傳輸?shù)牡刂罚ㄋ趦?nèi)部的當(dāng)前外設(shè)/存儲(chǔ)器地址寄存器中)。


當(dāng)通道配置為非循環(huán)模式時(shí),傳輸結(jié)束后(即傳輸計(jì)數(shù)變?yōu)?)將不再產(chǎn)生DMA操作。要開始新的DMA傳輸,需要在關(guān)閉DMA通道的情況下,在DMA_CNDTRx寄存器中重新寫入傳輸數(shù)目。在循環(huán)模式下,最后一次傳輸結(jié)束時(shí),DMA_CNDTRx寄存器的內(nèi)容會(huì)自動(dòng)地被重新加載為其初始數(shù)值,內(nèi)部的當(dāng)前外設(shè)/存儲(chǔ)器地址寄存器也被重新加載為DMA_CPARx/DMA_CMARx寄存器設(shè)定的初始基地址。


6循環(huán)模式

循環(huán)模式用于處理循環(huán)緩沖區(qū)和連續(xù)的數(shù)據(jù)傳輸(如ADC的掃描模式)。


在DMA_CCRx寄存器中的CIRC位用于開啟這一功能。當(dāng)啟動(dòng)了循環(huán)模式,數(shù)據(jù)傳輸?shù)臄?shù)目變?yōu)?時(shí),將會(huì)自動(dòng)地被恢復(fù)成配置通道時(shí)設(shè)置的初值,DMA操作將會(huì)繼續(xù)進(jìn)行。


7存儲(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í)使用。


8可編程的數(shù)據(jù)傳輸寬度、對(duì)齊方式和數(shù)據(jù)大小端

當(dāng)PSIZE和MSIZE不相同時(shí),DMA模塊按照下圖進(jìn)行數(shù)據(jù)對(duì)齊。



9中斷

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



注意:在大容量產(chǎn)品中,DMA2通道4和DMA2通道5的中斷被映射在同一個(gè)中斷向量上。在互聯(lián)型產(chǎn)品中,DMA2通道4和DMA2通道5的中斷分別有獨(dú)立的中斷向量。所有其他的DMA通道都有自己的中斷向量。



DMA相關(guān)配置寄存器


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


1DMA通道x配置寄存器(DMA_CCRx)


作用:配置DMA通道模式、優(yōu)先級(jí)、數(shù)據(jù)寬度、是否增量、傳輸方向、是否增量參數(shù)。


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


作用:配置DMA通道的數(shù)據(jù)傳輸數(shù)量,范圍為0-65535。


主要注意:該寄存器的值會(huì)隨著傳輸?shù)倪M(jìn)行而減少,當(dāng)該寄存器的值為0的時(shí)候,就代表著此次傳輸已經(jīng)全部結(jié)束了。也就是說(shuō),當(dāng)DMA通道開啟傳輸了之后,該寄存器變成只讀,指示的是數(shù)據(jù)傳輸數(shù)量中剩余待傳輸?shù)淖止?jié)數(shù)目。


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


作用:配置DMA通道的外設(shè)地址。比如使用串口1的數(shù)據(jù)引腳,則該寄存器必須寫上0x40013804(其實(shí)就是串口數(shù)據(jù)寄存器的地址,
嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉