STM32芯片主要由內核和片上外設組成,STM32F103采用的是Cortex-M3內核,內核由ARM公司設計。STM32的芯片生產廠商ST,負責在內核之外設計部件并生產整個芯片。這些內核之外的部件被稱為核外外設或片上外設,如 GPIO、USART(串口)、I2C、SPI 等。

芯片內部架構示意圖
芯片內核與外設之間通過各種總線連接,其中驅動單元有 4 個,被動單元也有 4 個,具體如上圖所示。可以把驅動單元理解成是內核部分,被動單元都理解成外設。
ICode 總線
ICode總線是專門用來取指令的,其中的I表示Instruction(指令),指令的意思。寫好的程序編譯之后都是一條條指令,存放在 FLASH中,內核通過ICode總線讀取這些指令來執行程序。
DCode總線
DCode這條總線是用來取數的,其中的D表示Data(數據)。在寫程序的時候,數據有常量和變量兩種。常量就是固定不變的,用C語言中的const關鍵字修飾,放到內部FLASH當中。變量是可變的,不管是全局變量還是局部變量都放在內部的SRAM。
系統System總線
我們通常說的寄存器編程,即讀寫寄存器都是通過系統總線來完成的,系統總線主要是用來訪問外設的寄存器。
DMA總線
DMA總線也主要是用來傳輸數據,這個數據可以是在某個外設的數據寄存器,可以在SRAM,可以在內部FLASH。
因為數據可以被Dcode總線,也可以被DMA總線訪問,為了避免訪問沖突,在取數的時候需要經過一個總線矩陣來仲裁,決定哪個總線在取數。
內部的閃存存儲器Flash
內部的閃存存儲器即FLASH,編寫好的程序就放在這個地方。內核通過ICode總線來取里面的指令。
內部的SRAM
內部的SRAM,是通常所說的內存,程序中的變量、堆棧等的開銷都是基于內部SRAM,內核通過DCode總線來訪問它。
FSMC
FSMC的英文全稱是Flexible static memory controller(靈活的靜態的存儲器控制器)。通過FSMC可以擴展內存,如外部的SRAM、NAND-FLASH和NORFLASH。但FSMC只能擴展靜態的內存,不能是動態的內存,比如就不能用來擴展SDRAM。
AHB
從AHB總線延伸出來的兩條APB2和APB1總線是最常見的總線,GPIO、串口、I2C、SPI 這些外設就掛載在這兩條總線上。這個是學習STM32的重點,要學會對這些外設編程,去驅動外部的各種設備。
原文標題:梳理STM32芯片的內部架構
文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
-
芯片
+關注
關注
463文章
54007瀏覽量
465952 -
存儲器
+關注
關注
39文章
7738瀏覽量
171654 -
STM32
+關注
關注
2309文章
11162瀏覽量
373415
原文標題:梳理STM32芯片的內部架構
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
【今晚7點半】正點原子 x STM32:智能加速邊緣AI應用開發!今晚正點原子B站直播間等你
【「AI芯片:科技探索與AGI愿景」閱讀體驗】+AI芯片的需求和挑戰
使用USB轉TTL串口板和ST-LINK調試下載器給STM32單片機下載程序
【「算力芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】+NVlink技術從應用到原理
請問STM32N6 cubeAI部署時用的內存是在內部還是外部?
請問STM32N6 cubeAI部署時用的內存是在內部還是外部?
邊緣AI應用爆火!STM32N6芯片憑何領跑AI眼鏡和機器人賽道?
請問STM32N6 cubeAI部署時用的內存是在內部還是外部?
STM32F030內部晶振怎么設置,內部晶振是延時函數怎么設置?
全新STM32MP257開發板震撼發布!異核架構x接口豐富x邊緣AI,助力ARM嵌入式工業4.0應用!
DC-DC內部功耗計算
博世GTM IP模塊架構介紹
STM32芯片內部架構的詳細介紹
評論