新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > STM32再學(xué)習(xí)——DMA控制器

STM32再學(xué)習(xí)——DMA控制器

作者:jobs 時(shí)間:2013-10-23 來源:電子產(chǎn)品世界 收藏

  這簡(jiǎn)單的三字母表示Direct Memory Access,直譯過來就是“直接存儲(chǔ)器存取”,其設(shè)計(jì)目的是提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸,而無須的干預(yù),從而節(jié)省了寶貴的運(yùn)行時(shí)間,為其它操作提供了充足的時(shí)間。

本文引用地址:http://butianyuan.cn/article/182406.htm

  F103系統(tǒng)有7個(gè)通道,每個(gè)通道專門用來管理來自一個(gè)或多個(gè)硬件外設(shè)對(duì)存儲(chǔ)器的訪問請(qǐng)求。該訪問請(qǐng)求可以通過硬件觸發(fā),也可以通過軟件配置來完成軟件觸發(fā)。7個(gè)通道請(qǐng)求通過一個(gè)仲裁器來協(xié)調(diào),它們的優(yōu)先級(jí)可以通過軟件編程來設(shè)置,但相等的優(yōu)先級(jí)通過固有的硬件決定(請(qǐng)求0優(yōu)先于請(qǐng)求1)。

  是可以完成外設(shè)至內(nèi)存、內(nèi)存至外設(shè)與內(nèi)存至內(nèi)存的三方數(shù)據(jù)直接轉(zhuǎn)移。數(shù)據(jù)在傳輸?shù)臅r(shí)候可以選擇字節(jié)、半字與全字的傳輸寬度,并模擬打包與拆包過程,支持循環(huán)的緩沖器管理。最大的傳輸數(shù)據(jù)長(zhǎng)度為65536,當(dāng)然,如果選擇全字傳輸則DMA傳輸一次傳輸可多達(dá)128K個(gè)字節(jié)的數(shù)據(jù),這個(gè)對(duì)于嵌入式的MCU來說,可以說是一個(gè)天文數(shù)字了。

  DMA對(duì)于數(shù)據(jù)的處理傳輸是采用的共享系統(tǒng)數(shù)據(jù)線執(zhí)行的,因此,在1個(gè)DMA請(qǐng)求發(fā)生時(shí)要占用至少2個(gè)周期的總線時(shí)間,考慮到其它原因,2個(gè)連續(xù)的DMA請(qǐng)求間釋放系統(tǒng)時(shí)鐘至少1個(gè)周期,如果對(duì)于72Mhz的MCU來說一個(gè)周期約為14ns,2個(gè)周期也就是28個(gè)ns的時(shí)間。MCU的計(jì)算時(shí)間已經(jīng)進(jìn)入了納秒階段了……

  DMA的實(shí)現(xiàn)過程只有簡(jiǎn)單的三步(當(dāng)然是簡(jiǎn)單說了):

  從外設(shè)數(shù)據(jù)或者從DMA_CMARx 指定地址的存儲(chǔ)器單元執(zhí)行加載操作。

  存數(shù)據(jù)到外設(shè)數(shù)據(jù)或者存數(shù)據(jù)到DMA_CMARx 寄存器指定地址的存儲(chǔ)器單元。

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

  DMA控制器通道的請(qǐng)求映像。DMA通道有7個(gè)請(qǐng)求,而這7個(gè)請(qǐng)求與所連接的外設(shè)可不是隨心所欲的選擇,因此,對(duì)于在同一個(gè)通道的DMA請(qǐng)求外設(shè)來說,在同一時(shí)間只能有一個(gè)請(qǐng)求有效,我們先請(qǐng)出來DMA請(qǐng)求映像來,如下圖所示:

  從上面可以清楚的看到,每個(gè)通道都可以用做Memory 2 memory,而這個(gè)功能,筆者認(rèn)為卻是相當(dāng)重要的。

  通訊與傳感器是目前發(fā)展的兩個(gè)大發(fā)向,而與外設(shè)相連的DMA通道是以最快、最省事的方式將數(shù)據(jù)傳給MCU,而我們知道原始數(shù)據(jù)肯定要進(jìn)行一步數(shù)據(jù)的處理,因此,使用DMA的Memory2memory功能可以輕松完成數(shù)據(jù)“乒乓控制”,從而同時(shí)完成數(shù)據(jù)的采集與處理。通訊時(shí),待發(fā)送的數(shù)據(jù)存儲(chǔ)至緩沖器,而DMA的內(nèi)存至外設(shè),又可以把數(shù)據(jù)直接送到外設(shè),不用MCU的任何運(yùn)算與資源,對(duì)于數(shù)據(jù)通訊節(jié)省了大師寶貴的時(shí)間,也使得工程師們更加把精力關(guān)注于數(shù)據(jù)的處理中。

  這么多的優(yōu)點(diǎn),并沒有多加銀子,完全是免費(fèi)贈(zèng)送的,以后的項(xiàng)目應(yīng)用一定使用。免費(fèi)而高效,何樂而不為呢?

 

存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




關(guān)鍵詞: STM32 DMA 控制器 MCU 寄存器

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉