gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > STM32之外設(shè)DMA

STM32之外設(shè)DMA 時(shí)間:2019-07-11      來(lái)源:深圳中心,曾老師

DMA(Direct Memory Access)—直接存儲(chǔ)器存取,是單片機(jī)的一個(gè)外設(shè),它的主要功能是用來(lái)搬數(shù)據(jù),但是不需要占用 CPU,即在傳輸數(shù)據(jù)的時(shí)候,CPU 可以干其他的事情,好像是多線程一樣。數(shù)據(jù)傳輸支持從外設(shè)到存儲(chǔ)器或者存儲(chǔ)器到存儲(chǔ)器,這里的存儲(chǔ)器可以是 SRAM 或者是 FLASH。DMA 控制器包含了 DMA1 和 DMA2(大容量產(chǎn)品中才有),其中 DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道,這里的通道可以理解為傳輸數(shù)據(jù)的一種管道。

(1-1)DMA框圖

DMA相關(guān)概念:

i.DMA請(qǐng)求

外設(shè)要想通過(guò) DMA 來(lái)傳輸數(shù)據(jù),必須先給 DMA 控制器發(fā)送 DMA 請(qǐng)求,DMA 收到請(qǐng)求信號(hào)之后,控制器會(huì)給外設(shè)一個(gè)應(yīng)答信號(hào),當(dāng)外設(shè)應(yīng)答后且 DMA 控制器收到應(yīng)答信號(hào)之后,就會(huì)啟動(dòng) DMA 的傳輸,直到傳輸完畢。 

DMA 有 DMA1 和 DMA2 兩個(gè)控制器,DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道,不同的 DMA 控制器的通道對(duì)應(yīng)著不同的外設(shè)請(qǐng)求,這決定了我們?cè)谲浖幊躺显撛趺丛O(shè)置,具體見(jiàn) DMA 請(qǐng)求映像表。

(1-2)DMA1請(qǐng)求一覽表

(1-3)DMA2請(qǐng)求一覽表

ii.通道

DMA 具有 12 個(gè)獨(dú)立可編程的通道,其中 DMA1 有 7 個(gè)通道,DMA2 有 5 個(gè)通道,每個(gè)通道對(duì)應(yīng)不同的外設(shè)的 DMA 請(qǐng)求。雖然每個(gè)通道可以接收多個(gè)外設(shè)的請(qǐng)求,但是同一時(shí)間只能接收一個(gè),不能同時(shí)接收多個(gè)。

iii.DMA仲裁

當(dāng)發(fā)生多個(gè) DMA 通道請(qǐng)求時(shí),就意味著有先后響應(yīng)處理的順序問(wèn)題,這個(gè)就由仲裁器也管理。仲裁器管理 DMA 通道請(qǐng)求分為兩個(gè)階段。第一階段屬于軟件階段,可以在DMA_CCRx 寄存器中設(shè)置,有 4 個(gè)等級(jí):非常高、高、中和低四個(gè)優(yōu)先級(jí)。第二階段屬于硬件階段,如果兩個(gè)或以上的 DMA 通道請(qǐng)求設(shè)置的優(yōu)先級(jí)一樣,則他們優(yōu)先級(jí)取決于通道編號(hào),編號(hào)越低優(yōu)先權(quán)越高,比如通道 0 高于通道 1。在大容量產(chǎn)品和互聯(lián)型產(chǎn)品中, DMA1 控制器擁有高于 DMA2 控制器的優(yōu)先級(jí)。

DMA配置:

i.數(shù)據(jù)從哪來(lái)到哪去

我們知道 DMA 傳輸數(shù)據(jù)的方向有三個(gè):從外設(shè)到存儲(chǔ)器,從存儲(chǔ)器到外設(shè),從存儲(chǔ)器到存儲(chǔ)器。具體的方向 DMA_CCR 位 4 DIR 配置:0 表示從外設(shè)到存儲(chǔ)器,1 表示從存儲(chǔ)器到外設(shè)。這里面涉及到的外設(shè)地址由 DMA_CPAR 配置,存儲(chǔ)器地址由 DMA_CMAR 配置。

ii.數(shù)據(jù)傳輸?shù)牧?/p>

當(dāng)我們配置好數(shù)據(jù)要從哪里來(lái)到哪里去之后,我們還需要知道我們要傳輸?shù)臄?shù)據(jù)是多少,數(shù)據(jù)的單位是什么。

在DMA傳輸中,要想數(shù)據(jù)傳輸正確,源和目標(biāo)地址存儲(chǔ)的數(shù)據(jù)寬度還必須一致,外設(shè)的數(shù)據(jù)寬度由 DMA_CCR 的PSIZE[1:0]配置,可以是 8/16/32 位,存儲(chǔ)器的數(shù)據(jù)寬度由 DMA_CCR 的 MSIZE[1:0]配置,可以是 8/16/32 位。

在 DMA 控制器的控制下,數(shù)據(jù)要想有條不紊的從一個(gè)地方搬到另外一個(gè)地方,還必須正確設(shè)置兩邊數(shù)據(jù)指針的增量模式。外設(shè)的地址指針由 DMA_CCRx 的 PINC 配置,存儲(chǔ)器的地址指針由 MINC 配置。以串口向電腦發(fā)送數(shù)據(jù)為例,要發(fā)送的數(shù)據(jù)很多,每發(fā)送完一個(gè),那么存儲(chǔ)器的地址指針就應(yīng)該加 1,而串口數(shù)據(jù)寄存器只有一個(gè),那么外設(shè)的地址指針就固定不變。具體的數(shù)據(jù)指針的增量模式由實(shí)際情況決定。

iii.數(shù)據(jù)什么時(shí)候傳輸完成

數(shù)據(jù)什么時(shí)候傳輸完成,我們可以通過(guò)查詢(xún)標(biāo)志位或者通過(guò)中斷的方式來(lái)鑒別。每個(gè)DMA 通道在 DMA 傳輸過(guò)半、傳輸完成和傳輸錯(cuò)誤時(shí)都會(huì)有相應(yīng)的標(biāo)志位,如果使能了該類(lèi)型的中斷后,則會(huì)產(chǎn)生中斷。有關(guān)各個(gè)標(biāo)志位的詳細(xì)描述請(qǐng)參考 DMA 中斷狀態(tài)寄存器DMA_ISR 的詳細(xì)描述。 

傳輸完成還分兩種模式,是一次傳輸還是循環(huán)傳輸,一次傳輸很好理解,即是傳輸一次之后就停止,要想再傳輸?shù)脑,必須關(guān)斷 DMA 使能后再重新配置后才能繼續(xù)傳輸。循環(huán)傳輸則是一次傳輸完成之后又恢復(fù)第一次傳輸時(shí)的配置循環(huán)傳輸,不斷的重復(fù)。具體的由 DMA_CCR 寄存器的 CIRC 循環(huán)模式位控制。

ST標(biāo)準(zhǔn)外設(shè)庫(kù)中的初始化結(jié)構(gòu)體

該結(jié)構(gòu)體的成員變量用于指定數(shù)據(jù)從哪來(lái)到哪去,傳輸多大的量,以什么格式進(jìn)行傳輸以及傳輸?shù)膬?yōu)先權(quán)。

上一篇:STM32之外設(shè)定時(shí)器

下一篇:ARM異常處理設(shè)置

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專(zhuān)線:010-82525158 企業(yè)培訓(xùn)洽談專(zhuān)線:010-82525379 院校合作洽談專(zhuān)線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部