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