一.dma常識(shí).
1.作用:實(shí)現(xiàn)片內(nèi)數(shù)據(jù)之間的高速傳輸。即是能夠不占用cpu實(shí)現(xiàn)數(shù)據(jù)傳輸。
2.模式:外設(shè)到存儲(chǔ)器傳輸、存儲(chǔ)器到外設(shè)傳輸和存儲(chǔ)器到存儲(chǔ)器傳輸三種傳輸模式。
3.stm32中的dma支持外設(shè)通道選擇,并且可以用仲裁器配置adc對(duì)數(shù)據(jù)流的處理順序。
4.dma帶有一個(gè)被稱為fifo的東西,主要配置fifo來(lái)實(shí)現(xiàn)對(duì)傳輸雙方要求字長(zhǎng)不匹配的調(diào)整。即所謂
FIFO 對(duì)于要求源地址和目標(biāo)地址數(shù)據(jù)寬度不同時(shí)非常有用,比如源數(shù)據(jù)是源源不斷的字節(jié)數(shù)據(jù),而目標(biāo)地址要求輸出字寬度的數(shù)據(jù),即在實(shí)現(xiàn)數(shù)據(jù)傳輸時(shí)同時(shí)把原來(lái) 4 個(gè) 8 位字節(jié)的數(shù)據(jù)拼湊成一個(gè) 32 位字?jǐn)?shù)據(jù)。此時(shí)使用 FIFO 功能先把數(shù)據(jù)緩存起來(lái),分別根據(jù)需要輸出數(shù)據(jù)
5.dma1不能實(shí)現(xiàn)儲(chǔ)存器到儲(chǔ)存器。
6.dma還擁有流控制器,它能夠?qū)崿F(xiàn)的是可以傳輸一定數(shù)目的數(shù)據(jù)。對(duì)于不知道數(shù)據(jù)數(shù)量的,唯一的外設(shè)sdio是可以自己發(fā)出停止傳輸?shù)男盘?hào)的。
7.dma傳輸有兩種類型。一是單次傳輸,一是突發(fā)傳輸。后者必須使用fifo,并且要求 FIFO 閾值一定要是內(nèi)存突發(fā)傳輸數(shù)據(jù)量的整數(shù)倍。但是疑問(wèn)是單次傳輸有什么好處呢?
8.直接模式在每個(gè)外設(shè)請(qǐng)求都立即啟動(dòng)對(duì)存儲(chǔ)器傳輸?shù)膯未蝹鬏?。直接模式要求源地址和目?biāo)地址的數(shù)據(jù)寬度必須一致。
二.stm32f429中dma的具體配置方式。
1.DMA_Channel:配置dma請(qǐng)求發(fā)出的通道。
2.DMA_PeripheralBaseAddr:配置外設(shè)地址。
3.DMA_Memory0BaseAddr:配置存儲(chǔ)器零的地址。
4.DMA_DIR:傳輸方向配置。
5.DMA_BufferSize:設(shè)定待傳輸?shù)臄?shù)據(jù)數(shù)目。
6.DMA_PeripheralInc:能控制外設(shè)地址是否遞增。
7.DMA_MemoryInc:能使存儲(chǔ)器地址自動(dòng)遞增功能。常用。
8.DMA_PeripheralDataSize: 外設(shè)數(shù)據(jù)寬度,可選字節(jié)(8 位)、半字(16 位)和字(32位)跟相應(yīng)的外設(shè)有關(guān)系??赐庠O(shè)多少位數(shù)據(jù)有效。
9.DMA_MemoryDataSize:存儲(chǔ)器數(shù)據(jù)寬度
10.DMA_Mode : DMA 傳 輸 模 式 選 擇 , 可 選 一 次 傳 輸 或 者 循 環(huán) 傳 輸。
11DMA_Priority:軟件設(shè)置數(shù)據(jù)流的優(yōu)先級(jí).
12DMA_FIFOMode: FIFO 模式使能.
13.DMA_FIFOThreshold: FIFO 閾值選擇。
14.DMA_MemoryBurst:存儲(chǔ)器突發(fā)模式選擇,可選單次模式、 4 節(jié)拍的增量突發(fā)模式、 8 節(jié)拍的增量突發(fā)模式或 16 節(jié)拍的增量突發(fā)模式。
15.DMA_PeripheralBurst:外設(shè)突發(fā)模式選擇,可選單次模式、 4 節(jié)拍的增量突發(fā)模式、 8 節(jié)拍的增量突發(fā)模式或 16 節(jié)拍的增量突發(fā)模式。
上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像
CopyRight 2020-2025 www.jlodreman.com All rights reserved 滬ICP備2021005866號(hào)