1. 程式人生 > >關於STM32系統構架的一點見解

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

缺點 sta 作用 接下來 acc fsmc fcm 作業 tar

初學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圍鎖相環倍頻輸出,32上面有兩個PLL

關於時鐘樹AHB APB的具體說法,明天會繼續更新,趕作業。。。。

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