- 基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實(shí)踐
- 彭剛 秦志強(qiáng)編著
- 3737字
- 2018-12-27 16:01:41
第1章 ARM Cortex-M3處理器編程環(huán)境與嵌入式系統(tǒng)
1.1 單片機(jī)與ARM Cortex-M3處理器
什么是單片機(jī)
一臺(tái)能夠工作的計(jì)算機(jī)要有這樣幾個(gè)部分:CPU(Central Processing Unit,中央處理單元:進(jìn)行運(yùn)算、控制)、RAM(Random Access Memory,隨機(jī)存儲(chǔ)器:數(shù)據(jù)存儲(chǔ))、ROM(Read Only Memory,只讀存儲(chǔ)器:程序存儲(chǔ))、輸入/輸出設(shè)備(串行口、并行口等)。在個(gè)人計(jì)算機(jī)上這些部分被分成若干塊芯片或者插卡,安裝一個(gè)稱為主板的印制線路板上。而在單片機(jī)中,這些部分全部被做到一塊集成電路芯片中,所以就稱為單片機(jī)。
單片機(jī)的用途
與經(jīng)常使用的個(gè)人計(jì)算機(jī)、筆記本電腦相比,單片機(jī)的功能是很小的,那學(xué)它干什么呢?實(shí)際生活中并不是任何需要計(jì)算機(jī)的場(chǎng)合都要求計(jì)算機(jī)有很高的性能,如空調(diào)溫度的控制,冰箱溫度的控制等都不需要很復(fù)雜很高級(jí)的計(jì)算機(jī)。應(yīng)用的關(guān)鍵是看是否夠用,是否有很好的性能價(jià)格比。
單片機(jī)憑借體積小、質(zhì)量小、價(jià)格便宜等優(yōu)勢(shì),已經(jīng)滲透到我們生活的各個(gè)領(lǐng)域:導(dǎo)彈的導(dǎo)航裝置、飛機(jī)上各種儀表的控制、工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理、廣泛使用的各種智能IC卡、小汽車的安全保障系統(tǒng)、錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)、程控玩具、電子寵物等。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表和醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開(kāi)發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用、嵌入式系統(tǒng)設(shè)計(jì)與智能化控制的科學(xué)家、工程師,是成為電子與嵌入式系統(tǒng)工程師必須掌握的基本技能。
嵌入式系統(tǒng)
嵌入式系統(tǒng)是指嵌入到工程對(duì)象中能夠完成特定功能的計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)嵌入到對(duì)象系統(tǒng)中,并在對(duì)象環(huán)境下運(yùn)行。與對(duì)象領(lǐng)域相關(guān)的操作主要是對(duì)外界物理參數(shù)進(jìn)行采集、處理,對(duì)對(duì)象實(shí)現(xiàn)控制,并與操作者進(jìn)行人機(jī)交互等。
與通用計(jì)算機(jī)系統(tǒng)相比,嵌入式系統(tǒng)有其功能的特殊要求和成本的特殊考慮,從而決定了嵌入式系統(tǒng)在高、中、低端系統(tǒng)三個(gè)層次共存的局面。在低端嵌入式系統(tǒng)中,8位單片機(jī)從20世紀(jì)70年代初期誕生至今還一直在工業(yè)生產(chǎn)和日常生活中廣泛使用。近些年,中端的16位單片機(jī)已應(yīng)用于汽車電子、工業(yè)自動(dòng)化等領(lǐng)域。鑒于嵌入式應(yīng)用對(duì)象的響應(yīng)要求、嵌入式系統(tǒng)應(yīng)用的巨大市場(chǎng),可以預(yù)測(cè),8位單片機(jī)、16位單片機(jī)仍然是嵌入式應(yīng)用中的主流機(jī)型,而高端的32位單片機(jī)正逐漸進(jìn)入工業(yè)生產(chǎn)和日常生活領(lǐng)域。
ARM Cortex-M3系列處理器
ARM即Advanced RISC Machines的縮寫,既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。1985年4月26日,第一個(gè)ARM原型在英國(guó)劍橋的Acorn計(jì)算機(jī)有限公司誕生,由美國(guó)加州San Jose VLSI技術(shù)公司制造。20世紀(jì)80年代后期,ARM很快開(kāi)發(fā)成Acorn的臺(tái)式機(jī)產(chǎn)品。20世紀(jì)90年代初,ARM公司成立于英國(guó)劍橋,設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC(Reduced lnstruction Set Computer)處理器、相關(guān)技術(shù)及軟件。ARM公司既不生產(chǎn)芯片也不銷售芯片,它只出售芯片技術(shù)授權(quán),因此叫做Chipless公司。
世界各大半導(dǎo)體生產(chǎn)商從ARM公司購(gòu)買其設(shè)計(jì)的ARM微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐罚瑥亩纬勺约旱腁RM微處理器芯片進(jìn)入市場(chǎng)。利用這種合伙關(guān)系,ARM很快成為許多全球性RISC標(biāo)準(zhǔn)的締造者。目前,采用ARM技術(shù)知識(shí)產(chǎn)權(quán)(Intellectual Property,IP)核的微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、DSP、無(wú)線移動(dòng)應(yīng)用等各類產(chǎn)品市場(chǎng),在低功耗、低成本和高性能的嵌入式系統(tǒng)應(yīng)用領(lǐng)域中處于領(lǐng)先地位。
ARMCortex系列處理器是基于ARMv7架構(gòu)的,分為Cortex-A、Cortex-R和Cortex-M三類。在命名方式上,基于ARMv7架構(gòu)的ARM處理器已經(jīng)不再延用過(guò)去的數(shù)字命名方式,如ARM7、ARM9、ARM11,而是冠以Cortex的代號(hào)。基于v7A的稱為“Cortex-A系列”,基于v7R的稱為“Cortex-R系列”,基于v7M的稱為“Cortex-M系列”。
其中,ARM Cortex-A系列主要用于高性能(Advance)場(chǎng)合,是針對(duì)日益增長(zhǎng)的,運(yùn)行包括Linux、Windows CE和Symbian操作系統(tǒng)在內(nèi)的消費(fèi)者娛樂(lè)和無(wú)線產(chǎn)品設(shè)計(jì)與實(shí)現(xiàn)的;ARM Cortex-R系列主要用于實(shí)時(shí)性(Real time)要求高的場(chǎng)合,針對(duì)的是需要運(yùn)行實(shí)時(shí)操作系統(tǒng)來(lái)進(jìn)行控制應(yīng)用的系統(tǒng),包括汽車電子、網(wǎng)絡(luò)和影像系統(tǒng);ARM Cortex-M系列則主要用于微控制器單片機(jī)(MCU)領(lǐng)域,是為那些對(duì)功耗和成本非常敏感,同時(shí)對(duì)性能要求不斷增加的嵌入式應(yīng)用(如微控制器系統(tǒng)、汽車電子與車身控制系統(tǒng)、各種家電、工業(yè)控制、醫(yī)療器械、玩具和無(wú)線網(wǎng)絡(luò)等)所設(shè)計(jì)與實(shí)現(xiàn)的。隨著在各種不同領(lǐng)域應(yīng)用需求的增加,微處理器市場(chǎng)也在趨于多樣化。為了適應(yīng)市場(chǎng)的發(fā)展變化,基于ARMv7架構(gòu)的ARM處理器系列將不斷拓展自己的應(yīng)用領(lǐng)域。
Cortex-M3是一個(gè)32位的單片機(jī)核,在傳統(tǒng)的單片機(jī)領(lǐng)域中,有一些不同于通用32位CPU應(yīng)用的要求。例如,在工控領(lǐng)域,用戶要求具有更快的中斷速度,Cortex-M3采用了搶占(Pre-emption)、尾鏈(Tail-chaining)、遲到(Late-arriving)中斷技術(shù),對(duì)中斷事件的響應(yīng)更迅速。比如,尾鏈技術(shù)完全基于硬件進(jìn)行中斷處理,最多可減少12 個(gè)時(shí)鐘周期數(shù),背對(duì)背中斷之間的延時(shí)時(shí)間、從低功耗模式喚醒時(shí)間只有個(gè)6 個(gè)時(shí)鐘周期。特別適用于汽車電子和無(wú)線通信領(lǐng)域。
ARM Cortex-M3處理器結(jié)合了多種創(chuàng)新性突破技術(shù),使得芯片供應(yīng)商可以提供超低費(fèi)用的芯片。僅有33000門的M3內(nèi)核,其性能可達(dá)1.25DMIPS/MHz,如主頻為72MHz的M3處理器性能可達(dá)90DMIPS。M3處理器還集成了許多緊耦合系統(tǒng)外設(shè),合理利用了芯片空間,使系統(tǒng)能滿足下一代產(chǎn)品的控制需求。Cortex的優(yōu)勢(shì)在于低功耗、低成本、高性能的結(jié)合。
處理器性能
DMIPS(Dhrystone Million Instructions executed Per Second)主要用于測(cè)整數(shù)計(jì)算能力。其中,MIPS(Million Instructions executed Per Second),每秒百萬(wàn)條指令,用來(lái)計(jì)算同一秒內(nèi)系統(tǒng)的處理能力,即每秒執(zhí)行了多少百萬(wàn)條指令。D是Dhrystone的縮寫,Dhrystone是測(cè)量處理器運(yùn)算能力的最常見(jiàn)基準(zhǔn)程序之一,常用于處理器的整形運(yùn)算性能的測(cè)量,程序是用C語(yǔ)言編寫的。
Dhrystone的計(jì)量單位為每秒計(jì)算多少次Dhrystone,后來(lái)把在VAX-11/780機(jī)器上的測(cè)試結(jié)果1757 Dhrystones/s定義為1 Dhrystone MIPS(百萬(wàn)條指令每秒)。DMIPS表示了在Dhrystone這樣一種測(cè)試方法下的MIPS。例如,一個(gè)處理器達(dá)到200DMIPS的性能,是指這個(gè)處理器測(cè)整數(shù)計(jì)算能力為(200×100萬(wàn))條指令/秒。
Cortex-M3處理器包括處理器內(nèi)核、嵌套向量中斷控制器(Nested Vectored Interrupt Controller,NVIC)、存儲(chǔ)器保護(hù)單元、總線接口單元和跟蹤調(diào)試單元等,為微控制器應(yīng)用而開(kāi)發(fā)的ARM Cortex-M3擁有以下性能:
● Cortex-M3內(nèi)核使用3級(jí)流水線哈佛架構(gòu),運(yùn)用分支預(yù)測(cè)、單周期乘法和硬件除法功能實(shí)現(xiàn)了1.25DMIPS/MHz出色的運(yùn)算效率(與0.9DMIPS/MHz的ARM7和1.1DMIPS/MHz的ARM9相比),而功耗僅0.19mW/MHZ。
● 采用專門面向C語(yǔ)言設(shè)計(jì)的Thumb-2指令集,最大限度地降低了匯編語(yǔ)言的使用。而且Thumb-2指令集允許用戶在C代碼層面維護(hù)和修改應(yīng)用程序,C代碼部分非常易于重用。可以這么說(shuō),沒(méi)有必要使用任何匯編語(yǔ)言,這樣新產(chǎn)品的開(kāi)發(fā)將更易于實(shí)現(xiàn),上市時(shí)間也大為縮短。
● Thumb-2指令集免去了Thumb和ARM代碼的互相切換,性能得到了提高。結(jié)合非對(duì)齊數(shù)據(jù)存儲(chǔ)和原子位處理等特性,可在一個(gè)單一指令中實(shí)現(xiàn)讀取/修改/編寫,輕易以8位、16位器件所需的存儲(chǔ)空間就實(shí)現(xiàn)了32位性能。
● 單周期乘法和乘法累加指令、硬件除法。
● 準(zhǔn)確快速地進(jìn)行中斷處理,不超過(guò)12周期,最快僅6周期。內(nèi)置的NVIC通過(guò)末尾連鎖,即尾鏈(Tail-chaining)技術(shù)提供了確定的、低延遲的中斷處理,并可以設(shè)置帶有多達(dá)240 個(gè)中斷,可為中斷較為集中的汽車應(yīng)用領(lǐng)域?qū)崿F(xiàn)可靠的操作。
● 對(duì)于工業(yè)控制應(yīng)用,存儲(chǔ)器保護(hù)單元(Memory Protection Unit,MPU)通過(guò)使用特權(quán)訪問(wèn)模式可以實(shí)現(xiàn)安全操作。
● Flash修補(bǔ)和斷點(diǎn)(Flash Patch and Breakpoint-unit)單元、數(shù)據(jù)觀察點(diǎn)和跟蹤(Data Watchpoint and Trace-DWT)單元、儀器測(cè)量跟蹤宏單元(Instrumentation Trace Macrocell-ITM)和嵌入式跟蹤宏單元(Embedded Trace Macrocell- ETM)為嵌入式器件提供了廉價(jià)的調(diào)試和跟蹤技術(shù)。
● 擴(kuò)展時(shí)鐘門控技術(shù)和內(nèi)置睡眠模式適用于低功耗的無(wú)線設(shè)計(jì)領(lǐng)域,具有低功耗時(shí)鐘門控(Clock Gating)3種睡眠模式。
因此,ARM Cortex-M3處理器是專門為那些對(duì)成本和功耗非常敏感但同時(shí)對(duì)性能要求又相當(dāng)高的應(yīng)用而設(shè)計(jì)的。憑借縮小的內(nèi)核尺寸、出色的中斷延遲、集成的系統(tǒng)部件、靈活的硬件配置、快速的系統(tǒng)調(diào)試和簡(jiǎn)易的軟件編程,Cortex-M3處理器將成為廣大嵌入式系統(tǒng)(從復(fù)雜的片上系統(tǒng)到低端微控制器)的理想解決方案,基于Cortex-M3處理器的系統(tǒng)設(shè)計(jì)可以更快地投入市場(chǎng)。
STM32F103系列微控制器
STM32系列微控制器是由ST意法半導(dǎo)體公司以ARM Cortex-M3為內(nèi)核開(kāi)發(fā)生產(chǎn)的32位微控制器(單片機(jī)),專為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)。分成幾個(gè)不同系列:STM32F100為“超值型”,STM32F101為“基本型”,STM32F102為“USB基本型”,STM32F103為“增強(qiáng)型”,STM32F105或107為“互聯(lián)型”,STM32L為“超低功耗型”。例如,基本型時(shí)鐘頻率為36MHz,以16位產(chǎn)品的價(jià)格得到比16位產(chǎn)品更好的性能,是16位產(chǎn)品用戶的最佳選擇;增強(qiáng)型系列時(shí)鐘頻率達(dá)到72MHz,是同類產(chǎn)品中性能最高的。這些系列都內(nèi)置16K到512K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。STM32系列微控制器具有很高的集成度,除豐富的接口外,還內(nèi)置復(fù)位電路、低電壓檢測(cè)、調(diào)壓器、精確的RC振蕩器等。STM32系列微控制器時(shí)鐘頻率為72MHz時(shí),從閃存執(zhí)行代碼,功耗為36mA(所有外設(shè)處于工作狀態(tài)),是32位市場(chǎng)上功耗最低的,相當(dāng)于0.5mA/MHz。而待機(jī)時(shí),功耗下降到2μA。
STM32F103xx增強(qiáng)型系列使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲(chǔ)器(最高可達(dá)512K字節(jié)的閃存和64K字節(jié)的SRAM),具有豐富的增強(qiáng)型I/O端口和連接到兩條高性能外設(shè)總線(Advanced Peripheral Bus,APB)的外設(shè)。STM32F103Vx系列都至少包含2個(gè)12位的ADC、1個(gè)高級(jí)定時(shí)器、3個(gè)通用16位定時(shí)器(具有PWM輸出功能),還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:2個(gè)I2C(SMBus/PMBus)、2個(gè)SPI同步串行接口(18兆位/秒)、3個(gè)USART異步串行接口(4.5兆位/秒的)、1個(gè)USB全速接口和一個(gè)CAN(2.0B)接口。I/O翻轉(zhuǎn)速度可達(dá)18MHz。
圖1.1是基于ARM Cortex-M3內(nèi)核的STM32F10x系列微控制器的外觀(LQFP100封裝)。表1.1是STM32F103xx增強(qiáng)型微控制器(Flash不超過(guò)128K的中小容量)各系列的外設(shè)資源。大容量的STM32F10x系列單片機(jī)外設(shè)資源和芯片編號(hào)詳細(xì)說(shuō)明見(jiàn)附錄。

圖1.1 基于ARM Cortex-M3內(nèi)核的STM32F10x系列微控制器的外觀
表1.1 STM32F103xx增強(qiáng)型微控制器各系列的外設(shè)資源

- 用Proteus可視化設(shè)計(jì)玩轉(zhuǎn)Arduino
- FPGA嵌入式項(xiàng)目開(kāi)發(fā)三位一體實(shí)戰(zhàn)精講
- VxWorks設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解
- 基于HCS12的嵌入式系統(tǒng)設(shè)計(jì)
- 單片機(jī)應(yīng)用基礎(chǔ)教程(第二版)
- STM32單片機(jī)全案例開(kāi)發(fā)實(shí)戰(zhàn)
- 嵌入式虛擬化技術(shù)與應(yīng)用:ACRN開(kāi)源項(xiàng)目實(shí)踐
- 嵌入式系統(tǒng)Linux內(nèi)核開(kāi)發(fā)實(shí)戰(zhàn)指南(ARM平臺(tái))
- 嵌入式系統(tǒng)設(shè)計(jì)與實(shí)踐:Linux篇
- 計(jì)算機(jī)與嵌入式系統(tǒng)架構(gòu)
- 零基礎(chǔ)學(xué)51單片機(jī)(C語(yǔ)言版)
- 我和PIC單片機(jī):基于PIC18
- 單片機(jī)開(kāi)發(fā)從入門到實(shí)踐
- 嵌入式系統(tǒng):基于項(xiàng)目的分析和設(shè)計(jì)
- 深度學(xué)習(xí)實(shí)踐教程