目錄預覽
1.前言
2.GPDMA 通用指南
3.外設、存儲器和 GPDMA 配置
4.系統性能
1.概述
本應用筆記適用于 STM32U575/585 微控制器,這些微控制器是基于 Arm Cortex核心的器件。
提示: Arm 是 Arm Limited(或其子公司)在美國和/或其他地區的注冊商標。
參考文檔:
? 參考手冊基于 Arm的 STM32U575/585 32 位 MCU(RM0456)
? STM32U585xx 數據手冊(DS13086)
? STM32U575xx 數據手冊(DS13737)
2.GPDMA 通用指南
2.1GPDMA 概述
在減載 CPU 的控制下,GPDMA 控制器通過鏈表執行存儲器映射外設和/或存儲器之間的可編程數據傳輸。
GPDMA 是雙端口 AHB 主設備和系統外設。大多數外設和存儲器都與之建立連接。在需要數據傳輸時,這一點提 供了很大的靈活性并提高了系統性能。鏈表是存儲器中程序化的數據結構,旨在讓每個 GPDMA 通道為鏈接和安排 DMA 數據傳輸做好準備。GPDMA 有 16 個通道。
2.2 GPDMA 通道分配
用戶必須分配一個通道用于 GPDMA 傳輸。為了能夠同時處理來自源的 GPDMA 傳輸(讀訪問)和到達目標的GPDMA 傳輸(寫訪問),GPDMA 對給定 GPDMA 通道使用專用 FIFO。FIFO 單元的單位是一個字節。
FIFO 的大小決定了通道能夠有效處理的最大 DMA 突發大小(突發長度與數據寬度的乘積)。注意,通常突發越大,系統總體性能越好:更高吞吐率/帶寬傳輸,更低系統總線占用率。
鑒于系統總線為 32 位字寬,建議將 DMA 源/目標數據寬度設定為 32 位(GPDMA_CxTR1 中的 S/DDW_LOG2[1:0]),以便最大限度減少總線使用量。
如下表所示,有兩類通道,分別具有不同的 FIFO 大小和尋址模式:
? 通道 0 至 11:
– FIFO 大小為 8 字節(2 字)。
– 尋址限于線性模式:固定尋址(通常用于外設寄存器訪問)或連續數據增量尋址(通常用于存儲器訪問)。
? 通道 12 至 15:
– FIFO 大小為 32 字節(8 字)。
– 支持線性和二維尋址模式:二者均適用于源和目標,可設定兩個地址跳轉/偏移量:
? 每個編程突發后
? 每個編程塊后
建議將通道 0 至 11 分配用于從 AHB/APB 外設到 SRAM 的傳輸或從 SRAM 到 AHB/APB 外設的傳輸,除非存儲器需要二維尋址或外設是支持突發請求的 AHB 外設。
然后,建議將突發設定為 1 字(FIFO 大小的一半),除非應用需要處理 8 或 16 位數據寬度。建議將通道 12 至 15 分配用于存儲器之間的傳輸。然后,出于性能方面的考慮,建議將突發設定為默認的 4 字(FIFO 大小的一半)。
同樣地,將通道 12 至 15 優先用于始于支持突發請求的 AHB 外設,比如 OCTOSPI、HASH 和 ADC。然后,通常將始于/止于外設的半傳輸設定為突發。建議將始于/止于存儲器的(半)傳輸設定為 4 字突發。
對于具有更高帶寬要求的 AHB 外設的始于/止于一些外設的傳輸,同樣優先選擇通道 12 至 15。建議將始于/止于存儲器的(半)傳輸也設定為 4 字突發。
2.3 GPDMA 端口選擇
用戶必須為始于源(GPDMA_CxTR1 中的 SAP)的傳輸分配一個端口,并且為止于目標(GPDMA_CxTR1 中的 DAP)的傳輸分配一個端口。在執行下一次數據傳輸之前,會通過下一個鏈表項和數據結構動態更新此分配。
關于 GPDMA 的總線拓撲可總結如下(參見第 4 節 了解更多信息):
? GPDMA 端口 0 直接連接到 APB1 和 APB2 外設,不穿過 AHB 矩陣(參見圖 2 和圖 4)。
? AHB 矩陣的默認從設備(參見圖 2 和第 4.3.2 節 )為:
– GPDMA 端口 0 的 AHB1 外設(MDF、FMAC 和 CORDIC)
– GPDMA 端口 1 的 SRAM1
建議按照以下方式使用 GPDMA 的兩個主設備端口:
? 將端口 0 分配用于始于/止于外設的(半)傳輸,無論是 AHB 還是 APB 外設。將端口 1 分配用于其他(半) 傳輸(分別止于/始于存儲器)。對于 APB1 和 APB2 外設,端口 0 避免穿過互連矩陣,減少了相應通道上的 總體延遲。這也減少了互連總線矩陣包含的和之后的 AHB 總線活動。
? 端口 1 被分配用于存儲器至存儲器的傳輸(特別是訪問 SRAM1 時,但不僅限于此)。對外設使用端口 0 并 對任何存儲器使用端口 1 的優勢在于:
– 外設至存儲器和存儲器至外設的傳輸過程中兩個端口上的帶寬平衡
– 避免至存儲器的突發直接影響外設訪問的延遲
這是針對性能的典型和推薦配置。當然,用戶可以自由地選擇任何可以訪問源位置的端口,以及任何可以訪問目標 位置的端口。
當通道未激活時,GPDMA 為加載下一個鏈表項而分配的鏈接端口由用戶在通道層面進行定義(GPDMA_CxCR 中 的 LAP)。下一個鏈接列表項已準備就緒并存儲在內存中。然后,建議將端口 1 分配用于加載下一個鏈表項。
本文檔以 GPDMA 和可能受到 GPDMA 協助的外設的組合功能為基礎,為系統開發人員提供一些以性能為導向的編程指南
-
微控制器
+關注
關注
48文章
7490瀏覽量
151057 -
單片機
+關注
關注
6032文章
44521瀏覽量
633087 -
存儲器
+關注
關注
38文章
7453瀏覽量
163608 -
STM32
+關注
關注
2266文章
10873瀏覽量
354832 -
GPDMA
+關注
關注
0文章
4瀏覽量
1589
原文標題:應用筆記|如何使用 STM32U575/585 微控制器的 GPDMA
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論