h1_key

當(dāng)前位置:首頁 >新聞資訊 > 技術(shù)文章>意法半導(dǎo)體>如何對STM32U575/585微控制器使用GPDMA
如何對STM32U575/585微控制器使用GPDMA
2022-11-14 1131次

STM32U575/585 微控制器(MCU)中嵌入的通用 DMA(GPDMA)相關(guān)。GPDMA 是一種系統(tǒng)外設(shè),是 AHB 總線上的雙端口主設(shè)備。它被用于通過鏈表在外設(shè)和/或存儲器之間傳輸數(shù)據(jù)。所有 GPDMA 可編程傳輸均在系統(tǒng)層面提供更高性能,并使 CPU 無需執(zhí)行這些數(shù)據(jù)傳輸任務(wù)。

  本文檔的目的不是將現(xiàn)有的 GPDMA 專用章節(jié)重新編寫到產(chǎn)品參考手冊中,而是為系統(tǒng)開發(fā)人員提供一些以性能為導(dǎo)向的編程指南。

  本文檔以 GPDMA 和可能受到 GPDMA 協(xié)助的外設(shè)的組合功能為基礎(chǔ)。本文檔聚焦于為了優(yōu)化系統(tǒng)性能和滿足應(yīng)用要求而需要考慮的所有關(guān)鍵點。

  本應(yīng)用筆記包含關(guān)于以下內(nèi)容的原理闡述和建議:

  ? GPDMA 通道分配

  ? GPDMA 端口分配

  – 對于始于存儲器映射源位置的傳輸

  – 對于止于存儲器映射目標(biāo)位置的傳輸

  ? GPDMA 傳輸優(yōu)先級分配

  ? GPDMA 源/目標(biāo)突發(fā)編程,包含數(shù)據(jù)寬度和突發(fā)長度

  1 概述

  本應(yīng)用筆記適用于 STM32U575/585 微控制器,這些微控制器是基于 Arm® Cortex®核心的器件。

  提示 Arm 是 Arm Limited(或其子公司)在美國和/或其他地區(qū)的注冊商標(biāo)。

  參考文檔

  ? 參考手冊基于 Arm®的 STM32U575/585 32 位 MCU(RM0456)

  ? STM32U585xx 數(shù)據(jù)手冊(DS13086)

  ? STM32U575xx 數(shù)據(jù)手冊(DS13737)

  2 GPDMA 通用指南

  2.1 GPDMA 概述

  在減載 CPU 的控制下,GPDMA 控制器通過鏈表執(zhí)行存儲器映射外設(shè)和/或存儲器之間的可編程數(shù)據(jù)傳輸。

  GPDMA 是雙端口 AHB 主設(shè)備和系統(tǒng)外設(shè)。大多數(shù)外設(shè)和存儲器都與之建立連接。在需要數(shù)據(jù)傳輸時,這一點提供了很大的靈活性并提高了系統(tǒng)性能。鏈表是存儲器中程序化的數(shù)據(jù)結(jié)構(gòu),旨在讓每個 GPDMA 通道為鏈接和安排DMA 數(shù)據(jù)傳輸做好準(zhǔn)備。GPDMA 有 16 個通道。

  2.2 GPDMA 通道分配

  用戶必須分配一個通道用于 GPDMA 傳輸。為了能夠同時處理來自源的 GPDMA 傳輸(讀訪問)和到達(dá)目標(biāo)的GPDMA 傳輸(寫訪問),GPDMA 對給定 GPDMA 通道使用專用 FIFO。

  FIFO 單元的單位是一個字節(jié)。FIFO 的大小決定了通道能夠有效處理的最大 DMA 突發(fā)大小(突發(fā)長度與數(shù)據(jù)寬度的乘積)。注意,通常突發(fā)越大,系統(tǒng)總體性能越好:更高吞吐率/帶寬傳輸,更低系統(tǒng)總線占用率。鑒于系統(tǒng)總線為 32 位字寬,建議將 DMA 源/目標(biāo)數(shù)據(jù)寬度設(shè)定為 32 位(GPDMA_CxTR1 中的 S/DDW_LOG2[1:0]),以便最大限度減少總線使用量。

  如下表所示,有兩類通道,分別具有不同的 FIFO 大小和尋址模式:

  ? 通道 0 至 11:

  – FIFO 大小為 8 字節(jié)(2 字)。

  – 尋址限于線性模式:固定尋址(通常用于外設(shè)寄存器訪問)或連續(xù)數(shù)據(jù)增量尋址(通常用于存儲器訪問)。

  ? 通道 12 至 15:

  – FIFO 大小為 32 字節(jié)(8 字)。

  – 支持線性和二維尋址模式:二者均適用于源和目標(biāo),可設(shè)定兩個地址跳轉(zhuǎn)/偏移量:

  ? 每個編程突發(fā)后

  ? 每個編程塊后

  

 

  建議將通道 0 至 11 分配用于從 AHB/APB 外設(shè)到 SRAM 的傳輸或從 SRAM 到 AHB/APB 外設(shè)的傳輸,除非存儲器需要二維尋址或外設(shè)是支持突發(fā)請求的 AHB 外設(shè)。然后,建議將突發(fā)設(shè)定為 1 字(FIFO 大小的一半),除非應(yīng)用需要處理 8 或 16 位數(shù)據(jù)寬度。

  建議將通道 12 至 15 分配用于存儲器之間的傳輸。然后,出于性能方面的考慮,建議將突發(fā)設(shè)定為默認(rèn)的 4 字(FIFO 大小的一半)。

  同樣地,將通道 12 至 15 優(yōu)先用于始于支持突發(fā)請求的 AHB 外設(shè),比如 OCTOSPI、HASH 和 ADC。然后,通常將始于/止于外設(shè)的半傳輸設(shè)定為突發(fā)。建議將始于/止于存儲器的(半)傳輸設(shè)定為 4 字突發(fā)。

  對于具有更高帶寬要求的 AHB 外設(shè)的始于/止于一些外設(shè)的傳輸,同樣優(yōu)先選擇通道 12 至 15。建議將始于/止于存儲器的(半)傳輸也設(shè)定為 4 字突發(fā)。

  2.3 GPDMA 端口選擇

  用戶必須為始于源(GPDMA_CxTR1 中的 SAP)的傳輸分配一個端口,并且為止于目標(biāo)(GPDMA_CxTR1 中的DAP)的傳輸分配一個端口。在執(zhí)行下一次數(shù)據(jù)傳輸之前,會通過下一個鏈表項和數(shù)據(jù)結(jié)構(gòu)動態(tài)更新此分配。

  關(guān)于 GPDMA 的總線拓?fù)淇煽偨Y(jié)如下(參見第 4 節(jié) 了解更多信息):

  ? GPDMA 端口 0 直接連接到 APB1 和 APB2 外設(shè),不穿過 AHB 矩陣(參見圖 2 和圖 4)。

  ? AHB 矩陣的默認(rèn)從設(shè)備(參見圖 2 和第 4.3.2 節(jié) )為:

  – GPDMA 端口 0 的 AHB1 外設(shè)(MDF、FMAC 和 CORDIC)

  – GPDMA 端口 1 的 SRAM1

  建議按照以下方式使用 GPDMA 的兩個主設(shè)備端口:

  ? 將端口 0 分配用于始于/止于外設(shè)的(半)傳輸,無論是 AHB 還是 APB 外設(shè)。將端口 1 分配用于其他(半)傳輸(分別止于/始于存儲器)。對于 APB1 和 APB2 外設(shè),端口 0 避免穿過互連矩陣,減少了相應(yīng)通道上的總體延遲。這也減少了互連總線矩陣包含的和之后的 AHB 總線活動。

  ? 端口 1 被分配用于存儲器至存儲器的傳輸(特別是訪問 SRAM1 時,但不僅限于此)。對外設(shè)使用端口 0 并對任何存儲器使用端口 1 的優(yōu)勢在于:

  – 外設(shè)至存儲器和存儲器至外設(shè)的傳輸過程中兩個端口上的帶寬平衡

  – 避免至存儲器的突發(fā)直接影響外設(shè)訪問的延遲

  這是針對性能的典型和推薦配置。當(dāng)然,用戶可以自由地選擇任何可以訪問源位置的端口,以及任何可以訪問目標(biāo)位置的端口。

  當(dāng)通道未激活時,GPDMA 為加載下一個鏈表項而分配的鏈接端口由用戶在通道層面進(jìn)行定義(GPDMA_CxCR 中的 LAP)。下一個鏈接列表項已準(zhǔn)備就緒并存儲在內(nèi)存中。然后,建議將端口 1 分配用于加載下一個鏈表項。

  2.4 GPDMA 通道優(yōu)先級

  為每個(半)傳輸分配一個優(yōu)先級值,用來與其他并發(fā)傳輸進(jìn)行競爭,從而使 GPDMA 仲裁器能夠在一個主設(shè)備端口上允許(半)傳輸并為其安排時間。在用戶層面,當(dāng)通道未激活時,通過 GPDMA_CxCR 中的 PRIO[1:0]在通道層面對此進(jìn)行準(zhǔn)備。

  GPDMA 有兩個用于實現(xiàn) AHB 傳輸并行化的主設(shè)備端口??赏ㄟ^這兩個端口進(jìn)行同步傳輸。每個端口發(fā)生的GPDMA 仲裁如下:

  ? 16 個可能請求的基于 FIFO 的讀取突發(fā)之間基于優(yōu)先級的仲裁(參見圖 1)

  ? 16 個可能請求的基于 FIFO 的寫入突發(fā)之間基于優(yōu)先級的仲裁(參見圖 1)

  ? 讀取和寫入之間最終的 Round-Robin 仲裁階段

  GPDMA 仲裁階段可能會為 GPDMA 引入 1 個周期的時鐘延遲,以便在分配的主端口上生成允許突發(fā)的 AHB 地址(參見第 2.5 節(jié) 了解更多信息)。

  GPDMA 實現(xiàn)可編程仲裁邏輯,使用戶能夠根據(jù)下列規(guī)則調(diào)整通道帶寬和延遲:

  ? 請求的突發(fā)傳輸?shù)膬?yōu)先級可設(shè)定為 0 至 3。

  ? 用 Round-Robin 仲裁方案處理具有相同優(yōu)先級的請求。

  ? 對于時效性的請求,建議使用優(yōu)先級 3,因為它用高于 優(yōu)先級 0 至 2 的固定較高優(yōu)先級進(jìn)行處理。

  ? 對非時效性通道實施加權(quán) Round-Robin 分配,剩余帶寬由優(yōu)先級為 0 至 2 的請求共享。

  ? 不同的權(quán)重源自于設(shè)定的通道優(yōu)先級并呈單調(diào)性變化,隊列 0 的權(quán)重最低。

  

 

  用戶需要為外設(shè)/存儲器連接的 GPDMA 通道分配正確的優(yōu)先級,才能使該通道達(dá)到合格的服務(wù)質(zhì)量:

  ? 外設(shè)端無時序錯誤(無外設(shè)寄存器下溢/上溢)

  ? 數(shù)據(jù)傳輸請求與此請求的履行之間的延遲可接受

  ? 對其他通道服務(wù)質(zhì)量的影響可接受

  為了滿足應(yīng)用的時序要求,必須謹(jǐn)慎地分配通道優(yōu)先級。請求的基于 FIFO 的優(yōu)先級 0 到 2 的傳輸,已準(zhǔn)備好在主端口上再次調(diào)度,可能會因交換機(jī)的輪循機(jī)制仲裁服務(wù)器而延遲,并且執(zhí)行最多 15 個優(yōu)先級為 0 到 2 的并發(fā)(單/突發(fā))傳輸。這種請求也是任何時間敏感的請求所搶占的第一個請求。

  使用來自關(guān)鍵定時器的請求映射的 GPDMA 通道通常會被分配給時效性隊列,因此能以最低延遲更新相關(guān)的TIMER 寄存器。相關(guān)人員可以為來自其他外設(shè)的 GPDMA 請求分配優(yōu)先級 2 或 1,最后可以為存儲器至存儲器的傳輸分配最低優(yōu)先級 0(盡最大努力流量)。通??梢詾橛成涞酵ǖ?12 至 15 并具有突發(fā)功能的外設(shè)分配中間優(yōu)先級1。

  為了滿足具體的應(yīng)用要求,可對這一關(guān)于通道優(yōu)先級的建議進(jìn)行調(diào)整(參見產(chǎn)品參考手冊了解更多關(guān)于仲裁和優(yōu)先級的信息)。

  對于給定通道,在鏈表層面執(zhí)行數(shù)據(jù)傳輸。通過在存儲器中使用設(shè)定的鏈表數(shù)據(jù)結(jié)構(gòu),用戶可以將數(shù)據(jù)傳輸與同一通道的下一次數(shù)據(jù)傳輸串連起來。在給定鏈表項(LLI)的數(shù)據(jù)傳輸完成后,在執(zhí)行下一次數(shù)據(jù)傳輸之前,GPDMA自動讀取/提取下一個鏈表數(shù)據(jù)結(jié)構(gòu),并進(jìn)行內(nèi)部的寄存器更新。與數(shù)據(jù)傳輸一樣,鏈接傳輸優(yōu)先級由其通道的分配優(yōu)先級給出。鏈接傳輸包含一系列的 32 位單次讀取(通道 0 至 11 最多 6 次單次讀取,通道 12 至 15 最多 8 次單次讀取)。在 LLI 更新的每個 32 位讀取之間,GPDMA 需要一個額外的時鐘周期用于仲裁階段。

  2.5 GPDMA 突發(fā)

  初步設(shè)定的數(shù)據(jù)傳輸為 GPDMA 突發(fā)(從源讀取的數(shù)據(jù)的突發(fā)或?qū)懭肽繕?biāo)的數(shù)據(jù)的突發(fā)),通過以下參數(shù)進(jìn)行定義:

  ? 設(shè)定的數(shù)據(jù)寬度:8、16 或 32 位(通過 GPDMA_CxTR1 中的 S/DDW_LOG2[1:0])

  ? 設(shè)定的突發(fā)長度:1 至 64(通過 GPDMA_CxTR1 中的 S/DBL_1[5:0])

  可以分別為源和目標(biāo)設(shè)定突發(fā)大小。

  突發(fā)是一系列節(jié)拍(n = 1 至 64)。每一拍是一次數(shù)據(jù)傳輸,具有相同數(shù)據(jù)寬度。例如,4 字突發(fā)是四個 32 位字的突發(fā)。突發(fā)長度為 1 的突發(fā)稱為單次。

  GPDMA 發(fā)布具有設(shè)定數(shù)據(jù)寬度的節(jié)拍:GPDMA 實施永遠(yuǎn)不會修改設(shè)定數(shù)據(jù)寬度。

  GPDMA 并非總是在分配的 AHB 主設(shè)備端口上發(fā)布具有設(shè)定突發(fā)長度的突發(fā)。在硬件中以下列方式之一實現(xiàn)GPDMA 突發(fā):

  ? 在分配的主端口上具有相同的 AHB 事務(wù)

  ? 當(dāng)下列條件中的任何一個成立時,通過一系列長度更小的突發(fā)和/或單次:

  – 突發(fā)大小 > FIFO 大小的一半。

  – 塊大小(定義為源塊大小)不是源數(shù)據(jù)寬度的倍數(shù)。

  – AHB 限制:

  ? 在 1 KB 地址邊界交叉點上

  ? 突發(fā)必須是 4、8 或 16 拍的增量突發(fā)

  GPDMA 實施保證數(shù)據(jù)完整性(相比于編程尋址),并通過實現(xiàn)最大允許突發(fā)大小(相比于編程突發(fā))使性能最大化。

  建議將 GPDMA 突發(fā)的大小設(shè)定為所分配 GPDMA 通道的 FIFO 大小的一半(通道 0 至 11 通常為 1 字突發(fā),通道12 至 15 通常為 4 字突發(fā))。

  

 

  

 

  GPDMA 突發(fā)是數(shù)據(jù)的基本塊,位于固定地址或連續(xù)遞增地址。對于通道 12 至 15(支持二維尋址),可在突發(fā)后執(zhí)行第一次地址跳轉(zhuǎn)。為了獲得存儲器中的二維緩沖區(qū),用戶可能必須設(shè)定不同于典型 4 字突發(fā)的突發(fā)。GPDMA實現(xiàn)自動優(yōu)化性能,并包含此設(shè)定限制。

  在每個設(shè)定突發(fā)之前增加一個 GPDMA 仲裁時鐘周期,前提是此突發(fā)大小小于 FIFO 大小的一半。每次數(shù)據(jù)傳輸既可以是單次數(shù)據(jù)傳輸(在每次 AHB 總線主設(shè)備上必須發(fā)送數(shù)據(jù)時執(zhí)行數(shù)據(jù)仲裁),也可以組合成突發(fā)數(shù)據(jù)傳輸以便背靠背發(fā)送少量數(shù)據(jù),在 GPDMA 單次仲裁階段后不可能發(fā)生任何 GPDMA 搶占。這樣可以最大限度縮短數(shù)據(jù)傳輸時間(總體延遲),并使吞吐率和總線效率最大化。

  考慮突發(fā)(包含多個節(jié)拍/數(shù)據(jù))的傳輸?shù)闹饕獌?yōu)勢如下:

  ? 將 GPDMA 仲裁縮減到只有一個階段,該階段適用于按突發(fā)大小定義的所有數(shù)據(jù)。

  ? 突發(fā)在 GPDMA(仲裁)層面不可中斷,前提是其大小小于 FIFO 大小的一半。一組一定數(shù)量的讀取/寫入數(shù)據(jù)的延遲縮短,可更早完成傳輸(第一拍除外)。

  ? 如果面向的源或目標(biāo)是內(nèi)部存儲器,則通過 AHB 總線上的增量 AHB 突發(fā)來實現(xiàn)設(shè)定的尋址增量突發(fā)。這樣消耗的總線周期更少,還釋放了總線帶寬用于其他可能的并發(fā)主設(shè)備,或者能夠為給定流量/帶寬設(shè)定更低的總線頻率。

  ? 如果面向的源或目標(biāo)是位于固定地址并支持突發(fā)的外設(shè)寄存器(具有 FIFO 機(jī)制,如 ADC1、OCTOSPI 或哈希),由于發(fā)生過一次仲裁周期處罰,因此設(shè)定 GPDMA 4 字固定突發(fā)(在 GPDMA 仲裁后被分割成四個單次傳輸,以便與 AHB 兼容)以提高背靠背傳輸吞吐率。

  如果 GPDMA 突發(fā)具有 AHB 突發(fā)事務(wù),則在執(zhí)行時,會增加分配的同一 AHB 主設(shè)備端口上的其他并發(fā) GPDMA傳輸?shù)难舆t。在這段時間內(nèi),同一 GPDMA 端口上 GPDMA 請求的所有其他傳輸均掛起(以及所有其他計劃從同一目標(biāo)外設(shè)/存儲器讀取數(shù)據(jù)或向其寫入數(shù)據(jù)的主設(shè)備)。建議通過設(shè)定通道優(yōu)先級來管理不同應(yīng)用要求,如第 2.4 節(jié) 所述。

 

  • 意法半導(dǎo)體STM32H743IIT6高性能MCU深度剖析
  • 意法半導(dǎo)體(STMicroelectronics)的 STM32H743IIT6 是一款備受矚目的高性能微控制器,在嵌入式系統(tǒng)領(lǐng)域中具有重要的地位。本文將對其產(chǎn)品參數(shù)進(jìn)行專業(yè)準(zhǔn)確的介紹。STM32H743IIT6 基于 Arm? Cortex?-M7 內(nèi)核,主頻高達(dá) 480MHz,具備強(qiáng)大的計算能力和高效的處理性能。這使得該微控制器能夠輕松應(yīng)對復(fù)雜的計算任務(wù)和實時性要求較高的應(yīng)用場景。
    2024-07-08 94次
  • 意法半導(dǎo)體STM32F722RET6性能和穩(wěn)定性
  • 在當(dāng)今高度智能化和數(shù)字化的時代,微控制器作為電子系統(tǒng)的核心組件,其性能和功能的優(yōu)劣直接決定了整個系統(tǒng)的運行效果和應(yīng)用范圍。意法半導(dǎo)體(STMicroelectronics)推出的 STM32F722RET6 微控制器,以其出色的性能、豐富的功能和可靠的穩(wěn)定性,成為眾多應(yīng)用領(lǐng)域的理想之選。
    2024-07-05 114次
  • 意法半導(dǎo)體STM32F723ZET6高性能MCU卓越之選
  • 在當(dāng)今電子技術(shù)領(lǐng)域,MCU作為系統(tǒng)的核心組件,其性能和功能直接影響著整個系統(tǒng)的運行效果和應(yīng)用范圍。意法半導(dǎo)體(STMicroelectronics)推出的 STM32F723ZET6 微控制器,以其出色的性能和豐富的功能,成為眾多應(yīng)用場景中的理想選擇。STM32F723ZET6 基于高性能的 Arm? Cortex?-M7 內(nèi)核,運行頻率高達(dá) 216 MHz,能夠提供強(qiáng)大的計算能力和快速的響應(yīng)速度。這使得它在處理復(fù)雜的算法和實時任務(wù)時表現(xiàn)出色,為系統(tǒng)的高效運行提供了有力保障。
    2024-07-05 101次
  • 意法半導(dǎo)體 STM32F746IGT6高性能低功耗優(yōu)勢
  • 意法半導(dǎo)體(STMicroelectronics)的 STM32F746IGT6 就是這樣一款令人矚目的產(chǎn)品,它以出色的性能和豐富的特性成為眾多嵌入式系統(tǒng)的理想選擇。STM32F746IGT6 基于高性能的 Arm? Cortex?-M7 內(nèi)核,工作頻率高達(dá) 216 MHz,這使其具備強(qiáng)大的數(shù)據(jù)處理能力和快速的響應(yīng)速度,能夠輕松應(yīng)對復(fù)雜的計算任務(wù)和實時性要求極高的應(yīng)用場景。
    2024-07-05 88次
  • 意法半導(dǎo)體STM32F750Z8T6高頻率運行
  • 意法半導(dǎo)體(STMicroelectronics)推出的 STM32F750Z8T6基于高性能的Arm? Cortex?-M7內(nèi)核,運行頻率高達(dá) 216 MHz,能夠為各種復(fù)雜的任務(wù)提供強(qiáng)大的計算能力。其內(nèi)核架構(gòu)經(jīng)過優(yōu)化,具備高效的指令執(zhí)行效率和低延遲響應(yīng)特性,使得系統(tǒng)能夠快速處理數(shù)據(jù)和執(zhí)行指令。
    2024-07-05 101次

    萬聯(lián)芯微信公眾號

    元器件現(xiàn)貨+BOM配單+PCBA制造平臺
    關(guān)注公眾號,優(yōu)惠活動早知道!
    10s
    溫馨提示:
    訂單商品問題請移至我的售后服務(wù)提交售后申請,其他需投訴問題可移至我的投訴提交,我們將在第一時間給您答復(fù)
    返回頂部