關於STM32系統構架的一點見解


初學32,留下一點自己學習的記錄,以便今后參考,大神指明錯誤不勝感激

一.首先說說STM32F10x芯片由絲印所體現出的共同點和區別。 
先簡單說說命名規則: 
101基本型,102USB基本型,103增強型,105或107互聯型。 
T:36腳,C:48腳,R:64腳,V:100腳,Z:144腳。 
C:256K SRAM, D:384K SRAM, E:512K SRAM。 
我們正對芯片的絲印,會看到芯片左下角會有一個小圓點(正方向),有的在右上角會有一個稍大點的圓圈標記,靠近左下角小圓點的管腳號為1,然后以逆時針方向,ZET6最后一個管腳號為144,VET6最后一個管腳號為100,即是Z的管腳多於V的,說以說Z的功能也要多於V的;接下來說說絲印上的ARM和ST,crotex-Mx內核是由ARM公司(就叫做IP廠商)設計的,一塊32除了內核還必須有外圍電路,ST公司在獲得ARM內核設計的授權后,據此設計出外圍電路(SOC廠商,像三星,蘋果,飛思卡爾。。。都是SOC廠商,其使用的內核都是IP廠商授權的),比如說儲存程序的FLASH,儲存變量的SRAM,外設(GPIO,IIC,SPI,USTAR等等),小結一下32的芯片構架是由內核(驅動單元)和外設(被動單元)組成。

二.STM32F10xx 的系統框架的理解

(1)驅動單元 
Icode總線: 
我們寫好的程序寫好后通過編譯都變成一條條指令存儲在外設的FLASH里面,內核要讀取這些指令來執行程序就必須通過Icode總線(專門用來取指)。

DCode總線與DMA總線: 
即為DATA,我們知道常量const 存放在內部FLASH里面,而變量存在內部SRAM里面。這些數據可以由DCode和DMA來讀取,為了避免兩者同時去讀取數據從而造成沖突,所以在兩者讀取數據的時候會有一個總線矩陣來裁定誰來讀取數據。

System總線: 
讀取數據,最主要還是用來訪問外設的寄存器,即讀寫寄存器都是通過這條總線來完成的。

DMA總線: 
說先說這條總線也是主要傳輸數據的,這個數據可以是某個外設的數據寄存器,可以是SRAM,可以是內部的FLASH 
這里寫圖片描述 
我們以一個例子來說明DMA總線的作用,還有簡單的區分一下DMA和DCode的區別,如果我們沒有DMA ,現在要從SRAM里讀取一個數據到內部的外設數據寄存器DR,首先CPU通過DCode總線將數據從SRAM讀到CPU的內部的通用寄存器里來暫存數據,然后在通過DCode總線將數據傳到DR,這樣通過了CPU作為數據的中轉。但是我們現在有了DMA總線,只需要CPU發送命令就可以將SRAM里的數據直接發送到DR。

(2)被動單元 
內部FLASH: 
內部閃存存儲器,我們編寫好的程序通過編譯后變成一條條指令存放在這里,Crotex-Mx通過ICode總線訪問內部FLASH來取指。

內部SRAM: 
Static Random Access Memory 
它是一種具有靜止存取功能的內存,不需要刷新電路即能保存它內部存儲的數據。不像DRAM(Dynamic Random Access Memory)那樣需要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,否則內部的數據即會消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,所以在主板上SRAM存儲器要占用一部分面積。 
當然SRAM的優點就是速度快,不必配合內存刷新電路,可提高整體的工作效率. 
SRAM的缺點是集成度低,功耗較大,相同的容量體積較大,而且價格較高,所以少量用於關鍵性系統以提高效率。 
像程序的變量,堆棧等等的開銷都是基於內部的SRAM,Crotex-Mx通過DCode總線來訪問它。

FSMC: 
Flexible Static Memory Controller 
可變靜態存儲控制器,這是STM32系列采用一種新型的存儲器擴展技術,由於通過對特殊功能寄存器的設置,FSMC能夠根據不同的外部存儲器類型,發出相應的數據/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應用各種不同類型、不同速度的外部靜態存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態存儲器,滿足系統設計對存儲容量、產品體積以及成本的綜合要求。 
強調一下,只能拓展靜態內存。

STM32F10xx系統時鍾樹: 
這里寫圖片描述 
先來說說5個時鍾源,如圖左邊部分: 
1.HSI是高速內部時鍾,RC振盪器頻率為16MHz,可以直接作為系統時鍾或經過二分頻后用作PLL的輸入。 
2.HSE是高速外部時鍾,可接4~26MHz石英陶瓷諧振器或者接外部時鍾源,可以直接作為系統時鍾或經過二分頻后用作PLL的輸入。 
3.LSE是低速外部時鍾,接32.768KHz石英晶體,主要是RTC時鍾源。 
4.LSI是低速內部時鍾,RC振盪器,32KHz左右,供獨立看門狗和自動喚醒單元使用。 
5.PLL為鎖相環倍頻輸出

使用的系統時鍾是72 MHz,如圖左邊部分是選擇時鍾源內部還是外部時鍾,右邊綠色的部分是針對於不同外設 對系統時鍾進行不同的時鍾分頻。

 

 

小結一下,APB1操作速度限於36MHZ,APB2操作用於全速72MHZ。

APB1掛載低速外設,APN2 AHB掛載高速外設。

以上時鍾輸出中AHB總線時鍾,內核時鍾,各種APB1 APB2外設都帶使能控制,當需要某個模塊時,一定要先使能對應的時鍾,通過RCC_AHBENR來打開外設時鍾,使能時鍾的方法會在后面貼出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM