天天看點

stm32f4xx系統總線架構

 最近有人在STMCU社群網站咨詢如下問題:

    由于實驗需要,要用到STM32F407的兩個DMA并用定時器觸發,在使用過程中發現DMA1無法把GPIO的IDR上的資料傳輸到記憶體,調試過程中出現DMA1的資料流傳輸錯誤标志,但是使用DMA2沒有問題。然後我看了下參考手冊上兩個DMA的控制系統實作圖,DMA1的外設端口有一個橋接器把APB1和AHB1連起來,不知道這個橋連器作用是什麼?是把APB1和AHB1連起來互相通路嗎? 另外測試把GPIO的IDR改成APB1下的tim5的ARR,DMA1正常工作。請問這是怎麼回事?

    咨詢者提到STM32F4系列中的兩個DMA,即DMA1與DMA2,AHB到APB橋接器;再就是兩個外設,GPIO和TIM5 。為了弄清這個問題,我們有必要先看看STM32F407的總線與存儲架構圖。 如下圖所示:

stm32f4xx系統總線架構

              STM32F4系統存儲及總線框圖

    整個系統架構由多層32位AHB總線矩陣及主從總線構成,并建立起各個主從子產品間的互聯通路。

    圖中方框内縱橫交錯的矩陣線就是總線矩陣,猶如縱橫交錯的公路,讓各類交通工具在裡面同時運作而互不幹擾。隻有在圖中紅色箭頭所指的地方,可能出現主要總線通路撞車的時刻,此時總線矩陣會按照一定規矩進行仲裁,即誰先誰後而不會發生交通事故。

    總線矩陣跟圖中上方的8條主要總線和右方的7條從控總線保持互聯。

八條主要總線: [主要總線簡單點說就是可以用來主動通路别的外設的通路]

—Cortex?-M4F 核心 I 總線、D 總線和 S 總線

—DMA1 存儲器總線

—DMA2 存儲器總線

—DMA2 外設總線

— 以太網 DMA 總線

—USB OTG HS DMA 總線

● 七條被控總線:

— 内部 Flash ICode 總線

— 内部 Flash DCode 總線

— 主要内部 SRAM1 (112 KB)

— 輔助内部 SRAM2 (16 KB)

— 輔助内部 SRAM3 (64 KB)(僅适用于STM32F42xxx 和 STM32F43xxx 器件)

—AHB1 外設(包括 AHB-APB 總線橋和 APB 外設)

—AHB2 外設 —FSMC

    借助于總線矩陣,可以實作主要總線到被控總線的通路,可以實作多個高速外設并發通路和高效運作。[需要注意的是,對于STM32F4系列,圖中64K CCM并不經過總線矩陣,隻能被CPU通路。自然DMA是不能通路它的。]

    好,我們接着看看STM32F407 的兩個通用DMA,即DMA1和DMA2。

    這兩個DMA都具有雙AHB總線通路端口,一端用于存儲器通路,另一端用于外設通路。同時它們各自都有一個AHB從程式設計接口,這個不難了解,對它配置程式設計控制總得有個接口。

stm32f4xx系統總線架構

                                  DMA總線通路框圖

    我們結合這幅DMA總線通路框圖和上面的系統存儲總線架構圖可以明顯看出,2個DMA的外設通路端口的總線連接配接有點不一樣。

DMA2的外設通路端口既與總線矩陣相連,又與AHB-APB橋2相連,可以進一步通路APB2外設。而DMA1卻沒有與總線矩陣相連,隻是跟AHB-APB橋1相連,可以進一步通路APB1外設。[紅色方框代表總線矩陣]

    現在的問題說DMA1通路不了GPIO,但如果換成TIM5就可以。我們可以去晶片資料手冊的Device overview部分檢視相關總線和外設分布圖。我截取STM32F40xblock diagram的部分如下:

stm32f4xx系統總線架構

    我們可以看出GPIO外設跟AHB1相連;TIM5跟APB1相連。而我們從DMA通路框圖看得清楚,DMA1的外設端口根本沒連接配接AHB1,自然沒法通路相應外設,比如GPIO,而DMA2 可以,因為它可以經過總線矩陣後去通路AHB1的外設。

    那DMA1為什麼能通路TIM5呢,因DMA1的AHB外設端口總線經過AHB/APB1橋後就可以通路APB1各類外設,比方TIM5等。

    至于咨詢者問到的兩個橋接器的作用,沒啥過多需要解釋的。橋嘛,連接配接第一;然後兩邊時鐘的同步和時鐘分頻,滿足不同外設的時鐘需求。 

    ST MCU的參考手冊裡強調了隻有DMA2能實作MEMORY到MEMORY的傳輸,DMA1是實作不了的,原理類似。因為要實作M to M 的傳輸,必須兩個端口都能實作對MEMORY的通路,DMA1的AHB外設端口無法通路到内部MEMORY。

    咨詢者的問題,基本上靠看上面幾幅圖可以得到答案。這些圖很重要,很多資訊用圖描述也很直覺明了。各技術手冊裡的插圖往往大有乾坤,不要視而不見。上面提到的都是基于STM32F4系列的總線架構,你也可以去看看STM32其它系列的系統總線框圖,相信你一定會另有發現和收獲。

轉載于:https://www.cnblogs.com/King-Gentleman/p/5370093.html