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