【導(dǎo)讀】本篇文章從STM32系列的命名講起,不僅將此系列的命名規(guī)則講解的非常透徹。還對(duì)單片機(jī)知識(shí)當(dāng)中的基礎(chǔ)名詞和一些特殊名詞進(jìn)行了解釋,幾乎囊括了所有的知識(shí)面。對(duì)于新手來說實(shí)在是一篇不得不看的好文章。
對(duì)單片機(jī)處理器行業(yè)有所了解的朋友一定對(duì)STM32系列非常熟悉。這個(gè)系列以性能高成本低而備受關(guān)注,因此應(yīng)用的范圍也是最廣泛的。所以很多新手都會(huì)從此系列開始學(xué)習(xí),STM32系列的名字都很長(zhǎng),有些新手非常好奇這些奇長(zhǎng)的名字都是怎么來的呢?本篇文章就將為大家揭開這個(gè)謎底。
STM32型號(hào)的說明
以STM32F103RBT6這個(gè)型號(hào)的芯片為例,該型號(hào)的組成為7個(gè)部分,其命名規(guī)則如下:
1STM32STM32代表ARM Cortex-M3內(nèi)核的32位微控制器,2FF代表芯片子系列,3103103代表增強(qiáng)型系列。
4RR這一項(xiàng)代表引腳數(shù),其中T代表36腳,C代表48腳,R代表64腳,V代表100腳,Z代表144腳。
5BB這一項(xiàng)代表內(nèi)嵌Flash容量,其中6代表32K字節(jié)Flash,8代表64K字節(jié)Flash,B代表128K字節(jié)Flash,C代表256K字節(jié)Flash,D代表384K字節(jié)Flash,E代表512K字節(jié)Flash。
6TT這一項(xiàng)代表封裝,其中H代表BGA封裝,T代表LQFP封裝,U代表VFQFPN封裝。
766這一項(xiàng)代表工作溫度范圍,其中6代表-40——85℃,7代表-40——105℃。
103性能特點(diǎn)
內(nèi)核:ARM32位Cortex-M3 CPU,最高工作頻率72MHz,1.25DMIPS/MHz。單周期乘法和硬件除法。
存儲(chǔ)器:片上集成32-512KB的Flash存儲(chǔ)器。6-64KB的SRAM存儲(chǔ)器。
時(shí)鐘、復(fù)位和電源管理:2.0-3.6V的電源供電和I/O接口的驅(qū)動(dòng)電壓。POR、PDR和可編程的電壓探測(cè)器(PVD)。4-16MHz的
晶振。內(nèi)嵌出廠前調(diào)校的8MHz RC振蕩電路。內(nèi)部40 kHz的RC振蕩電路。用于CPU時(shí)鐘的PLL。帶校準(zhǔn)用于RTC的32kHz的晶振。
低功耗:3種低功耗模式:休眠,停止,待機(jī)模式。為RTC和備份寄存器供電的VBAT。
調(diào)試模式:串行調(diào)試(SWD)和JTAG接口。
DMA:12通道DMA控制器。支持的外設(shè):定時(shí)器,ADC,DAC,SPI,IIC和UART。
2個(gè)12位的us級(jí)的A/D轉(zhuǎn)換器(16通道):A/D測(cè)量范圍:0-3.6 V。雙采樣和保持能力。片上集成一個(gè)溫度傳感器。
2通道12位D/A轉(zhuǎn)換器:STM32F103xC、STM32F103xD、STM32F103xE獨(dú)有。
最多高達(dá)112個(gè)的快速I/O端口:根據(jù)型號(hào)的不同,有26、37、51、80、和112的I/O端口,所有的端口都可以映射到16個(gè)外部中斷向量。除了模擬輸入,所有的都可以接受5V以內(nèi)的輸入。
最多多達(dá)11個(gè)定時(shí)器:4個(gè)16位定時(shí)器,每個(gè)定時(shí)器有4個(gè)IC/OC/PWM或者脈沖計(jì)數(shù)器。2個(gè)16位的6通道 高級(jí)控制定時(shí)器:最多6個(gè)通道可用于PWM輸出。2個(gè)看門狗定時(shí)器(獨(dú)立看門狗和窗口看門狗)。Systick定時(shí)器:24位倒計(jì)數(shù)器。2個(gè)16位基本定時(shí)器用于驅(qū)動(dòng)DAC。
最多多達(dá)13個(gè)通信接口:2個(gè)IIC接口(SMBus/PMBus)。5個(gè)USART接口(ISO7816接口,LIN,IrDA兼容,調(diào)試控制)。3個(gè)SPI接口(18 Mbit/s),兩個(gè)和IIS復(fù)用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。
ECOPACK封裝:STM32F103xx系列微控制器采用ECOPACK封裝形式。
[page]
晶振工作原理
計(jì)算機(jī)都有個(gè)計(jì)時(shí)電路,盡管一般使用“時(shí)鐘”這個(gè)詞來表示這些設(shè)備,但它們實(shí)際上并不是通常意義的時(shí)鐘,把它們稱為計(jì)時(shí)器(timer)可能更恰當(dāng)一點(diǎn)。計(jì)算機(jī)的計(jì)時(shí)器通常是一個(gè)精密加工過的石英晶體,石英晶體在其張力限度內(nèi)以一定的頻率振蕩,這種頻率取決于晶體本身如何切割及其受到張力的大小。有兩個(gè)寄存器與每個(gè)石英晶體相關(guān)聯(lián),一個(gè)計(jì)數(shù)器(counter)和一個(gè)保持寄存器(holdingregister)。石英晶體的每次振蕩使計(jì)數(shù)器減1。當(dāng)計(jì)數(shù)器減為0時(shí),產(chǎn)生一個(gè)中斷,計(jì)數(shù)器從保持寄存器中重新裝入初始值。這 種方法使得對(duì)一個(gè)計(jì)時(shí)器進(jìn)行編程,令其每秒產(chǎn)生60次中斷(或者以任何其它希望的頻率產(chǎn)生中斷)成為可能。每次中斷稱為一個(gè)時(shí)鐘嘀嗒(clocktick)。
晶振在電氣上可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率為串聯(lián)諧振,較高的頻率為并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏?,在這個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。這個(gè)并聯(lián)諧振電路加到一個(gè)負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍很窄,所以即使其他元件的參數(shù)變化很大,這個(gè)振蕩器的頻率也不會(huì)有很大的變化。
晶振有一個(gè)重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般IC的引腳都有等效輸入電容,這個(gè)不能忽略。一般的晶振的負(fù)載電容為15p或12.5p,如果再考慮元件引腳的等效輸入電容,則兩個(gè)22p的電容構(gòu)成晶振的振蕩電路就是比較好的選擇。
復(fù)位電路的作用
CPU 、單片機(jī)的內(nèi)部結(jié)構(gòu)很復(fù)雜,基本組成部分是:運(yùn)算器、寄存器、存儲(chǔ)器(RAM、ROM)、微程序控制器、地址計(jì)數(shù)器、I/O控制器、定時(shí)器等,機(jī)器上電或程序運(yùn)行出錯(cuò)時(shí),內(nèi)部是隨機(jī)的混亂狀態(tài),各個(gè)功能寄存器的數(shù)據(jù)是隨機(jī)的,尤其是程序計(jì)數(shù)器 PC,是給 CPU指示下一條指令的地址指針,哪怕是錯(cuò)一個(gè)地址,整個(gè)程序就亂套了,如果學(xué)習(xí)過匯編語言就會(huì)明白。
而在復(fù)位端子提供一個(gè)時(shí)間足夠長(zhǎng)的復(fù)位脈沖,CPU內(nèi)部就會(huì)按照設(shè)計(jì)者的意圖,對(duì)各個(gè)部件進(jìn)行初始化工作,PC指向固定的地址,程序從此開始正常運(yùn)行。
在單片機(jī)內(nèi)部都有獨(dú)立運(yùn)行的可編程定時(shí)器,俗稱看門狗,如果程序在規(guī)定的時(shí)間內(nèi)沒有進(jìn)行清零操作,計(jì)數(shù)器溢出就會(huì)強(qiáng)制CPU進(jìn)入復(fù)位操作,使智能化儀器可以從死機(jī)故障中自行解脫出來。
復(fù)位一般有三種模式:上電復(fù)位、手動(dòng)復(fù)位、看門狗復(fù)位。
Flash存儲(chǔ)器 Flash 閃存的英文名稱是"Flash Memory",一般簡(jiǎn)稱為"Flash",它屬于內(nèi)存器件的一種,是一種不揮發(fā)性( Non-Volatile)內(nèi)存。閃存的物理特性與常見的內(nèi)存有根本性的差異:目前各類 DDR 、 SDRAM 或者 RDRAM 都屬于揮發(fā)性內(nèi)存,只要停止電流供應(yīng)內(nèi)存中的數(shù)據(jù)便無法保持,因此每次電腦開機(jī)都需要把數(shù)據(jù)重新載入內(nèi)存;閃存在沒有電流供應(yīng)的條件下也能夠長(zhǎng)久地保持?jǐn)?shù)據(jù),其存儲(chǔ)特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存得以成為各類便攜型數(shù)字設(shè)備的存儲(chǔ)介質(zhì)的基礎(chǔ)。
SRAM是運(yùn)行程序的空間,F(xiàn)LASH是存儲(chǔ)程序的地方
RAM(random access memory)隨機(jī)存儲(chǔ)器。存儲(chǔ)單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲(chǔ)單元的位置無關(guān)的存儲(chǔ)器。這種存儲(chǔ)器在斷電時(shí)將丟失其存儲(chǔ)內(nèi)容,故主要用于存儲(chǔ)短時(shí)間使用的程序。按照存儲(chǔ)信息的不同,隨機(jī)存儲(chǔ)器又分為靜態(tài)隨機(jī)存儲(chǔ)器(Static RAM,SRAM)和動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Dynamic RAM,DRAM)。
ROM(read only memory)只讀存儲(chǔ)器,掉電不丟失;Flash就是rom,sram就是靜態(tài)隨機(jī)儲(chǔ)存器;sram是程序加載的地方,flash就是放程序的地方;rom只是一種形象的稱呼,意思就是掉電不丟失的儲(chǔ)存器,因?yàn)橐郧坝蠵ROM,EPROM,E2PROM;現(xiàn)在都是閃存flash的天下,因?yàn)閒lash容量大。
FLASH程序存儲(chǔ)器存程序,單片機(jī)上電后會(huì)自動(dòng)從這里讀代碼開始運(yùn)行。
SRAM是跑程序時(shí)候暫存臨時(shí)數(shù)據(jù)的地方,一般不太大,從128字節(jié)到幾K字節(jié)都有,一掉電數(shù)據(jù)就沒了。
EEPROM是掉電也不丟數(shù)據(jù)的存儲(chǔ)器,一般都用來存設(shè)置的。你可以一字節(jié)一字節(jié)的把每字節(jié)的8位1任意編寫成0。但這片一般是按扇區(qū)為單位,一擦除就是全成1。 由字面意思就可以理解,SDRAM SRAM DRAM都可以統(tǒng)稱RAM,random access memory的縮寫,只是前面加了幾個(gè)修飾詞而已。
[page]
SRAM:靜態(tài)隨機(jī)存儲(chǔ)器,就是它不需要刷新電路,不像動(dòng)態(tài)隨機(jī)存儲(chǔ)器那樣,每隔一段時(shí)間就要刷新一次數(shù)據(jù)。但是他集成度比較低,不適合做容量大的內(nèi)存,一般是用在處理器的緩存里面。像S3C2440的ARM9處理器里面就有4K的SRAM用來做CPU啟動(dòng)時(shí)用的。
SDRAM:同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,像電腦的內(nèi)存就是用的這種RAM叫DDR SDRAM。其集成度非常高,因?yàn)槭莿?dòng)態(tài)的,所以必須有刷新電路,每隔一段時(shí)間必須得刷新數(shù)據(jù)。其存儲(chǔ)單元不是按線性排列的,是分頁的。一般的嵌入式產(chǎn)品里面的內(nèi)存都是用的SDRAM。
DRAM:動(dòng)態(tài)隨機(jī)存儲(chǔ)器,SDRAM只是其中的一種吧,沒用過,不怎么清楚。
ROM:只讀存儲(chǔ)器的總稱。
PROM:可編程只讀存儲(chǔ)器,只能寫一次,寫錯(cuò)了就得報(bào)廢,現(xiàn)在用得很少了,好像那些成本比較低的OPT單片機(jī)里面用的就是這種存儲(chǔ)器吧。
EPRM:沒見過,不知道什么東西。網(wǎng)上也找不到相關(guān)的東西。是EPROM吧?
EPROM:可擦除可編程存儲(chǔ)器,這東西也比較古老了,是EEPROM的前身,在芯片的上面有個(gè)窗口,通過紫外線的照射來擦除數(shù)據(jù)。非常之麻煩。
EEPROM:電可擦除可編程只讀存儲(chǔ)器,比之EPROM就先進(jìn)點(diǎn)了,可以用電來擦除里面對(duì)數(shù)據(jù),也是現(xiàn)在用得比較多的存儲(chǔ)器,比如24CXX系列的EEPROM。
NANDFLASH和NORFLASH都是現(xiàn)在用得比較多的非易失性閃存。NOR采用的并行接口,其特點(diǎn)讀取的速度比之NAND快樂很多倍,其程序可以直接在NOR里面運(yùn)行。但是它的擦除速度比較慢,集成度低,成本高的。現(xiàn)在的NOR的容量一般在2M左右,一般是用在代碼量小的嵌入式產(chǎn)品方面。還有就是在ARM9的開發(fā)板上可以看見。
而NAND呢,采用的是串行的接口,CPU從里面讀取數(shù)據(jù)的速度很慢,所以一般用NAND做閃存的話就必須把NAND里面的數(shù)據(jù)先讀到內(nèi)存里面,然后CPU才能夠執(zhí)行。就跟電腦的硬盤樣的。但是它的集成度很高,我的ARM9的開發(fā)板上面一塊256M的NAND還沒有一塊2M的NOR的一半大,所以成本很低。還有就是它的擦除速度也的NOR要快。要不然的話那就真的悲劇了,假如擦除一塊2M的NOR要一分鐘,如果NAND的擦除速度比NOR還要慢,那擦除一塊256M的NAND不是要幾個(gè)小時(shí)。NAND一般是用在那些要跑大型的操作系統(tǒng)的嵌入式產(chǎn)品上面,比如LINUX啊,WINCE啊。NOR可是可以跑,可以把LINUX操作系統(tǒng)剪裁到2M以內(nèi),一個(gè)產(chǎn)品難道只去跑系統(tǒng)嗎?用戶的應(yīng)用程序呢!其實(shí)很多時(shí)候,一個(gè)嵌入式產(chǎn)品里面,操作系統(tǒng)占的存儲(chǔ)空間只是一小部分,大部分都是給用戶跑應(yīng)用程序的。就像電腦,硬盤都是幾百G,可是WINDOWNS操作系統(tǒng)所占的空間也不過幾G而已。
CPU
中央處理器是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心(Control Unit)。主要包括運(yùn)算器(ALU,Arithmetic Logic Unit)和高速緩沖存儲(chǔ)器(Cache)及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)(Data)、控制及狀態(tài)的總線(Bus)。它與內(nèi)部存儲(chǔ)器(Memory)和輸入/輸出(I/O)設(shè)備合稱為電子計(jì)算機(jī)三大核心部件。
JTAG接口解讀
通常所說的JTAG大致分兩類,一類用于測(cè)試芯片的電氣特性,檢測(cè)芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個(gè)模塊。
一個(gè)含有JTAG Debug接口模塊的CPU,只要時(shí)鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器和掛在CPU總線上的設(shè)備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,像UART,Timers,GPIO等等的寄存器。
最小系統(tǒng)
硬件最小系統(tǒng):由電源、主板和CPU、內(nèi)存組成.在這個(gè)系統(tǒng)中,沒有任何信號(hào)線的連接,只有電源到主板的電源連接.在判斷的過程中通過聲音來判斷這一核心組成部分是否可正常工作:
軟件最小系統(tǒng):由電源、主板、CPU、內(nèi)存、顯示卡/顯示器、鍵盤和硬盤組成。這個(gè)最小系統(tǒng)主要用來判斷系統(tǒng)是否可完成正常的啟動(dòng)與運(yùn)行。