STM32-內(nèi)部結(jié)構(gòu)
我們查看《STM32中文資料》的第二節(jié)《存儲(chǔ)器和總線架構(gòu)》,也就是資料的第25頁(yè)?!禨TM32中文資料》相當(dāng)詳細(xì),總共754頁(yè)。如果打印出來(lái)非常多。因?yàn)橐话愫褚稽c(diǎn)的書也就500頁(yè)左右。我們不必一次看完。因?yàn)橛行┕δ苣赡軙簳r(shí)用不著。比如您如果不做變頻,PWM也許就用不著。如果您做調(diào)壓控制USB也許永遠(yuǎn)用不著。但是前面幾個(gè)章節(jié)還是有必要了解一下。一般來(lái)說(shuō)半年熟悉一個(gè)MCU應(yīng)用已經(jīng)很好了。
本文引用地址:http://m.butianyuan.cn/article/201611/323218.htm我們先來(lái)看看下圖,下圖來(lái)源于《STM32中文資料》。我們只是初識(shí)一下。這是STM32的內(nèi)部結(jié)
構(gòu)。
Cortex-M3是處理器核,其余是外設(shè)。通過(guò)總線與外設(shè)通訊,形成系統(tǒng)。首先是ICode是指令總線,falsh通過(guò)flash接口與 Cortex-M3連接。完成指令的讀取。DCode總線通過(guò)總線矩陣與其他外設(shè)相連。也就是說(shuō)任意設(shè)備包括串口、ADC、DMA等數(shù)據(jù)可以直接通過(guò)DCode總線到達(dá)Cortex-M3。在這里我們可以發(fā)現(xiàn) 唯獨(dú)Icode總線不經(jīng)過(guò)總線矩陣。為什么?我以為可能是指令都是存儲(chǔ)在flash中。而一個(gè)系統(tǒng)中指令數(shù)量應(yīng)該是最多的,所以為了提高效率icode總線不經(jīng)過(guò)總線矩陣。SRAM是數(shù)據(jù)區(qū)。原子使用的是STM32F103RBT6,有20KRAM,128Kflash。8bit的51是永遠(yuǎn)達(dá)不到的。在我見(jiàn)過(guò)的51單片最大RAM也就4K,flash64K.當(dāng)要做一個(gè)圖形驅(qū)動(dòng)時(shí)常常捉襟見(jiàn)肘。 DMA通道合計(jì)有12個(gè)??梢栽谧鵄DC項(xiàng)目時(shí)使用DMA。可以提高程序效率。因?yàn)椴挥迷購(gòu)腁DC寄存器中讀取值。System總線通過(guò)總線矩陣完成DMA與外設(shè)通訊。AHB總線通過(guò)橋接1、與橋接2將低速設(shè)備與總線矩陣連接起來(lái)。和明顯一部分外設(shè)是掛接在APB1和APB2上。通過(guò)RCC時(shí)鐘可以控制AHB總線上外設(shè)工作和不工作。這樣可以節(jié)省一部分功率。FSMC總線可以用來(lái)連接存儲(chǔ)設(shè)備或者TFT屏幕。
以上只是STM32的內(nèi)部基本功能。下面我們看看上節(jié)STMF103的內(nèi)部基本框圖
這幅圖就更加詳細(xì),Cortex-M3處理器可以工作的頻率是72M。這當(dāng)然是通過(guò)PLL實(shí)現(xiàn)的。同樣的外部晶振通過(guò)PLL您就有很多選擇。比如1倍頻、2倍頻等。自由度是很大的。NVIC是嵌套中斷向量控制器。SW/JTAGE是調(diào)試端口。到底選擇JTAGE還是SW作為調(diào)試方法,其中優(yōu)缺點(diǎn)原子有介紹。JTAGE占的端口多一些。TPIU與Trace/trig以及pbus、TraceControl我還不了解其用途。歡迎大家和我分享。POWER可以將3.3V轉(zhuǎn)換1.8V,提供給其他設(shè)備使用,可以降低能耗。OSC_IN、OSC_OUT接入外部時(shí)鐘后可以產(chǎn)生各種時(shí)鐘。當(dāng)然您如果對(duì)時(shí)鐘精度要求不嚴(yán),比如您不做串口通訊??梢允褂脙?nèi)部時(shí)鐘,這樣可以節(jié)省成本。OSC32_IN、OSC_OUT接入32K時(shí)鐘后可以作為RTC使用。在以前如果需要時(shí)鐘必須使用DS1302等芯片來(lái)實(shí)現(xiàn)。
在APB1、APB2總線上掛接了所有的外設(shè),定時(shí)器4個(gè)、串口3個(gè)、SPI 2個(gè)、I2C 2個(gè)、GPIO 5組、ADC 2個(gè)、溫度傳感器 1個(gè)。
資源如此豐富,讓我們一起來(lái)學(xué)習(xí)吧!
評(píng)論