|
今天,我們來認(rèn)識一下STM32單片機(jī)的內(nèi)部架構(gòu)。內(nèi)部架構(gòu)也就是這個單片機(jī)有哪些東西組成。
眾所周知,單片機(jī)是由PC機(jī)發(fā)展而來的。它是把我們PC機(jī)所擁有的CPU、RAM、ROM、I/O系統(tǒng)、定時(shí)器、串口等功能集成到一個硅片上而構(gòu)成的一個小而完善的微型計(jì)算機(jī)系統(tǒng)。由于計(jì)算器強(qiáng)大的數(shù)據(jù)處理能力和控制能力,以及單片機(jī)的高可靠性、高抗干擾性、價(jià)格便宜等優(yōu)點(diǎn)而被廣泛的應(yīng)用于工業(yè)控制、醫(yī)療器械、信息通信等領(lǐng)域。
圖1 單片機(jī)內(nèi)部結(jié)構(gòu)圖
7-140P509361MO.jpg (69.43 KB, 下載次數(shù): 125)
下載附件
2015-1-18 22:16 上傳
上圖是一個單片機(jī)內(nèi)部所具有的各種部件。接下來我們看一下這些部件都有什么作用。
1、CPU:
CPU又叫中央處理器。它具備數(shù)據(jù)計(jì)算和指令執(zhí)行的功能。那它都能做哪些運(yùn)算呢。比如我們常用的加、減、乘、除、微分、積分等等。哪些屬于指令的執(zhí)行呢,比如,要計(jì)算加法,那么加法就是一個指令。當(dāng)然CPU還能執(zhí)行很多指令,具體的指令要去看這個單片機(jī)的指令系統(tǒng)。
2、RAM:
RAM又叫數(shù)據(jù)存儲器、隨機(jī)存儲器。它具有可讀可寫的特點(diǎn)(這里的可讀可寫指的是可以在程序的運(yùn)行過程中對它直接操作),掉電數(shù)據(jù)丟失。為什么需要RAM呢。因?yàn)槌绦蛟趫?zhí)行指令或者做運(yùn)算時(shí)會產(chǎn)生一些中間變量,而這些中間變量就需要存儲在RAM中。這就像我們?nèi)祟愒谟?jì)算1+2的時(shí)候,首先我們會在紙上寫出1+2這個式子,同樣對于單片機(jī)也是如此,如果它不記下來的話,那么用的時(shí)候這些數(shù)據(jù)就丟失了。
3、ROM:
ROM又叫做程序存儲器,只讀存儲器。它具有只讀不能寫、掉電數(shù)據(jù)不丟失的特點(diǎn)(實(shí)際上隨著電子技術(shù)的發(fā)展,ROM也有可讀可寫的,不過寫的方法比較特殊)。主要用來存放我們的代碼。
4、I/0系統(tǒng):
I/O系統(tǒng)是單片機(jī)和外部電路打交道的直接窗口,它把單片機(jī)的0,1代碼變成電路中的高低電平。
5、外設(shè):
外設(shè)指能獨(dú)立完成一定功能的一塊電路。它的作用就像一個公司的某個部門一樣,他們能完成一定的功能,但是要受總經(jīng)理(CPU)的控制。
CPU要進(jìn)行指令執(zhí)行、數(shù)據(jù)處理、外設(shè)控制,首先要做的就是從ROM中取出指令,然后執(zhí)行指令,如果指令的執(zhí)行有中間變量,就要在RAM中保存,執(zhí)行完后要去控制外設(shè)來完成特定的功能。從上面我們可以看出,這系列的操作,CPU都要不停的和ROM、RAM、外設(shè)、I/O系統(tǒng)通信,他們的通信通過很多根導(dǎo)線傳輸數(shù)據(jù),這就是總線系統(tǒng)(當(dāng)然這些導(dǎo)線都是集成在單片機(jī)內(nèi)部的,我們是看不到的)。
接下來我們來看一下STM32的內(nèi)部結(jié)構(gòu)
7-140P5093633W6.jpg (120.74 KB, 下載次數(shù): 148)
下載附件
2015-1-18 22:16 上傳
圖中的Cortex-M3就是CPU,F(xiàn)lash就是ROM,SRAM就是RAM,總線矩陣連接著各種總線。圖中紅色方框中就是STM32單片機(jī)的外設(shè)。從上圖我們可以看出,STM32的外設(shè)是比較豐富的,同樣也是比較復(fù)雜的。
接下來我們來分析一下STM32單片機(jī)的最小系統(tǒng):
一:電源:
任何一個電子產(chǎn)品要想正常工作,首先必不可少的就是電源。
圖2.STM32的電源框圖
7-140P5093646345.jpg (68.2 KB, 下載次數(shù): 129)
下載附件
2015-1-18 22:16 上傳
上圖是STM32的電源框圖:從圖中我們可以看出STM32有四組電源系統(tǒng):
1.VREF+、VREF-:這是STM32內(nèi)部AD轉(zhuǎn)換器(一種片內(nèi)外設(shè))所需要的參考電壓
2.VDDA、VSSA:這是STM32內(nèi)部AD轉(zhuǎn)換器所需要的供電電源
3.VSS、VDD:這是STM32內(nèi)部數(shù)字電路所需要的電源(圖中有詳細(xì)的描述)。
4.VBAT:后備電池,通常用紐扣電池。實(shí)現(xiàn)在主電源掉電的情況下給后備區(qū)域供電。
關(guān)于這些電源的電壓取值范圍,STM32的參考手冊上有詳細(xì)的說明。
二:復(fù)位
STM32支持三種復(fù)位方式:系統(tǒng)復(fù)位、電源復(fù)位、備份區(qū)域復(fù)位
1.系統(tǒng)復(fù)位:當(dāng)發(fā)生以下任何一個事件時(shí),產(chǎn)生一個系統(tǒng)復(fù)位
1.NRST引腳上的低電平(也就是外部復(fù)位)
2.窗口看門狗計(jì)數(shù)終止
3.獨(dú)立看門狗計(jì)數(shù)終止
4.軟件復(fù)位
5.低功耗管理復(fù)位
2.電源復(fù)位:當(dāng)發(fā)生以下任何一個事件時(shí),產(chǎn)生一個電源復(fù)位
1.上電/掉電復(fù)位
2.從待機(jī)模式返回
3.備份域復(fù)位:
1.軟件復(fù)位(軟件產(chǎn)生一個備份域復(fù)位信號)
2.在VDD和VBAT兩者都掉電的前提下,VDD或者VBAT上電將引發(fā)備份域復(fù)位。
以上是STM32的復(fù)位系統(tǒng),需要我們使用者做的就是外部復(fù)位電路圖的設(shè)計(jì),關(guān)于這個圖的設(shè)計(jì)請參照STM32課程中的原理圖。
三:時(shí)鐘系統(tǒng)(震蕩電路)
由于單片機(jī)(包括內(nèi)核、存儲器和外設(shè))是時(shí)序邏輯電路,在工作時(shí)必須要一個時(shí)鐘來驅(qū)動。
圖3.STM32的時(shí)鐘系統(tǒng)
7-140P5093F3596.jpg (143.82 KB, 下載次數(shù): 150)
下載附件
2015-1-18 22:16 上傳
上圖是STM32的時(shí)鐘系統(tǒng),紅色方框中代表的是時(shí)鐘的來源:
1. 8MHZ HSI RC 通過稱其為內(nèi)部高速時(shí)鐘
2.LSI RC 40KHZ 通常稱其為內(nèi)部低速時(shí)鐘
3.OSC_INT和OSC_OUT組成了外部高速時(shí)鐘。時(shí)鐘范圍為4--16MHZ
4.OSC32_IN和OSC32_OUT組成了外部低速時(shí)鐘。時(shí)鐘為32.768KHZ
5.SYSCLK 系統(tǒng)時(shí)鐘,最大72MHZ
從圖中我們可以看出,SYSCLK可以有HSI、HSE、PLLCLK來提供,而PLLCLK又來源于HSI/2、HSE、HSE/2、LSE/128。而SYSCLK經(jīng)過AHB預(yù)分頻器、APB1預(yù)分頻器、APB2預(yù)分頻器后供各個外設(shè)使用。
STM32單片機(jī)復(fù)位后把HSI直接作為SYSCLK使用,那這個時(shí)候系統(tǒng)就運(yùn)行在8MHZ的頻率下。由于HSI的精度較差,SYSCLK速度較低等原因,我們需要對STM32的時(shí)鐘系統(tǒng)進(jìn)行配置。一般配置的過程如下。
單片機(jī)復(fù)位后,首先啟動HSE,等待HSE時(shí)鐘穩(wěn)定后,把HSE作為PLL的輸入,PLLMUL把PLL的輸入時(shí)鐘8倍頻后做為SYSCLK,那么系統(tǒng)時(shí)鐘就工作在72MHZ。時(shí)鐘的來源是外部時(shí)鐘。這段代碼的實(shí)現(xiàn)在STM32的庫函數(shù) system_stm32f10x.c文件中的SystemInit()函數(shù)中。
|
-
名片1.png
(148.96 KB, 下載次數(shù): 165)
下載附件
2015-1-17 14:46 上傳
|