STM32芯片的內部架構介紹
STM32芯片由內核和片上外設兩部分組成。STM32F103采用Cortex-M3內核,該內核由ARM公司設計。芯片生產廠商ST則負責在內核之外設計部件并生產整個芯片。這些內核之外的部件被稱為核外外設或片上外設,如GPIO、USART(串口)、I2C、SPI等。
芯片內核與外設之間通過各種總線連接,其中驅動單元有四個,被動單元也有四個?梢詫Ⅱ寗訂卧斫獬蓛群瞬糠,被動單元理解成外設。
ICode總線
ICode總線是專門用于取指令的總線,其中的“I”代表“Instruction”(指令)。在編寫程序后,經過編譯,程序將轉化為一條條指令并存儲在FLASH中。內核通過ICode總線讀取這些指令,進而執(zhí)行程序。
DCode總線
DCode總線用于取數,其中的“D”代表“Data”(數據)。在編寫程序時,數據分為常量和變量兩種。常量是不變的,使用C語言中的const關鍵字進行修飾,并存儲在內部FLASH中。變量是可變的,無論是全局變量還是局部變量,都存儲在內部的SRAM中。
System總線
我們通常所說的寄存器編程,即讀寫寄存器的操作,都是通過System總線來完成的。System總線主要用于訪問外設的寄存器。
DMA總線
DMA總線也主要用于傳輸數據,這些數據可以來自某個外設的數據寄存器,也可以來自SRAM或內部FLASH。
由于數據既可以被DCode總線訪問,也可以被DMA總線訪問,因此為了避免訪問沖突,取數時需要經過一個總線矩陣進行仲裁,以決定由哪個總線進行取數。
內部的閃存存儲器Flash
內部的閃存存儲器即為FLASH,它用于存儲編寫好的程序。內核通過ICode總線來獲取存儲器中的指令。
內部的SRAM
內部的SRAM,也被稱為內存,是程序中變量、堆棧等開銷的存儲基礎。內核通過DCode總線來訪問SRAM。
FSMC
FSMC的英文全稱是Flexible static memory controller(靈活的靜態(tài)的存儲器控制器)。通過FSMC,可以擴展內部存儲器,如外部的SRAM、NAND-FLASH和NORFLASH。但是,FSMC只能擴展靜態(tài)的內存,而不能擴展動態(tài)的內存,因此不能用于擴展SDRAM。
AHB
從AHB總線延伸出的兩條APB2和APB1總線是常見的總線,它們連接了GPIO、串口、I2C、SPI等外設。學習STM32的重點在于學會對這些外設進行編程,以便驅動外部的各種設備。

編輯:xiaoYing 最后修改時間:2023-08-22