91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

STM32 DMA詳解

工程師 ? 來源:一口Linux ? 作者:一口Linux ? 2020-10-27 14:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、綜述

DMA(Direct memory access)直接內(nèi)存訪問,被用于內(nèi)存和內(nèi)存之間或內(nèi)存和外設(shè)之間的高速數(shù)據(jù)傳輸。數(shù)據(jù)傳輸可以在沒有CPU的干預(yù)下快速移動(dòng),這樣可以保持CPU資源處理其他事情。

DMA 控制器基于復(fù)雜的總線矩陣架構(gòu),將功能強(qiáng)大的雙 AHB 主總線架構(gòu)與獨(dú)立的 FIFO 結(jié) 合在一起,優(yōu)化了系統(tǒng)帶寬,下圖①處,可以看出雙 AHB 主總線架構(gòu)與獨(dú)立的 FIFO的結(jié)構(gòu)。

注意看英文備注:

DMA1控制器AHB外設(shè)端口沒有像DMA2一樣連接到總線矩陣,所以只有DMA2數(shù)據(jù)流可以執(zhí)行存儲(chǔ)器到存儲(chǔ)器的傳輸。

我們對(duì)上圖的②處,(DMA1和DMA2結(jié)構(gòu)一樣,我們就選擇DMA1)詳細(xì)看

①每個(gè)數(shù)據(jù)流總共可以有多達(dá) 8 個(gè)通道(或稱請(qǐng)求)。

②DMA1共有8個(gè)數(shù)據(jù)數(shù)據(jù)流(兩個(gè)DMA共有16個(gè)數(shù)據(jù)流)。

③每個(gè)DMA都有數(shù)據(jù)流仲裁器,用于處理 DMA 請(qǐng)求間的優(yōu)先級(jí)。

④DMA的數(shù)據(jù)流又有獨(dú)立的FIFO。

⑤DMA采用雙 AHB 主總線架構(gòu)。

備注:

①處是選擇器,配置完成只能選擇一個(gè)通道,而③處是仲裁器,也就是說,配置完成,可能8個(gè)數(shù)據(jù)流全部存在,由仲裁器判斷優(yōu)先級(jí)。

2、DMA事務(wù)

DMA從傳輸事務(wù)包含一系列的給定數(shù)目的數(shù)據(jù)傳輸序列。傳輸?shù)臄?shù)目可以通過軟件編程,8位,16位或32位。

每一次DMA傳輸包含3個(gè)操作

通過 DMA_SxPAR 或 DMA_SxM0AR 寄存器尋址,從外設(shè)數(shù)據(jù)寄存器或存儲(chǔ)器單元中加載數(shù)據(jù)。

通過 DMA_SxPAR 或 DMA_SxM0AR 寄存器尋址,將加載的數(shù)據(jù)存儲(chǔ)到外設(shè)數(shù)據(jù)寄存器或存儲(chǔ)器單元。

·DMA_SxNDTR 計(jì)數(shù)器在數(shù)據(jù)存儲(chǔ)結(jié)束后遞減,該計(jì)數(shù)器中包含仍需執(zhí)行的事務(wù)數(shù)。

在產(chǎn)生事件后,外設(shè)會(huì)向 DMA 控制器發(fā)送請(qǐng)求信號(hào)。DMA 控制器根據(jù)通道優(yōu)先級(jí)處理該請(qǐng)求。只要 DMA 控制器訪問外設(shè), DMA 控制器就會(huì)向外設(shè)發(fā)送確認(rèn)信號(hào)。外設(shè)獲得 DMA 控制器的確認(rèn)信號(hào)后,便會(huì)立即釋放其請(qǐng)求。一旦外設(shè)使請(qǐng)求失效, DMA 控制器就會(huì)釋放確認(rèn)信號(hào)。如果有更多請(qǐng)求,外設(shè)可以啟動(dòng)下一個(gè)事務(wù)。

3、通道選擇

每個(gè)數(shù)據(jù)流可以有8個(gè)通道。

通過上圖①可以看出,通道選擇仲裁器可以通過DMA_SxCR寄存器的CHSEL[2:0]配置

DMA的請(qǐng)求可以來自TIM,ADC,SPI等外設(shè)。

DMA1的請(qǐng)求通道

DMA2的請(qǐng)求通道

4、仲裁器

仲裁器為兩個(gè) AHB 主端口(存儲(chǔ)器和外設(shè)端口)提供基于請(qǐng)求優(yōu)先級(jí)的 8 個(gè) DMA 數(shù)據(jù)流請(qǐng)求管理,并啟動(dòng)外設(shè)/存儲(chǔ)器訪問序列。

優(yōu)先級(jí)管理分為兩個(gè)階段

·軟件:每個(gè)數(shù)據(jù)流優(yōu)先級(jí)都可以在 DMA_SxCR 寄存器中配置。分為四個(gè)級(jí)別:非常高優(yōu)先級(jí)、高優(yōu)先級(jí)、中優(yōu)先級(jí)、低優(yōu)先級(jí)。

·硬件:如果兩個(gè)請(qǐng)求具有相同的軟件優(yōu)先級(jí),則編號(hào)低的數(shù)據(jù)流優(yōu)先于編號(hào)高的數(shù)據(jù)流。例如,數(shù)據(jù)流2的優(yōu)先級(jí)高于數(shù)據(jù)流4。

5、DMA數(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ì)遞減。

6、源、目標(biāo)和傳輸模式

源地址和目標(biāo)地址可以在整個(gè)4G地址空間,在0x00000000和0xFFFFFFFF之間。

在DNA_SxCR寄存求的DIR[1:0]配置DMA的傳輸方式。

源地址和目標(biāo)地址的關(guān)系

當(dāng)數(shù)據(jù)寬度是半字或字時(shí),外設(shè)地址或存儲(chǔ)器地址必須是半字或字對(duì)齊

6.1、外設(shè)到存儲(chǔ)器模式

當(dāng)配置成外設(shè)到存儲(chǔ)器的DMA傳輸模式時(shí),兩種模式

FIFO模式:外設(shè)有DMA請(qǐng)求(TIM溢出,PWM下降沿等)時(shí),DMA會(huì)搬運(yùn)源數(shù)據(jù)(外設(shè)數(shù)據(jù))到FIFO,當(dāng)FIFO滿時(shí),將數(shù)傳輸給目標(biāo)地址(內(nèi)存)。

直連模式:配置直連模式,DMA_SxFCR 寄存器中的 DMDIS 值為“0”。不使用 FIFO 的閾值級(jí)別控制:每完成一次從外設(shè)到 FIFO 的數(shù)據(jù)傳輸后,相應(yīng)的數(shù)據(jù)立即就會(huì)移出并存儲(chǔ)到目標(biāo)中。

傳輸開始條件,使能數(shù)據(jù)流(DMA_SxCR 寄存器中的位 EN 置 1),然后外設(shè)發(fā)出請(qǐng)求,再然后該請(qǐng)求贏得了數(shù)據(jù)流仲裁,才會(huì)開始傳輸。

傳輸停止條件,下列滿足一條即可

DMA_SxNDTR 寄存器達(dá)到零。

外設(shè)請(qǐng)求傳輸終止。

DMA_SxCR 寄存器中的 EN 位由軟件清零。

6.2 存儲(chǔ)器到外設(shè)模式

FIFO模式

這種模式,只要使能數(shù)據(jù)流(DMA_SxCR 寄存器中的位 EN 置 1),存儲(chǔ)器數(shù)據(jù)就會(huì)傳輸?shù)紽IFO中,發(fā)生外設(shè)請(qǐng)求,F(xiàn)IFO數(shù)據(jù)會(huì)移出并存儲(chǔ)到目標(biāo)地址。當(dāng)FIFO小于閾值,存儲(chǔ)器的數(shù)據(jù)會(huì)重載FIFO。

直連模式

使能數(shù)據(jù)流時(shí),DMA傳輸存儲(chǔ)器的第一個(gè)數(shù)據(jù)到內(nèi)部FIFO,發(fā)生外設(shè)請(qǐng)求時(shí),DMA把預(yù)裝在值發(fā)送的目標(biāo)地址,然后進(jìn)行下一個(gè)數(shù)據(jù)的傳輸。預(yù)裝載的數(shù)據(jù)大小為 DMA_SxCR 寄存器中 PSIZE 位字段的值。

傳輸停止條件,下列滿足一條即可

DMA_SxNDTR 寄存器達(dá)到零。

外設(shè)請(qǐng)求傳輸終止。

DMA_SxCR 寄存器中的 EN 位由軟件清零。

存儲(chǔ)器到外設(shè)模式和外設(shè)到存儲(chǔ)器模式一樣,同樣需要對(duì)應(yīng)數(shù)據(jù)流贏得仲裁,才會(huì)啟動(dòng)傳輸

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

這種模式較為簡(jiǎn)單,沒有外設(shè)請(qǐng)求

啟動(dòng)傳輸

DMA_SxCR 寄存器中的使能位 (EN) 置 1 來使能數(shù)據(jù)流時(shí),數(shù)據(jù)就會(huì)從源地址傳輸?shù)紽IFO,到達(dá)FIFO閾值時(shí),F(xiàn)IFO數(shù)據(jù)移出到目標(biāo)地址。

停止傳輸,下列滿足一條即可

DMA_SxNDTR 寄存器達(dá)到零。

DMA_SxCR 寄存器中的 EN 位由軟件清零。

當(dāng)然,同樣該數(shù)據(jù)流需要贏得仲裁。

7、指針遞增

外設(shè)和存儲(chǔ)器指針在每次傳輸后自動(dòng)向后遞增或保持常量,根據(jù)DMA_SxCR寄存器的PINC和MINC位。

禁止遞增模式時(shí)非常有用的,當(dāng)外設(shè)源和目標(biāo)數(shù)據(jù)是通過單個(gè)寄存器訪問的。

如果使能了遞增模式,則根據(jù)在 DMA_SxCR 寄存器 PSIZE 或 MSIZE 位中編程的數(shù)據(jù)寬度,下一次傳輸?shù)牡刂穼⑹乔耙淮蝹鬏數(shù)牡刂愤f增 1(對(duì)于字節(jié))、 2(對(duì)于半字)或 4(對(duì)于字)。

為了優(yōu)化封裝操作,可以不管 AHB 外設(shè)端口上傳輸?shù)臄?shù)據(jù)的大小,將外設(shè)地址的增量偏移大小固定下來。DMA_SxCR 寄存器中的 PINCOS 位用于將增量偏移大小與外設(shè) AHB 端口或32 位地址(此時(shí)地址遞增 4)上的數(shù)據(jù)大小對(duì)齊。PINCOS 位僅對(duì) AHB 外設(shè)端口有影響。

如果將 PINCOS 位置 1,則不論 PSIZE 值是多少,下一次傳輸?shù)牡刂房偸乔耙淮蝹鬏數(shù)牡刂愤f增 4(自動(dòng)與 32 位地址對(duì)齊) 。但是, AHB 存儲(chǔ)器端口不受此操作影響。

如果 AHB 外設(shè)端口或 AHB 存儲(chǔ)器端口分別請(qǐng)求突發(fā)事務(wù),為了滿足 AMBA 協(xié)議(在固定地址模式下不允許突發(fā)事務(wù)),則需要將 PINC 或 MINC 位置 1。

8、循環(huán)模式

循環(huán)模式可用于處理循環(huán)緩沖區(qū)和連續(xù)數(shù)據(jù)流(例如 ADC 掃描模式)。可以使用 DMA_SxCR 寄存器中的 CIRC 位使能此特性。

當(dāng)激活循環(huán)模式時(shí),要傳輸?shù)臄?shù)據(jù)項(xiàng)的數(shù)目在數(shù)據(jù)流配置階段自動(dòng)用設(shè)置的初始值進(jìn)行加載,并繼續(xù)響應(yīng) DMA 請(qǐng)求。

也就是說,比如我們要從內(nèi)存中采集 64 個(gè)字節(jié)發(fā)送到串口,如果設(shè)置為重復(fù)采集,那么它會(huì)在 64 個(gè)字節(jié)采集完成之后繼續(xù)從內(nèi)存的第一個(gè)地址采集,如此循環(huán)。這里我們?cè)O(shè)置為一次連續(xù)采集完成之后不循環(huán)。所以設(shè)置值為 DMA_Mode_Normal。在我們下面的實(shí)驗(yàn)中,如果設(shè)置此參數(shù)為循環(huán)采集,那么你會(huì)看到串口不停的打印數(shù)據(jù),不會(huì)中斷。

9、雙緩沖模式

此模式可用于所有 DMA1 和 DMA2 數(shù)據(jù)流。

通過將 DMA_SxCR 寄存器中的 DBM 位置 1,即可使能雙緩沖區(qū)模式。

除了有兩個(gè)存儲(chǔ)器指針之外,雙緩沖區(qū)數(shù)據(jù)流的工作方式與常規(guī)(單緩沖區(qū))數(shù)據(jù)流的一樣。使能雙緩沖區(qū)模式時(shí),將自動(dòng)使能循環(huán)模式( DMA_SxCR 中的 CIRC 位的狀態(tài)是“無(wú)關(guān)”),并在每次事務(wù)結(jié)束時(shí)交換存儲(chǔ)器指針。

在此模式下,每次事務(wù)結(jié)束時(shí), DMA 控制器都從一個(gè)存儲(chǔ)器目標(biāo)交換為另一個(gè)存儲(chǔ)器目標(biāo)。這樣,軟件在處理一個(gè)存儲(chǔ)器區(qū)域的同時(shí), DMA 傳輸還可以填充/使用第二個(gè)存儲(chǔ)器區(qū)域。

基于DMA雙緩沖模式的的特點(diǎn),應(yīng)用中必須開辟兩個(gè)存儲(chǔ)區(qū)以及存放兩個(gè)存儲(chǔ)區(qū)首地址的存儲(chǔ)寄存器,DMA_SxM0AR和DMA_SxM1AR。

1:DMA_SxM0AR:指向存儲(chǔ)區(qū)0(DMA_Memory_0),單緩沖模式下默認(rèn)使用該寄存器做存儲(chǔ)區(qū)指針。

2:DMA_SxM1AR:指向存儲(chǔ)區(qū)1(DMA_Memory_1),僅在DMA雙緩沖模式下才能使用。

3:DMA正在訪問的當(dāng)前存儲(chǔ)區(qū)由DMA_SxCR表示

CT:當(dāng)前目標(biāo)

CT = 0:DMA正在訪問存儲(chǔ)區(qū)0,CPU可以訪問存儲(chǔ)區(qū)1。

CT = 1:DMA正在訪問存儲(chǔ)區(qū)1,CPU可以訪問存儲(chǔ)區(qū)0。

優(yōu)點(diǎn):

使用DMA雙緩沖傳輸,既可以減少CPU的負(fù)荷,又能最大程度地實(shí)現(xiàn)DMA數(shù)據(jù)傳輸和CPU數(shù)據(jù)處理互不打擾又互不耽擱,DMA雙緩沖模式的循環(huán)特性,使用它對(duì)存儲(chǔ)區(qū)的空間容量要求也會(huì)大大降低。尤其在大批量數(shù)據(jù)傳送時(shí),你只需開辟兩個(gè)合適大小的存儲(chǔ)區(qū),能滿足DMA在切換存儲(chǔ)區(qū)時(shí)的當(dāng)前新存儲(chǔ)區(qū)空出來就好,并不一定要開辟多大多深的存儲(chǔ)空間,單純一味地加大雙緩沖區(qū)的深度并不明顯改善數(shù)據(jù)傳輸狀況。

10、代碼

標(biāo)準(zhǔn)外設(shè)庫(kù)配置代碼:

/* Configure DMA Stream */DMA_InitStructure.DMA_Channel = DMA_Channel_0;DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer;DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DST_Buffer;DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToMemory;DMA_InitStructure.DMA_BufferSize = (uint32_t)32;DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;DMA_InitStructure.DMA_Priority = DMA_Priority_High;DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;。 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;DMA_Init(DMA2_Stream0, &DMA_InitStructure);

DMA_Channel :

設(shè)置 DMA 數(shù)據(jù)流對(duì)應(yīng)的通道,供每個(gè)數(shù)據(jù)流選擇的通道請(qǐng)求多達(dá) 8 個(gè),取值有

#define DMA_Channel_0 ((uint32_t)0x00000000)#define DMA_Channel_1 ((uint32_t)0x02000000)#define DMA_Channel_2 ((uint32_t)0x04000000)#define DMA_Channel_3 ((uint32_t)0x06000000)#define DMA_Channel_4 ((uint32_t)0x08000000)#define DMA_Channel_5 ((uint32_t)0x0A000000)#define DMA_Channel_6 ((uint32_t)0x0C000000)#define DMA_Channel_7 ((uint32_t)0x0E000000)

DMA_PeripheralBaseAddr :

DMA 傳輸?shù)耐庠O(shè)基地址,假設(shè)進(jìn)行uart1串口DMA 傳輸,我們可以按照寄存器的地址偏移直接設(shè)置地址:0x40011004,也可以直接使用ST提供庫(kù)的表示方法:&USART1-》DR。

DMA_Memory0BaseAddr :

DMA 傳輸?shù)膬?nèi)存基地址。

DMA_DIR:

設(shè)置數(shù)據(jù)傳輸方向,有存儲(chǔ)器到存儲(chǔ)器,存儲(chǔ)器到外設(shè),外設(shè)到存儲(chǔ)器三種選擇,取值有:

#define DMA_DIR_PeripheralToMemory ((uint32_t)0x00000000)#define DMA_DIR_MemoryToPeripheral ((uint32_t)0x00000040) #define DMA_DIR_MemoryToMemory ((uint32_t)0x00000080)

DMA_BufferSize:

設(shè)置一次傳輸數(shù)據(jù)量的大小

DMA_PeripheralInc:

設(shè)置傳輸數(shù)據(jù)的時(shí)候外設(shè)地址是不變還是遞增,如果設(shè)置為遞增,那么下一次傳輸?shù)臅r(shí)候地址加 1,取值有:

#define DMA_PeripheralInc_Enable ((uint32_t)0x00000200)#define DMA_PeripheralInc_Disable ((uint32_t)0x00000000)

DMA_MemoryInc:

設(shè)置傳輸數(shù)據(jù)時(shí) 候內(nèi)存地址 是否遞增。這個(gè)參數(shù)和DMA_PeripheralInc 意思接近,只不過針對(duì)的是內(nèi)存(存儲(chǔ)器),取值有:

#define DMA_MemoryInc_Enable ((uint32_t)0x00000400) #define DMA_MemoryInc_Disable ((uint32_t)0x00000000)

DMA_PeripheralDataSize:

設(shè)置外設(shè)的數(shù)據(jù)長(zhǎng)度是為字節(jié)傳輸(8bits),半字 傳 輸 (16bits) 還 是 字 傳 輸 (32bits),取值有:

#define DMA_PeripheralDataSize_Byte ((uint32_t)0x00000000) #define DMA_PeripheralDataSize_HalfWord ((uint32_t)0x00000800)#define DMA_PeripheralDataSize_Word ((uint32_t)0x00001000)

DMA_MemoryDataSize:

用來設(shè)置內(nèi)存的數(shù)據(jù)長(zhǎng)度。

DMA_Mode:

設(shè)置 DMA 模式是否循環(huán)采集,取值有:

#define DMA_Mode_Normal ((uint32_t)0x00000000) #define DMA_Mode_Circular ((uint32_t)0x00000100)

DMA_Priority:

設(shè)置 DMA 通道的優(yōu)先級(jí),有低,中,高,超高三種模式。就是仲裁器仲裁的時(shí)候用的,當(dāng)多個(gè)數(shù)據(jù)流同時(shí)開啟,DMA仲裁器優(yōu)先處理優(yōu)先級(jí)高的數(shù)據(jù)流,取值有:

#define DMA_Priority_Low ((uint32_t)0x00000000) #define DMA_Priority_Medium ((uint32_t)0x00010000)#define DMA_Priority_High ((uint32_t)0x00020000) #define DMA_Priority_VeryHigh ((uint32_t)0x00030000)

DMA_FIFOMode:

設(shè)置是否開啟 FIFO 模式,取值有:

#define DMA_FIFOMode_Disable ((uint32_t)0x00000000) #define DMA_FIFOMode_Enable ((uint32_t)0x00000004)

DMA_FIFOThreshold:

選擇 FIFO 閾值,只有上個(gè)參數(shù)選擇使能FIFO,這個(gè)參數(shù)才有用。取值有:

#define DMA_FIFOThreshold_1QuarterFull ((uint32_t)0x00000000)#define DMA_FIFOThreshold_HalfFull ((uint32_t)0x00000001)#define DMA_FIFOThreshold_3QuartersFull ((uint32_t)0x00000002) #define DMA_FIFOThreshold_Full ((uint32_t)0x00000003)

DMA_MemoryBurst:

配置存儲(chǔ)器突發(fā)傳輸配置??梢赃x擇為 4 個(gè)節(jié)拍的增量突發(fā)傳輸 ,8 個(gè)節(jié)拍的增量突發(fā)傳輸 , 16 個(gè)街拍的增量突發(fā)傳輸以及單次傳輸。取值有:

#define DMA_MemoryBurst_Single ((uint32_t)0x00000000) #define DMA_MemoryBurst_INC4 ((uint32_t)0x00800000) #define DMA_MemoryBurst_INC8 ((uint32_t)0x01000000) #define DMA_MemoryBurst_INC16 ((uint32_t)0x01800000)

DMA_PeripheralBurst:

配置外設(shè)突發(fā)傳輸配置。跟前面一個(gè)參數(shù)DMA_MemoryBurst 作用類似,只不過一個(gè)針對(duì)的是存儲(chǔ)器。取值有:

#define DMA_PeripheralBurst_Single ((uint32_t)0x00000000) #define DMA_PeripheralBurst_INC4 ((uint32_t)0x00200000) #define DMA_PeripheralBurst_INC8 ((uint32_t)0x00400000) #define DMA_PeripheralBurst_INC16 ((uint32_t)0x00600000)

責(zé)任編輯:haq

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

    關(guān)注

    114

    文章

    17800

    瀏覽量

    193538
  • STM32
    +關(guān)注

    關(guān)注

    2310

    文章

    11166

    瀏覽量

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

    關(guān)注

    3

    文章

    582

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    為什么不同芯片型號(hào)的串口開啟DMA編譯結(jié)果不同?

    這是STM32F103打開串口DMA的編譯結(jié)果 這是STM32G431的編譯結(jié)果: G431會(huì)有七個(gè)報(bào)錯(cuò),顯示的都是IRQn未聲明
    發(fā)表于 09-23 06:42

    GD32的串口DMA收發(fā)數(shù)據(jù)失敗怎么解決?

    我在使用RTT的GD32F303的BSP時(shí),配置使用串口DMA收發(fā)(rt_device_open),發(fā)現(xiàn)錯(cuò)誤,最終無(wú)法收發(fā)數(shù)據(jù),對(duì)比了STM32的BSP發(fā)現(xiàn)在drv_usart.c中
    發(fā)表于 09-17 06:04

    STM32H743 UART DMA接收不到數(shù)據(jù)是為什么?

    主分支的bsp下stm32 拷貝的 配置如下: /* Device Drivers */ #define RT_USING_DEVICE_IPC #define
    發(fā)表于 09-11 07:14

    STM32項(xiàng)目分享:智能廚房安全系統(tǒng)(機(jī)智云)

    01—項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能廚房安全系統(tǒng)(機(jī)智云)功能如下:STM32F103C8T6單片機(jī)作為主控芯片檢測(cè)功能:檢測(cè)環(huán)
    的頭像 發(fā)表于 09-10 00:01 ?1124次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:智能廚房安全系統(tǒng)(機(jī)智云)

    stm32支持canfd和dma結(jié)合使用嗎?

    stm32支持canfd和dma結(jié)合使用嗎
    發(fā)表于 08-01 07:15

    求助,關(guān)于stm32H7多DMA數(shù)據(jù)流問題求解

    情況如下:stm32H7配置了一個(gè)adc進(jìn)行采樣,通過dma進(jìn)行數(shù)據(jù)傳輸,串口接收和發(fā)送命令,用兩個(gè)dma數(shù)據(jù)流通道,采用的空閑中斷。 問題:adc一直在中斷中,調(diào)試未進(jìn)入串口中斷,關(guān)閉adc后串口
    發(fā)表于 07-29 15:02

    STM32項(xiàng)目分享:智能語(yǔ)音臺(tái)燈(機(jī)智云)

    01—項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能語(yǔ)音臺(tái)燈(機(jī)智云)功能如下:STM32F103C8T6單片機(jī)作為主控單元按鍵切換模式,支持自
    的頭像 發(fā)表于 07-24 18:03 ?1595次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:智能語(yǔ)音臺(tái)燈(機(jī)智云)

    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ù)的控制更加簡(jiǎn)單快捷。 DMA 控制功能由
    的頭像 發(fā)表于 07-02 19:47 ?2054次閱讀
    NVMe IP高速傳輸卻不依賴XDMA設(shè)計(jì)之五:<b class='flag-5'>DMA</b> 控制單元設(shè)計(jì)

    STM32項(xiàng)目分享:智能鞋柜

    01—項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能鞋柜功能如下:DHT11檢測(cè)鞋柜溫濕度,溫度低于閾值開啟加熱,濕度高于閾值開啟加熱和通風(fēng);P
    的頭像 發(fā)表于 05-27 18:04 ?1016次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:智能鞋柜

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

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

    STM32項(xiàng)目分享:STM32智能語(yǔ)音分類垃圾桶

    01—項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能語(yǔ)音分類垃圾桶功能如下:1.STM32F103C8T6單片機(jī)系統(tǒng)板作為主控單元2.舵機(jī)驅(qū)動(dòng)垃
    的頭像 發(fā)表于 03-15 10:02 ?3010次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:<b class='flag-5'>STM32</b>智能語(yǔ)音分類垃圾桶

    STM32項(xiàng)目分享:STM32智能語(yǔ)音臺(tái)燈

    —項(xiàng)目簡(jiǎn)介1.功能詳解STM32智能語(yǔ)音臺(tái)燈功能如下:1.STM32F103C8T6單片機(jī)系統(tǒng)板作為主控單元2.按鍵切換模式,支
    的頭像 發(fā)表于 03-15 10:02 ?3064次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目分享:<b class='flag-5'>STM32</b>智能語(yǔ)音臺(tái)燈

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,使用的HAL庫(kù)+MX配置的,示波器觀察波形ADC中斷進(jìn)入一次,DMA中斷在ADC中斷前后各進(jìn)了一次 定
    發(fā)表于 03-14 12:46

    求助,關(guān)于STM32F407 DMA NVIC設(shè)置的疑問求解

    采用STM32F407, DMA1 stream5(request: usart2_rx)DMA1 stream6(usart2_tx), USART2 global interrupt優(yōu)先級(jí)設(shè)置為
    發(fā)表于 03-13 08:09

    STM32H7ZGT6使用SPI+DMA方式驅(qū)動(dòng)屏幕,使用DMA方式會(huì)花屏,為什么?

    STM32H7ZGT6使用SPI+DMA方式驅(qū)動(dòng)屏幕時(shí)候,使用阻塞式發(fā)送不會(huì)花屏幕,但是使用DMA方式會(huì)花屏。
    發(fā)表于 03-12 06:03