初學STM32H7一定要優先整體把控芯片的框架,不要急于了解單個外設的功能。
1 初學者重要提示
學習一款新的芯片,優先掌握系統框架是比較重要的,建議逐漸養成這種學習習慣,然后各個擊破即可。
本章節提供了多張STM32H7的框圖,這些框圖都非常具有代表性。很多時候記憶知識點比較費腦子,記錄這些框圖是一種非常好的方式。
對于本章節提供的部分知識點,無法理解透徹,暫時沒有關系。隨著后面的深入學習,基本都可以掌握。
重要的MPU和Cache知識分別放在了第23章和第24章。
2 STM32H7硬件框圖
學習一款新的芯片,需要優先了解一下它的整體功能設計。需要的資料主要是來自官網和數據手冊,比如我們V7開發板使用的STM32H743XIH6,直接在官方地址:鏈接(這是超鏈接)就可以看到對此芯片所做的介紹,頁面中有一個如下的框圖,對于了解STM32H7整體設計非常方便。
再稍微詳細點,就需要大家讀頁面上的”Key Features”,就是下圖所示的內容:
或者直接看數據手冊開頭的章節即可,也進行了介紹,內容基本都是差不多的,如下圖所示(部分截圖):
通過框圖和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各種自帶外設的信息。
3 STM32H7各個型號的區別
涉及到芯片選型的時候,需要大家了解各個型號的區別。對此ST有一個專門的文件STM32H7x3 MCUs High-performance line,在鏈接(這是一個超鏈接)里面可以找到。此文件里面有簡單的對比,只是內容比較簡單,僅兩頁,不過也言簡意賅。最主要的是下面的這個截圖:
通過這個截圖可以方便地了解不同型號的引腳數、封裝、FLASH大小、RAM大小以及是否帶HW CRYPTO硬件加密的區別。
需要了解更詳細的對比信息,可以看數據手冊。任意下載一個型號的數據手冊,在數據手冊的的Table 2里面有詳細的對比,如下圖所示(部分截圖):
使用ST提供的軟件STMCUFinder或者STM32CubeMX也可以做對比,只是沒有上面的表格這么方便,可以一目了然。
4 STM32H7總線框圖和時鐘
STM32H7的數據手冊里面提供了一張非常棒的框圖,大家可以方便地查看每個總線的時鐘速度和這個總線所掛的外設。這個在大家配置外設時鐘分頻的時候還是非常有用的,因為外設的時鐘分頻就是建立在所掛的總線速度
比如我們想得到不同定時器的主頻,通過上面的框圖,可以方便地獲得如下信息:
SYSCLK(Hz) = 400000000 (CPU Clock)
HCLK(Hz) = 200000000 (AXI and AHBs Clock)
AHB Prescaler = 2
D1 APB3 Prescaler = 2 (APB3 Clock 100MHz)
D2 APB1 Prescaler = 2 (APB1 Clock 100MHz)
D2 APB2 Prescaler = 2 (APB2 Clock 100MHz)
D3 APB4 Prescaler = 2 (APB4 Clock 100MHz)
因為APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
因為APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
APB4上面的TIMxCLK沒有分頻,所以就是100MHz;
APB1 定時器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1
APB2 定時器有 TIM1, TIM8 , TIM15, TIM16,TIM17
APB4 定時器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5
5 STM32H7的AXI總線
AXI總線在STM32H7中有著舉足輕重的作用。高并發性全靠這個總線了,先來看下AXI總線的框架:
5.1 總線系統框架
下面這個截圖比較有代表性,可以幫助大家理解STM32H7總線系統。
這個圖可以方便識別總線所外掛的外設,共分為三個域:D1 Domain,D2 Domain和D3 Domain。
D1 Domain
D1域中的各個外設是掛在64位AXI總線組成6*7的矩陣上。
6個從接口端ASIB1到ASIB6
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 總線。
7個主接口端AMIB1到AMIB7
外接的從設備是AHB3總線,Flash A,Flash B,FMC總線,QSPI和AXI SRAM。另外AHB3也是由AXI總線分支出來的,然后再由AHB3分支出APB3總線。
D2 Domain
D2域的各個外設是掛在32位AHB總線組成10*9的矩陣上。
10個從接口
外接的主控是D1-to-D2 AHB 總線,AHBP總線,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。
9個主接口
外接的從設備是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB總線和D2-to-D3 AHB總線。
D3 Domain
D3域的各個外設是掛在32位AHB總線組成3*2的矩陣上。
3個從接口
外接的主控D1-to-D3 AHB總線,D2-to-D3 AHB總線和BDMA。
2個主接口
外接的從設備是AHB4,SRAM4和Bckp SRAM。另外AHB4也是這個總線矩陣分支出來的,然后再由AHB4分支出APB4總線。
這三個域之間也是有互聯的,可以是:
D1域到D2域的D1-to-D2 AHB bus
允許D1域中的主接口外設訪問D2域里面的從接口外設。比如D1域里面的DMA2D訪問D2域里面的SRAM1。
D2域到D1域的D2-to-D1 AHB bus
允許D2域中的主接口外設訪問D1域里面的從接口外設。比如D2域里面的DMA2訪問D1域里面的AXI SRAM。
D1域到D3域的D1-to-D3 AHB bus
允許D1域中的主接口外設訪問D3域里面的從接口外設。比如D1域里面的DMA2D訪問D3域里面的SRAM4。
D2域到D3域的D2-to-D3 AHB bus。
允許D1域中的主接口外設訪問D2域里面的從接口外設。比如D2域里面的DMA2訪問D3域里面的SRAM4。
有了這些知識后,下面我們重點了解AXI總線矩陣。
5.2 AXI總線特色
AXI支持高頻率、高性能的系統設計:
支持高帶寬,低延遲設計。
提供高頻操作,無需復雜的總線橋。
滿足各種組件的接口需求。
適用于具有高初始訪問延遲的內存控制器。
為互連架構的實現提供了靈活性。
與現有的AHB和APB接口向后兼容。
AXI總線的關鍵特性:
獨立的地址、控制和數據線。
支持非字節對齊方式傳輸。
基于起始地址的突發傳輸。
分開的讀和寫數據通道,且提供DMA傳輸。
支持發起多個地址。
支持無序傳輸。
允許添加寄存器,以提供時序收斂。
5.3 AXI總線簡介
通過下面的框圖,我們再進一步的認識一下AXI總線。
通過上面的截圖,我們可以看到,AXI總線有6個從接口ASIBs(AMBA slave interface blocks)和7個主控接口AMIBs(AMBA master interface blocks)。
針對從接口ASIBs,描述如下:
重點注意最后一列,STM32H7參考手冊里面原始的描述是R/W issuing,這里將其翻譯為讀/寫發起能力。比如輸入通道IN5連接的主控DMA2D,支持的讀發起能力是2,寫發起能力是1。讀發起能力是2該如何理解呢?這里的含義是存在兩路讀信號同時進行(因為AXI接口有一個FIFO的功能,可供同時進行,更深入的認識有待研究),反映到DMA2D的實際應用中,就是DMA2D同時讀取前景色和背景色的緩存區做Alpha融合之類的操作。寫操作同理,DMA2D的寫發起能力僅支持一路。
針對主控接口AMIBs,描述如下:
跟上面表格的含義是一樣的,同樣重點注意最后一列,這里多了一個總接收能力(Total acceptance),也就是讀發起能力和寫發起能力同時執行的情況。
5.4 AXI總線優先級編程
由于存在多個ASIB從接口訪問AMIB主控的問題,這就涉及到誰先誰后等問題。所以AXI總線矩陣就做了一個基于優先級的仲裁方案。每個ASIB接口支持讀通道和寫通道分別設置,優先級從0到15。數值越大,優先級越高,默認情況都是優先級0。如果有兩個傳輸同時到達AMIB主控接口,那么優先級高的ASIB接口傳輸優先處理;如果優先級相同的話,根據LUR方案選擇(least recently-used最近最少使用情況)。
大家在實際應用中,可以根據實際情況進行設置,一般情況下使用默認值即可。
6 STM32H7的總線互聯
STM32H7的總線矩陣四通八達,但不是任意Bus Master總線主控端和Bus Slave設備端都可以相互通信的:
黑色加粗字體是64位總線(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字體是32位總線。
訪問通路(每個小方塊里面的字符)
任何有數字的表示有訪問通路。
短橫杠“-”表示不可訪問。
有灰色陰影的表示有實用價值的訪問通路。
表格中具體數值所代表的含義
D=direct
1=via AXI bus matrix
2=via AHB bus matrix in D2
3=via AHB bus matrix in D3
4=via AHB/APB bridge in D1
5=via AHB/APB bridge in D2
6=via AHB/APB bridge in D3
7=via AHBS bus of Cortex-M7
多個數值組合 = 互連路徑以數字的順序經過多個矩陣或/和橋。
總線訪問類型
普通字體表示32位總線。
斜體表示32位總線主機端/ 64位總線從機端。
粗體表示64位總線。
當前要對這個圖有個了解,后面章節講解各個外設的時候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,僅支持MDMA。
7 STM32H7的FLASH
首次學習STM32H7,要掌握以下幾點認識即可:
1、雙BANK,每個BANK的帶寬都是64bits,如下圖所示:
2、H7中Flash的延遲和主頻關系。
H7中已經沒有F1和F4系列中的ART Chrome加速,通過H7中的Cache加速即可。具體延遲數值和主頻關系如下:
對于上面的表格,大家可以看到,當延遲等待設置為0的時候,即無等待,單周期訪問,速度可以做到70MHz。增加1個Flash周期后,訪問速度可以做到140MHz。當增加到3個或4個Flash周期后,最高速度可以做到225MHz。
3、Flash編程操作(寫)最好以256bits為單位進行,應用中也可以小于256bits,但是容易造成ECC校驗出問題,所以不推薦。Flash讀操作支持64bits,32bits,16bits和8bits。
4、Flash支持ECC校驗,每256bits配10bit的ECC位,可以檢測到1個bit并糾正或者檢測2個bit。隨著芯片的制造工藝水平越高,帶電粒子能產生的位翻轉就越多,此時的ECC是必須要有的,一般可以糾正1-2個bit。安全等級高的Flash類存儲器和RAM類都是必須要帶ECC的。
8 STM32H7的RAM
STM32H7的RAM區分為好幾個部分,下面分別進行說明:
TCM區
TCM : Tightly-Coupled Memory 緊密耦合內存 。ITCM用于運行指令,也就是程序代碼,DTCM用于數據存取,特點是跟內核速度一樣,而片上RAM的速度基本都達不到這個速度,所以有降頻處理。
速度:400MHz。
DTCM地址:0x2000 0000,大小128KB。
ITCM地址:0x0000 0000,大小64KB。
AXI SRAM區
位于D1域,數據帶寬是64bit,掛在AXI總線上。除了D3域中的BDMB主控不能訪問,其它都可以訪問此RAM區。
速度:200MHz。
地址:0x2400 0000,大小512KB。
用途:用途不限,可以用于用戶應用數據存儲或者LCD顯存。
SRAM1,SRAM2和SRAM3區
位于D2域,數據帶寬是32bit,掛在AHB總線上。除了D3域中的BDMB主控不能訪問這三塊SRAM,其它都可以訪問這幾個RAM區。
速度:200MHz。
SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA緩沖,也可以當D1域斷電后用于運行程序代碼。
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA緩沖,也可以用于用戶數據存取。
SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太網和USB的緩沖。
SRAM4區
位于D3域,數據帶寬是32bit,掛在AHB總線上,大部分主控都能訪這塊SRAM區。
速度:200MHz。
地址:0x3800 0000,大小64KB。
用途:用途不限,可以用于D3域中的DMA緩沖,也可以當D1和D2域進入DStandby待機方式后,繼續保存用戶數據。
Backup SRAM區
備份RAM區,位于D3域,數據帶寬是32bit,掛在AHB總線上,大部分主控都能訪問這塊SRAM區。
速度:200MHz。
地址:0x3880 0000,大小4KB。
用途:用途不限,主要用于系統進入低功耗模式后,繼續保存數據(Vbat引腳外接電池)。
9 總結
本章節就為大家講解這么多,讓大家對STM32H7有個整體的認識,后面章節將逐個進行學習。
審核編輯:湯梓紅
-
芯片
+關注
關注
455文章
50714瀏覽量
423138 -
FlaSh
+關注
關注
10文章
1633瀏覽量
147939 -
stm32h7
+關注
關注
0文章
37瀏覽量
1753
原文標題:如何高效入手STM32H7?整體把控一下框架
文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論