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

芯片內(nèi)部架構(gòu)示意圖
芯片內(nèi)核與外設(shè)之間通過各種總線連接,其中驅(qū)動單元有 4 個,被動單元也有 4 個,具體如上圖所示??梢园羊?qū)動單元理解成是內(nèi)核部分,被動單元都理解成外設(shè)。
ICode 總線
ICode總線是專門用來取指令的,其中的I表示Instruction(指令),指令的意思。寫好的程序編譯之后都是一條條指令,存放在 FLASH中,內(nèi)核通過ICode總線讀取這些指令來執(zhí)行程序。
DCode總線
DCode這條總線是用來取數(shù)的,其中的D表示Data(數(shù)據(jù))。在寫程序的時候,數(shù)據(jù)有常量和變量兩種。常量就是固定不變的,用C語言中的const關(guān)鍵字修飾,放到內(nèi)部FLASH當(dāng)中。變量是可變的,不管是全局變量還是局部變量都放在內(nèi)部的SRAM。
系統(tǒng)System總線
我們通常說的寄存器編程,即讀寫寄存器都是通過系統(tǒng)總線來完成的,系統(tǒng)總線主要是用來訪問外設(shè)的寄存器。
DMA總線
DMA總線也主要是用來傳輸數(shù)據(jù),這個數(shù)據(jù)可以是在某個外設(shè)的數(shù)據(jù)寄存器,可以在SRAM,可以在內(nèi)部FLASH。
因?yàn)閿?shù)據(jù)可以被Dcode總線,也可以被DMA總線訪問,為了避免訪問沖突,在取數(shù)的時候需要經(jīng)過一個總線矩陣來仲裁,決定哪個總線在取數(shù)。
內(nèi)部的閃存存儲器Flash
內(nèi)部的閃存存儲器即FLASH,編寫好的程序就放在這個地方。內(nèi)核通過ICode總線來取里面的指令。
內(nèi)部的SRAM
內(nèi)部的SRAM,是通常所說的內(nèi)存,程序中的變量、堆棧等的開銷都是基于內(nèi)部SRAM,內(nèi)核通過DCode總線來訪問它。
FSMC
FSMC的英文全稱是Flexible static memory controller(靈活的靜態(tài)的存儲器控制器)。通過FSMC可以擴(kuò)展內(nèi)存,如外部的SRAM、NAND-FLASH和NORFLASH。但FSMC只能擴(kuò)展靜態(tài)的內(nèi)存,不能是動態(tài)的內(nèi)存,比如就不能用來擴(kuò)展SDRAM。
AHB
從AHB總線延伸出來的兩條APB2和APB1總線是最常見的總線,GPIO、串口、I2C、SPI 這些外設(shè)就掛載在這兩條總線上。這個是學(xué)習(xí)STM32的重點(diǎn),要學(xué)會對這些外設(shè)編程,去驅(qū)動外部的各種設(shè)備。
原文標(biāo)題:梳理STM32芯片的內(nèi)部架構(gòu)
文章出處:【微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
芯片
+關(guān)注
關(guān)注
463文章
53849瀏覽量
463031 -
存儲器
+關(guān)注
關(guān)注
39文章
7724瀏覽量
171252 -
STM32
+關(guān)注
關(guān)注
2307文章
11150瀏覽量
372393
原文標(biāo)題:梳理STM32芯片的內(nèi)部架構(gòu)
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【今晚7點(diǎn)半】正點(diǎn)原子 x STM32:智能加速邊緣AI應(yīng)用開發(fā)!今晚正點(diǎn)原子B站直播間等你
【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】+NVlink技術(shù)從應(yīng)用到原理
請問STM32N6 cubeAI部署時用的內(nèi)存是在內(nèi)部還是外部?
請問STM32N6 cubeAI部署時用的內(nèi)存是在內(nèi)部還是外部?
請問STM32N6 cubeAI部署時用的內(nèi)存是在內(nèi)部還是外部?
STM32F030內(nèi)部晶振怎么設(shè)置,內(nèi)部晶振是延時函數(shù)怎么設(shè)置?
電壓調(diào)節(jié)芯片SG3525內(nèi)部結(jié)構(gòu)及功能
DC-DC內(nèi)部功耗計算
使用STM32F030時沒使用內(nèi)部晶振怎么設(shè)置,使用內(nèi)部晶振時延時函數(shù)怎么寫?
LPDDR4 16Gb 技術(shù)文檔詳解:SK hynix H9HCNNNBKUMLXR 規(guī)格書
芯片架構(gòu)設(shè)計的關(guān)鍵要素
STM32開發(fā)板教程之STM32開發(fā)指南免費(fèi)下載
高通AR1 Gen1芯片詳細(xì)介紹和應(yīng)用案例
STM32芯片內(nèi)部架構(gòu)的詳細(xì)介紹
評論