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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

AT32F435/437 EDMA基本功能講解和案列解析

0739hhbb ? 來源:AT32 MCU 雅特力科技 ? 作者:AT32 MCU 雅特力科技 ? 2022-12-19 15:13 ? 次閱讀

EDMA簡介

EDMA控制器的作用不僅在增強系統(tǒng)性能并減少處理器的中斷生成,而且還針對32位MCU應用程序專門優(yōu)化設計。EDMA控制器為存儲器到存儲器,存儲器到外設和外設到存儲器的傳輸提供了八個數(shù)據(jù)流通道。每個通道都支持外設的DMA請求映射到任意數(shù)據(jù)流上、數(shù)據(jù)的打包與拆包、FIFO開啟與關閉、burst數(shù)據(jù)傳輸模式、存儲器端的雙buffer模式、可配置數(shù)據(jù)鏈傳輸、二維傳輸功能?;趶碗s的總線矩陣架構,將功能強大的雙AHB總線架構與獨立的FIFO結合在一起,優(yōu)化了系統(tǒng)的帶寬。

圖1. EDMA控制器架構
1626b0da-7d26-11ed-8abf-dac502259ad0.png

DMAMUX簡介

對于如何將外設的DMA請求映射到任意的數(shù)據(jù)流通道上,就需要使用到DMAMUX。DMAMUX針對每個外設都設計了獨有的ID號,使用者只需要將此ID號寫入對應的寄存器中并打開DMAMUX功能即可。DMAMUX的引入,使得EDMA相較于傳統(tǒng)DMA控制器變得更加靈活,使用者可以隨意的分配8個數(shù)據(jù)流通道的使用情況,不必再糾結與某個IP的DMA請求只能固定使用在某個或某幾個通道上。

各IP對應ID號如下表:

表1. 各IP對應ID號列表
164d474a-7d26-11ed-8abf-dac502259ad0.png ?
注:表格中“DMAMUX請求”為ID號;“來源”為各IP的DMA請求。

EDMA功能解析

基本配置

圖2. EDMA基本參數(shù)配置
1686fd28-7d26-11ed-8abf-dac502259ad0.png ?
EDMA傳輸所需要的基本參數(shù)配置如上圖所示,列舉如下
內(nèi)存端口

― 地址(M0ADDR)

― 數(shù)據(jù)寬度(MWIDTH):8位、16位、32位

― 地址地址模式(MINCM):固定、遞增

― 突發(fā)傳輸(MBURST):單次(1)、4、8、16節(jié)拍

外設端口

― 地址(PADDR)

― 數(shù)據(jù)寬度(PWIDTH):8位、16位、32位

― 地址地址模式(PINCM):固定、遞增

― 突發(fā)傳輸(PBURST):單次(1)、4、8、16節(jié)拍

其他

― 傳輸方向(DTD):外設到內(nèi)存、內(nèi)存到外設、內(nèi)存到內(nèi)存

― 通道優(yōu)先級(SPL):低、中、高、非常高

― 數(shù)據(jù)傳輸個數(shù)(DTCNT):范圍1~65535

― FIFO配置

― 流使能(SEN)

FIFO功能

1、功能介紹

EDMA控制器每個數(shù)據(jù)流都擁有獨立的4 word fifo,這使得EDMA傳輸變得更加靈活,所傳輸?shù)臄?shù)據(jù)在FIFO內(nèi)可進行打包與拆包操作,不再限制源與目標的數(shù)據(jù)總線寬度必須相等。 在FIFO模式下,源和目標數(shù)據(jù)寬度可以通過SxCTRL寄存器PWIDTH與MWIDTH位配置(byte,halfword,word),且允許PWIDTH與MWIDTH不同。

當PWIDTH與MWIDTH不同時:

EDMA要傳輸?shù)臄?shù)據(jù)寬度等于PWIDTH,例如PWIDTH=halfword,則需傳輸?shù)臄?shù)據(jù)量為SxDTCNT*2。

EDMA控制器僅按照小字節(jié)序尋址源和目標。

FIFO模式下外設到內(nèi)存?zhèn)鬏斶壿?/strong>

圖3. FIFO模式外設到內(nèi)存?zhèn)鬏?br />
16be520a-7d26-11ed-8abf-dac502259ad0.png ?

如上圖所示,例如FIFO閾值設置成1/4,外設和內(nèi)存端數(shù)據(jù)都為字節(jié)。 剛開始FIFO狀態(tài)為空,外設傳輸4筆數(shù)據(jù)后,F(xiàn)IFO狀態(tài)為1/4,此時達到FIFO閾值,一次傳輸4個字節(jié)到內(nèi)存。

FIFO模式下內(nèi)存到外設傳輸邏輯

圖4. FIFO模式內(nèi)存到外設傳輸

16e1bd80-7d26-11ed-8abf-dac502259ad0.png ?

如上圖所示,例如FIFO閾值設置成1/4,外設和內(nèi)存端數(shù)據(jù)都為字節(jié)。 剛開始FIFO狀態(tài)為空,當使能數(shù)據(jù)流后,立即從內(nèi)存?zhèn)鬏?6個字節(jié)到FIFO,此時FIFO狀態(tài)為滿,然后外設傳輸4筆數(shù)據(jù)后,F(xiàn)IFO狀態(tài)為3/4,此時達到FIFO閾值,一次從內(nèi)存?zhèn)鬏?個字節(jié)到FIFO,再次填滿FIFO。

FIFO模式下內(nèi)存到內(nèi)存?zhèn)鬏斶壿?/strong>

當使能數(shù)據(jù)流后,開始從源內(nèi)存?zhèn)鬏敂?shù)據(jù)到FIFO,當達到FIFO閾值時,F(xiàn)IFO里的數(shù)據(jù)將被全部傳輸?shù)侥繕藘?nèi)存,然后重復此步驟直到傳輸完成。 在直接模式下(SxFCTRL內(nèi)FEN=0),不可進行數(shù)據(jù)的打包與拆包。這種情況下,不允許源與目標的數(shù)據(jù)寬度不相等。數(shù)據(jù)寬度由PWIDTH定義,MWIDTH的設定無效。

直接模式下外設到內(nèi)存?zhèn)鬏斶壿?/strong>

圖5. 直接模式外設到內(nèi)存?zhèn)鬏?br />
170ca90a-7d26-11ed-8abf-dac502259ad0.png ?

當產(chǎn)生DMA請求后,數(shù)據(jù)從外設傳輸?shù)紽IFO,然后FIFO內(nèi)的數(shù)據(jù)將會立即傳輸?shù)絻?nèi)存。

直接模式下內(nèi)存到外設傳輸邏輯

圖6. 直接模式內(nèi)存到外設傳輸

172139ec-7d26-11ed-8abf-dac502259ad0.png ?


當使能數(shù)據(jù)流后,立即從內(nèi)存?zhèn)鬏斠粋€數(shù)據(jù)到FIFO(數(shù)據(jù)大小由PWIDTH決定),當產(chǎn)生 DMA請求后,立即將數(shù)據(jù)從FIFO傳輸?shù)酵庠O,然后再次從內(nèi)存?zhèn)鬏斠粋€數(shù)據(jù)到FIFO。

數(shù)據(jù)打包與拆包示意圖如下:

圖7. EDMA數(shù)據(jù)打包示意圖

17361538-7d26-11ed-8abf-dac502259ad0.png ?

圖8. EDMA數(shù)據(jù)拆包示意圖

175f7e96-7d26-11ed-8abf-dac502259ad0.png

外設端口可以是源或者目標(在Memory to memory模式下,也可以是存儲器源),在使用FIFO時,一定要合理配置PWIDTH、MWIDTH和SxDTCNT,已確保數(shù)據(jù)傳輸?shù)耐暾?,在PWIDTH小于MWIDTH時,需要按照如下條件配置:

表2. PWIDTH和MWIDTH與SxDTCNT的限制條件

17790bd6-7d26-11ed-8abf-dac502259ad0.png

FIFO可配置閾值級別,軟件可配置為1/4、1/2、3/4、滿這四種狀態(tài)(通過SxFCTRL寄存器FTHSEL配置),并且可通過SxFCTRL寄存器的FSTS位觀察FIFO當前狀態(tài)。

2、軟件接口

設置FIFO的軟件接口包含在EDMA配置結構體內(nèi),以結構體成員的方式呈現(xiàn),如下:

1794bf16-7d26-11ed-8abf-dac502259ad0.png

第一項為配置FIFO是否使能,當為TURE時,表示FIFO使能;當為FALSE時,表示FIFO禁止第二項為FIFO閾值設定,其選項可以是1/4、1/2、3/4和滿這四種狀態(tài)。

突發(fā)傳輸功能

功能介紹

圖9. 突發(fā)傳輸示意圖


17b96c58-7d26-11ed-8abf-dac502259ad0.png


EDMA控制器可產(chǎn)生單次傳輸或4個、8個、16個節(jié)拍的突發(fā)傳輸。突發(fā)傳輸數(shù)量通過SxCTRL寄存器的PBURST與MBURST位設定。 如上圖所示,傳輸方向為內(nèi)存到外設,內(nèi)存端MBURST=4,每一次數(shù)據(jù)傳輸,DMA都會從內(nèi)存連續(xù)傳輸4個數(shù)據(jù)到FIFO(數(shù)據(jù)可以為字節(jié)、半字、字)。外設端PBURST=8,每一次數(shù)據(jù)傳輸,DMA都會從FIFO連續(xù)傳輸8個數(shù)據(jù)到外設(數(shù)據(jù)可以為字節(jié)、半字、字)。

突發(fā)傳輸數(shù)量是按照節(jié)拍數(shù)來計算的,并非按照字節(jié)數(shù)計數(shù),例如PBURST=4,PWIDTH=halfword,則一次突發(fā)傳輸?shù)臄?shù)據(jù)量為4*2bytes。 突發(fā)傳輸只能在FIFO模式下才可使用;在直接模式下,數(shù)據(jù)流只能生成單次傳輸,而MBURST和PBURST位由硬件強制配置。

根據(jù)單次傳輸或突發(fā)傳輸?shù)呐渲?,每個DMA的請求在AHB外設端口上啟動相應配置下的數(shù)據(jù)量傳輸:

當AHB外設端口配置為單次傳輸時,根據(jù)PWIDTH配置的值,每次DMA請求傳輸一個byte、halfword或者word。

當AHB外設端口配置為突發(fā)傳輸時,根據(jù)PWIDTH配置的值,每次DMA請求傳輸4個、8個、16個byte、halfword或者word。

注:源和目的地址自增模式下,才可使用突發(fā)傳輸。

EDMA的FIFO閾值設定與存儲器突發(fā)傳輸大小需要滿足一定的關系才能正常啟動數(shù)據(jù)流,否則在啟動數(shù)據(jù)流時,就會產(chǎn)生FIFOerror,然后將禁止數(shù)據(jù)流。FIFO閾值設定與存儲器突發(fā)傳輸大小關系需滿足如下:

表3. MWIDTH與MBURST配置關系

17e29678-7d26-11ed-8abf-dac502259ad0.png

從此表個可以得出結論:突發(fā)傳輸數(shù)據(jù)量與數(shù)據(jù)大小乘積不能超過FIFO閾值大小。

軟件接口

設置突發(fā)傳輸軟件接口與設置FIFO類似,其被包含在EDMA配置結構體內(nèi),以結構體成員的方式呈現(xiàn): 18169f68-7d26-11ed-8abf-dac502259ad0.png

第一項為配置外設端口突發(fā)傳輸量;第二項為配置內(nèi)存端口突發(fā)傳輸量。

注:在使用突發(fā)傳輸時,必須使能FIFO模式。

存儲器端雙緩存區(qū)功能

功能介紹

圖10. 雙緩存區(qū)示意圖

183501d8-7d26-11ed-8abf-dac502259ad0.png ?

通過設置SxCTRL寄存器的DMM位,即可使能雙緩存區(qū)功能。與常規(guī)(單緩存區(qū))數(shù)據(jù)流工作模式相比,雙緩存區(qū)功能擁有兩個存儲器指針;啟動雙緩存區(qū)功能時,EDMA控制器的相應數(shù)據(jù)流通道會自動開啟循環(huán)模式,在每次SxDTCNT減到0時自動交換存儲區(qū)。

根據(jù)SxCTRL寄存器的CM位,可知道數(shù)據(jù)流當前使用的存儲區(qū)是memory0/1。當CM=0,表示當前目標是memory0;當CM=1,表示當前目標為memory1。

在使用雙緩存區(qū),需要注意以下幾點:

當硬件正在使用某一塊緩存時,當前緩存的基地址不可改變,即寄存器SxM0ADDR和

SxM1ADDR。例如數(shù)據(jù)流正在將數(shù)據(jù)填入SxM0ADDR時,那么軟件只能改變SxM1ADDR的基地址??筛鶕?jù)CM位的狀態(tài),確定數(shù)據(jù)流當前操作的緩存區(qū)。

當使用雙緩存區(qū)功能時,禁止使用存儲器到存儲器模式。

軟件接口

對于雙緩存區(qū)功能,軟件實現(xiàn)了單獨的函數(shù)接口,如下:

184db066-7d26-11ed-8abf-dac502259ad0.png

對于雙緩存區(qū)功能,第一個緩存區(qū)地址會在EDMA初始化結構體中配置,即SxM0ADDR寄存器的配置。

在配置雙緩存區(qū)功能時,調(diào)用edma_double_buffer_mode_init();函數(shù),此函數(shù)第一個參數(shù)表示當前配置雙緩存區(qū)的數(shù)據(jù)流,第二個參數(shù)為第二個緩存區(qū)的地址,第三個參數(shù)為啟動后硬件使用的緩存區(qū)。 以上函數(shù)的調(diào)用,雙緩存區(qū)功能就配置好了,現(xiàn)在只需要調(diào)用 edma_double_buffer_mode_enable();函數(shù)開啟雙緩存區(qū)功能即可。

鏈接列表傳輸功能

功能介紹

鏈接列表傳輸可實現(xiàn)將幾塊不連續(xù)的存儲區(qū)的數(shù)據(jù)使用同一個數(shù)據(jù)流按照一定順序發(fā)送出去或者同一數(shù)據(jù)流接收到數(shù)據(jù)按照一定順序存儲在幾塊不連續(xù)的存儲區(qū)內(nèi)。 EDMA控制器如何知道數(shù)據(jù)存儲規(guī)則的呢?此規(guī)則是由軟件按照特定格式給出的,其格式如下圖所示: 圖11. 鏈接描述符格式

1877d120-7d26-11ed-8abf-dac502259ad0.png

將此格式成為鏈接描述符,此描述符存儲在片上存儲器中,當打開數(shù)據(jù)流時,EDMA 控制器從片上存儲器加載此描述符配置數(shù)據(jù)流,然后開啟數(shù)據(jù)的傳輸。

描述符分為4項:

數(shù)據(jù)流基礎配置和數(shù)據(jù)傳輸數(shù)量配置

外設基地址

存儲器基地址

下一個描述符的首地址

通過描述符的具體實現(xiàn),最終實現(xiàn)一個單向鏈表結構,如下:

圖12. 鏈接描述符鏈表結構

189cb2b0-7d26-11ed-8abf-dac502259ad0.png

注:描述符在片上存儲地址必須要4 word對齊,否則不能正常啟動數(shù)據(jù)流。

軟件接口

對于鏈接列表傳輸功能,軟件單獨實現(xiàn)了函數(shù)接口,如下:

18c21604-7d26-11ed-8abf-dac502259ad0.png

第一個函數(shù)是對鏈接列表傳輸功能的一些配置。參數(shù)有兩個,第一個參數(shù)表示所配置的數(shù)據(jù)流號,第二個參數(shù)表示鏈表描述符的首地址。

經(jīng)過此函數(shù)的配置后,只需調(diào)用第二個函數(shù)即可開啟鏈表傳輸功能。

二維處理功能

功能介紹 二維數(shù)據(jù)傳輸(2D)功能,使用者可以較為方便的對數(shù)據(jù)塊進行一些操作,提高對數(shù)據(jù)的處理效率,在圖像處理方面效果較為明顯。

EDMA為二維數(shù)據(jù)傳輸(2D)提供了4個可配置的參數(shù)值:

DMA_Sx2DCNT中的XCOUNT:跳轉到下一個跨步之前要傳輸?shù)臄?shù)據(jù)計數(shù);

DMA_Sx2DCNT中的YCOUTNT:迭代計數(shù);

DMA_Sx2DSTRIDE中的SRCSTD:源跨步值,該值應在源端迭代之前添加或減去;

DMA_Sx2DSTRIDE中的DSTSTD:目的跨步值,該值應在目標端迭代之前添加或減去。

二維數(shù)據(jù)傳輸(2D)舉例:

表4. 2D傳輸舉例

18e69b6e-7d26-11ed-8abf-dac502259ad0.png

傳輸前數(shù)據(jù)在源存儲器中:

圖13. 2D傳輸前數(shù)據(jù)

195d7e8c-7d26-11ed-8abf-dac502259ad0.png

傳輸后數(shù)據(jù)在目的存儲器中:

圖14. 2D傳輸后數(shù)據(jù)

1980e890-7d26-11ed-8abf-dac502259ad0.png

圖4和圖5的陰影部分為真實數(shù)據(jù)。根據(jù)圖中可以清晰看到將數(shù)據(jù)看成二維的存儲在存儲器中,2D傳輸將此數(shù)據(jù)塊的左邊1/2的數(shù)據(jù)取走并存儲在新二維數(shù)據(jù)塊的上1/2處。

在使用二維傳輸時,有一些限制條件需要注意:

僅支持memory to memory傳輸

PWIDTH和MISZE需要設置為0x2(字)

源和目標跨步值需與字對齊

源和目標跨步值均為二補數(shù)

PINCM和MINCM均需設置為1(增量模式)

PFCTRL需設置為0

PINCOS需設置為0

不支持循環(huán)模式、雙緩沖模式

不支持鏈接列表傳輸

軟件接口 對于二維數(shù)據(jù)傳輸功能,軟件單獨實現(xiàn)了接口函數(shù),如下:

19ae5956-7d26-11ed-8abf-dac502259ad0.png

通過函數(shù)edma_2d_init(); 可以配置二維傳輸?shù)脑纯绮?、目的跨步、XCNT和YCNT,這四個參數(shù)的在使能2D傳輸前就需要配置好;然后調(diào)用函數(shù)edma_2d_enable();即可開啟二維傳輸功能。

EDMA配置解析

以下對EDMA的配置接口及流程進行說明。

函數(shù)接口

表5. 數(shù)據(jù)流配置函數(shù)列表

19cd36dc-7d26-11ed-8abf-dac502259ad0.png ? ?

數(shù)據(jù)流配置

設置外設地址(SxPADDR寄存器)

數(shù)據(jù)傳輸?shù)某跏纪庠O地址,在傳輸過程中(SEN=1)不可被改變。

設置存儲器地址(SxM0ADDR寄存器)

數(shù)據(jù)傳輸?shù)某跏純?nèi)存地址,在傳輸過程中(SEN=1)不可被改變。

數(shù)據(jù)流配置(SxCTRL寄存器)

包含優(yōu)先級,數(shù)據(jù)傳輸方向、模式和寬度,地址增量模式、循環(huán)模式、雙緩沖模式和傳輸/半傳輸/傳輸錯誤中斷使能位。

優(yōu)先級(SPL)

分為4個等級,最高優(yōu)先級、高優(yōu)先級、中等優(yōu)先級和低優(yōu)先級。 若有2個流優(yōu)先級設定相同,則較低編號的流有較高的優(yōu)先權。舉例,流1優(yōu)先于流2。

數(shù)據(jù)傳輸方向(DTD)

分為存儲器到外設(M2P),外設到存儲器(P2M)或存儲器到存儲器(M2M)傳輸。 在存儲器到存儲器傳輸模式下不允許使用循環(huán)模式、雙緩沖模式和直接模式。

數(shù)據(jù)傳輸寬度(PWIDTH/MWIDTH)

根據(jù)實際使用情景,可配置寬度為byte、halfword、word;EDMA內(nèi)部的打包、拆包機制允許PWIDTH與MWIDTH寬度不一致。

地址增量模式(PINCM/MINCM)

當流配置設定為增量模式時,下一筆傳輸?shù)牡刂穼⑹乔耙还P傳輸?shù)刂芳由蟼鬏攲挾龋≒WIDTH/MWIDTH)。

數(shù)據(jù)傳輸模式(PBURST/MBURST)

分為單次傳輸(SINGLE),或突發(fā)傳輸(BURST)。 突發(fā)傳輸,在每個DMA請求到來后,根據(jù)配置傳輸4、8、16拍。 在非增量模式下,設置突發(fā)傳輸會將4、8、16拍突發(fā)傳輸轉換為4、8或16個單次傳輸。 在直接模式下,PBURST和MBURST位被硬件強制為0(單次傳輸)

外設流控選擇(PFCTRL)

若選擇外設做為流控制(PFCTRL=1),硬件會將DMA_SxDTCNT的值強制為0xFFFF,并由外設的dma_ch_lt信號指示數(shù)據(jù)傳輸結束。外設流控制不支持M2M模式和循環(huán)模式。

循環(huán)模式(LM)

當流配置設定為循環(huán)模式時,在最后一次傳輸后 SxDTCNT 寄存器的內(nèi)容會恢復成初始值。

雙緩存模式(DMM)

當流配置設定為雙緩沖模式時,硬件會自動啟用循環(huán)模式。雙緩沖區(qū)流有兩個存儲器指針 SxM0ADR/SxM1ADR,由CT位標示當前使用之存儲器指針,允許軟件在DMA填充/使用第二個存儲區(qū)的同時處理另一個存儲區(qū)。

直接模式與FIFO模式設定(SxFCTRL寄存器) 包含F(xiàn)IFO閾值選擇,直接模式禁用和FIFO錯誤中斷使能位。

FIFO閾值選擇(FTHSEL)

分為1/4、2/4、3/4和全FIFO閾值;該設定僅在非直接模式下有效。

FIFO模式使能(FEN)

直接模式(FEN=0)僅可在P2M或M2P模式下使用,且外設/存儲器傳輸寬度需相等(MWIDTH=PWIDTH)并設定為單次傳輸(PBURST=MBURST=0)。如果選擇M2M模式,該位(FEN)被硬件強制為1。

使能DMAMUX(MUXSEL寄存器的TBL_SEL位) 在非存儲器到存儲器(M2M)模式下時,需要使能 DMAMUX 功能,才能啟動數(shù)據(jù)流響應外設的DMA請求。

寫入外設ID號(MUXSxCTRL寄存器的REQSEL) 在非存儲器到存儲器(M2M)模式下時,需要將外設的DMA請求ID號寫入,才能啟動數(shù)據(jù)流響應外設的DMA請求。

打開數(shù)據(jù)流(SxCTRL寄存器的SEN位)

配置流程

打開EDMA時鐘;

調(diào)用數(shù)據(jù)流復位函數(shù)復位數(shù)據(jù)流;

調(diào)用結構體初始化函數(shù)初始化數(shù)據(jù)流結構體;

調(diào)用初始化函數(shù)初始化數(shù)據(jù)流;

調(diào)用DMAMUX使能函數(shù)以及ID號寫入函數(shù)配置DMAMUX相關內(nèi)容;

調(diào)用數(shù)據(jù)流使能函數(shù)開啟數(shù)據(jù)流。

案例 數(shù)據(jù)從FLASH傳輸?shù)絊RAM

功能簡介

實現(xiàn)了使用EDMA將數(shù)據(jù)從片上FLASH搬運到內(nèi)部SRAM中。

資源準備

1) 硬件環(huán)境: 對應產(chǎn)品型號的AT-START BOARD 2) 軟件環(huán)境 projectat_start_f4xxexamplesedmaflash_to_sram

軟件設計

1) 配置流程

開啟EDMA外設時鐘

配置EDMA數(shù)據(jù)流

開啟傳輸完成中斷

開啟數(shù)據(jù)流

等待數(shù)據(jù)傳輸完成

比較數(shù)據(jù)傳輸是否正確

2)代碼介紹

main函數(shù)代碼描述

19f408e8-7d26-11ed-8abf-dac502259ad0.png

EDMA_Stream1_IRQHandler中斷函數(shù)代碼描述

1a16cefa-7d26-11ed-8abf-dac502259ad0.png

實驗效果

如若數(shù)據(jù)傳輸無誤,LED2/3/4會點亮。

案例 EDMA突發(fā)傳輸

功能簡介

EDMA突發(fā)傳輸為EDMA控制器的特有功能。 使用EDMA的突發(fā)傳輸將數(shù)據(jù)從SRAM傳輸?shù)絋MR1的c1dt至c4dt,實現(xiàn)同時改變TMR1四個通道占空比。

資源準備

1) 硬件環(huán)境: 對應產(chǎn)品型號的AT-START BOARD 2) 軟件環(huán)境 projectat_start_f4xxexamplesedmaurst_mode

軟件設計

1) 配置流程

開啟EDMA/TMR1/GPIOA外設時鐘

配置EDMA數(shù)據(jù)流

配置TMR1的通道1到4輸出PWM波形

開啟傳輸完成中斷

開啟數(shù)據(jù)流

開啟TMR1,使其溢出中斷產(chǎn)生DMA請求

2) 代碼介紹

main函數(shù)代碼描述

1a2d74ca-7d26-11ed-8abf-dac502259ad0.png ? ?

實驗效果

TMR1的通道1到4每個周期會改變一次占空比。

如下為使用邏輯分析儀抓取的幾個通道的輸出波形,可以看到PWM波形的占空比每個周期都在改變。 圖15. Burst傳輸實驗結果 1a6ced62-7d26-11ed-8abf-dac502259ad0.png ? ?

案例 EDMA雙緩沖區(qū)

功能簡介

EDMA存儲器端雙緩存區(qū)為EDMA控制器的特有功能。 本案例使用EDMA的雙緩存區(qū)功能將SRAM內(nèi)部的兩塊數(shù)據(jù)通過IIS3傳輸給IIS2并存儲在SRAM內(nèi)的另外兩個數(shù)據(jù)塊中。i2s3_buffer1_tx[32]和i2s3_buffer2_tx[32]為IIS3傳輸?shù)膬蓧K數(shù)據(jù),i2s2_buffer1_rx[32]和i2s2_buffer2_rx[32]為IIS2接收到的數(shù)據(jù)存儲區(qū)域。

資源準備

1) 硬件環(huán)境: 對應產(chǎn)品型號的AT-START BOARD 使用杜邦線將IIS3與IIS2連接起來,連接關系如下: PD0<------->PA4(ws) PD1<------->PC10(sck) PD4<------->PC12(sd) 2) 軟件環(huán)境 projectat_start_f4xxexamplesedmai2s_halfduplex_edma_doublebuffer

軟件設計

1) 配置流程

開啟EDMA/IIS3/IIS2/GPIO外設時鐘

配置EDMA數(shù)據(jù)流,使能雙緩存區(qū)功能

配置IIS3/2

開啟傳輸完成中斷

開啟數(shù)據(jù)流

2) 代碼介紹

代碼描述

1a8b57b6-7d26-11ed-8abf-dac502259ad0.png ? ?

實驗效果

LED2/3/4都點亮則表示數(shù)據(jù)傳輸正確。

案例 EDMA鏈接列表傳輸

功能簡介

EDMA鏈接列表傳輸為EDMA控制器的特有功能。 本案例使用EDMA的鏈接列表傳輸功能,將片上存儲器的3塊區(qū)域的數(shù)據(jù)通過EDMA發(fā)送給USART1,USART1在通過自身的TX引腳將數(shù)據(jù)發(fā)送出去。

資源準備

1) 硬件環(huán)境: 對應產(chǎn)品型號的AT-START BOARD 2) 軟件環(huán)境 projectat_start_f4xxexamplesedmalink_list_mode

軟件設計

1) 配置流程

開啟EDMA/USART1/GPIO外設時鐘

配置EDMA數(shù)據(jù)流,使能鏈接列表傳輸功能

開啟傳輸完成中斷

開啟數(shù)據(jù)流

2) 代碼介紹

代碼描述

1ae0770a-7d26-11ed-8abf-dac502259ad0.png ? ?

實驗效果

LED2/3/4都點亮則表示數(shù)據(jù)傳輸完成,并可通過串口工具查看發(fā)送出來的數(shù)據(jù)。

串口工具接收的數(shù)據(jù)如下圖所示:

圖16. 鏈接列表傳輸實驗結果

1b184db0-7d26-11ed-8abf-dac502259ad0.png ? ?

案例 EDMA二維傳輸

功能簡介

EDMA二維傳輸為EDMA控制器的特有功能。 本案例使用EDMA的二維傳輸功能,將片上存儲器的1塊區(qū)域的數(shù)據(jù)通過EDMA二維傳輸功能剪裁出其左邊1/2,并通過串口打印出來。

資源準備

1) 硬件環(huán)境: 對應產(chǎn)品型號的AT-START BOARD 2) 軟件環(huán)境 projectat_start_f4xxexamplesedma wo_dimension_mode

軟件設計

1) 配置流程

開啟EDMA/USART1/GPIO外設時鐘

配置EDMA數(shù)據(jù)流,使能二維傳輸功能

開啟傳輸完成中斷

開啟數(shù)據(jù)流

2) 代碼介紹

代碼描述

1b362c9a-7d26-11ed-8abf-dac502259ad0.png ? ?

實驗效果

通過串口工具查看發(fā)送出來的數(shù)據(jù)。

串口工具接收的數(shù)據(jù)如下圖所示:

圖17. 二維傳輸實驗結果

1b7304a8-7d26-11ed-8abf-dac502259ad0.png ? ?

審核編輯:湯梓紅

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

    關注

    146

    文章

    16888

    瀏覽量

    349929
  • 控制器
    +關注

    關注

    112

    文章

    16105

    瀏覽量

    177080
  • 存儲器
    +關注

    關注

    38

    文章

    7434

    瀏覽量

    163519
  • EDMA
    +關注

    關注

    0

    文章

    19

    瀏覽量

    9612

原文標題:AT32講堂040 | AT32F435/437 EDMA基本功能講解和案列解析

文章出處:【微信號:AT32 MCU 雅特力科技,微信公眾號:AT32 MCU 雅特力科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AT32F435/437系列安全庫區(qū)的應用原理、軟件使用方法及范例程序

    AT32F435/437 Security Library Application Note主要在闡述AT32F435/437系列安全庫區(qū)的應用原理、軟件使用方法及范例程序。
    發(fā)表于 10-25 07:22

    AT32F435/437時鐘配置

    AT32F435/437時鐘配置主要介紹兩部分內(nèi)容:1、基于雅特力提供的V2.x.x 的板級支持包來進行時鐘源碼的配置及修改2、如何使用配套的時鐘配置工具來進行時鐘路徑及參數(shù)的設定,生成相應的時鐘流程代碼并使用。
    發(fā)表于 10-25 06:18

    AT32F435/437 EDMA使用指南

    AT32F435/437 EDMA使用指南本文主要就EDMA基本功能進行講解
    發(fā)表于 10-25 07:24

    AT32F435/437 I 2C使用指南

    AT32F435/437 I2C使用指南主要就I2C 總線接口的基本功能進行講解和案例解析。
    發(fā)表于 10-25 08:09

    如何提升AT32F435/437性能

    AT32F435/437 Performance Improvement描述了如何通過軟件方法改善AT32F435_437的運行效能。
    發(fā)表于 10-25 07:37

    AT32F435/437 ADC應用說明

    AT32F435/437 ADC使用指南主要以ADC的特色功能進行講解
    發(fā)表于 10-25 08:08

    AT32F435/437xx GPIO使用指南

    AT32F435/437xx的通用功能I/O (GPIO)提供了一系列與外部環(huán)境通訊的接口,可用于MCU與其他嵌入式設備之間通過數(shù)字或模擬方式的通訊。AT32F435/
    發(fā)表于 10-25 08:23

    AT32F435/437 OTGFS應用說明

    AT32F435/437 OTGFS Application Note主要描述AT32 OTGFS 外設特性,OTGFS 支持主機和設備模式。
    發(fā)表于 10-25 07:01

    AT32F435/437 DMA使用指南

    AT32F435/437 擁有 2 個 DMA 控制器(DMA1/DMA2),每個 DMA 支持 7 個通道且外設的 DMA 請求可映射到任意通道上。本文主要就 DMA 的基本功能進行講解
    發(fā)表于 10-25 08:07

    AT32F435&amp;AT32F437入門使用指南

    AT32F435 & AT32F437入門使用指南旨在讓用戶快速使用AT32F435xx /AT32F437xx 進行項目開發(fā),AT32F4
    發(fā)表于 10-26 06:58

    雅特力AT32F435/437 OTGFS應用筆記

    AT32F435/437包含2個獨立的OTGFS,編號OTGFS1和OTGFS2,本章將描述OTGFS支持的一些基本功能。 OTGFS1和OTGFS2特性完全相同。
    的頭像 發(fā)表于 03-08 13:23 ?1830次閱讀
    雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> OTGFS應用筆記

    AT32講堂040 | AT32F435/437 EDMA基本功能講解解析

    EDMA簡介EDMA控制器的作用不僅在增強系統(tǒng)性能并減少處理器的中斷生成,而且還針對32位MCU應用程序專門優(yōu)化設計。EDMA控制器為存儲器到存儲器,存儲器到外設和外設到存儲器的傳輸提供了八個
    的頭像 發(fā)表于 12-19 11:47 ?3344次閱讀
    AT32講堂040 | <b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> <b class='flag-5'>EDMA</b><b class='flag-5'>基本功能講解</b>和<b class='flag-5'>案</b><b class='flag-5'>列</b><b class='flag-5'>解析</b>

    AT32講堂047 | 雅特力AT32F435/437 OTGFS應用筆記

    OTGFS介紹AT32F435/437包含2個獨立的OTGFS,編號OTGFS1和OTGFS2,本章將描述OTGFS支持的一些基本功能。OTGFS1和OTGFS2特性完全相同。圖1OTGFS框圖
    的頭像 發(fā)表于 03-17 09:43 ?2152次閱讀
    AT32講堂047 | 雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> OTGFS應用筆記

    雅特力AT32F435/F437入門使用指南

    搭建AT32開發(fā)環(huán)境一、調(diào)試工具及開發(fā)板目前AT32F435/F437開發(fā)板都自帶AT-Link-EZ調(diào)試工具,AT-Link-EZ如下圖左邊紅框所示,它也可拆開后單獨搭配其他電路板使用,支持IDE在線調(diào)試、在線燒錄、USB轉串口等功能
    的頭像 發(fā)表于 11-10 08:15 ?4898次閱讀
    雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>F437</b>入門使用指南

    AT32F435 & AT32F437入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F435 & AT32F437入門使用指南.pdf》資料免費下載
    發(fā)表于 12-18 11:13 ?1次下載
    <b class='flag-5'>AT32F435</b> & AT32<b class='flag-5'>F437</b>入門使用指南