ARM系列單片機(jī)原理與應(yīng)用_第1頁
ARM系列單片機(jī)原理與應(yīng)用_第2頁
ARM系列單片機(jī)原理與應(yīng)用_第3頁
ARM系列單片機(jī)原理與應(yīng)用_第4頁
ARM系列單片機(jī)原理與應(yīng)用_第5頁
已閱讀5頁,還剩311頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章ARM系列單片機(jī)原理與應(yīng)用

8.1ARM系列單片機(jī)概述

8.2ARM處理器的編程模型

8.3ARM系列單片機(jī)的硬件結(jié)構(gòu)

8.4ARM系列單片機(jī)指令系統(tǒng)及編程

8.5ARM系列單片機(jī)集成開發(fā)環(huán)境

8.1ARM系列單片機(jī)概述

ARM系列單片機(jī)實(shí)際上是對(duì)基于ARM處理器核而設(shè)計(jì)的一類單片機(jī)的泛稱,也常被稱為ARM系列微控制器。ARM是AdvancedRISCMachines的縮寫,是英國一家知名微處理器設(shè)計(jì)公司的名稱。ARM公司既不生產(chǎn)芯片也不銷售芯片,它只從事處理器技術(shù)研發(fā)和技術(shù)授權(quán)轉(zhuǎn)讓,將其自主研發(fā)的技術(shù)出售給合作伙伴公司,由他們?nèi)ドa(chǎn)基于ARM核的單片機(jī)芯片。至今,全世界包括Intel、Philips、Atmel、IBM、TI、AD、Motorola、Altera、NetSilicon、OKI、SONY、NEC等許多著名半導(dǎo)體公司在內(nèi)的100多家公司,都與ARM公司建立了合作伙伴關(guān)系,采用了其ARM核技術(shù)來生產(chǎn)微處理器或微控制器芯片。國內(nèi)多家大公司也已經(jīng)購買ARM公司的芯核技術(shù),用于通信專用芯片的設(shè)計(jì)。

8.1ARM系列單片機(jī)概述

ARM處理器核的顯著特點(diǎn)是速度高、功耗低、功能強(qiáng)、價(jià)格廉,具有業(yè)界公認(rèn)的世界領(lǐng)先、最受歡迎的32位嵌入式RISC(ReducedInstructionSetComputer)處理器結(jié)構(gòu)(通常稱之為ARM體系結(jié)構(gòu))。因此,ARM核單片機(jī)在移動(dòng)通信、可視電話、信息家電、掌上電腦、TV機(jī)頂盒、數(shù)碼照相機(jī)、攝像機(jī)等控制及算法相對(duì)復(fù)雜、數(shù)據(jù)存儲(chǔ)及處理量較大、事務(wù)調(diào)度能力和實(shí)時(shí)性要求較高的場合,獲得了極為廣泛的應(yīng)用,而且必將用得越來越廣泛。目前在32位單片機(jī)市場上,ARM實(shí)際上已扮演著類似于8位單片機(jī)市場上8051的角色。

8.1ARM系列單片機(jī)概述按照ARM結(jié)構(gòu)設(shè)計(jì)的ARM處理器核,經(jīng)過多年的發(fā)展和優(yōu)勝劣汰,當(dāng)前應(yīng)用較多的主要有6個(gè)系列:ARM7、ARM9、ARM9E、ARM10E、SecurCore和最新的ARM11。其中在中國市場上比較流行的主要是ARM7和ARM9兩個(gè)系列,兩者功能、性能上雖然互有差異,但基本結(jié)構(gòu)大同小異,且都是32位嵌入式處理器,都同時(shí)支持32位的ARM指令集和16位的Thumb指令集,因此在應(yīng)用編程上也大同小異。鑒于ARM7比ARM9應(yīng)用更廣,基于ARM7處理器核設(shè)計(jì)生產(chǎn)芯片的公司更多,同時(shí)其性能價(jià)格比也更高,加之結(jié)合它進(jìn)行教學(xué)既簡單又典型,所以本章將主要以ARM7處理器核為例,介紹ARM的編程結(jié)構(gòu)和以它為核心構(gòu)成的單片機(jī)的應(yīng)用系統(tǒng)設(shè)計(jì)和調(diào)試方法。

8.1.1ARM核的結(jié)構(gòu)特性

ARM處理器核是基于精簡指令集計(jì)算機(jī)(RISC)原理而設(shè)計(jì)的,因此它在體系結(jié)構(gòu)上具有極典型的RISC特性,如:

?

具有統(tǒng)一和固定長度的指令域,使指令集和指令譯碼大大簡化;

?

具有一個(gè)大而統(tǒng)一的寄存器文件,大多數(shù)數(shù)據(jù)操作都在寄存器中完成,使指令執(zhí)行速度更快;

?

采用加載/存儲(chǔ)結(jié)構(gòu),使數(shù)據(jù)處理時(shí)只對(duì)寄存器操作,而不直接對(duì)存儲(chǔ)器操作;

?

尋址方式簡單而靈活,所有加載/存儲(chǔ)的地址都只由寄存器的內(nèi)容和指令域決定,執(zhí)行效率高;

8.1.1ARM核的結(jié)構(gòu)特性?

每一條數(shù)據(jù)處理指令都對(duì)算術(shù)邏輯單元(ALU)和移位寄存器進(jìn)行控制,以最大限度地提高ALU和移存器的利用率;?

采用自動(dòng)增/減地址的尋址方式,有利于優(yōu)化循環(huán)程序的執(zhí)行;?

引入多寄存器加載/存儲(chǔ)指令,有利于實(shí)現(xiàn)數(shù)據(jù)吞吐量的最大化;?

所有指令的條件執(zhí)行有利于實(shí)現(xiàn)最快速的代碼執(zhí)行;

……。

8.1.1ARM核的結(jié)構(gòu)特性

這些RISC結(jié)構(gòu)特性帶來的結(jié)果,是使ARM核在高性能、低代碼規(guī)模、低功耗和高集成度等方面獲得了良好的平衡,實(shí)現(xiàn)了綜合優(yōu)化,從而使指令吞吐量和吞吐率明顯增大,實(shí)時(shí)中斷響應(yīng)性能顯著增強(qiáng),總的性能價(jià)格比大大提高。

ARM的體系結(jié)構(gòu)從提出至今,一直在不斷改進(jìn)、完善和發(fā)展,根據(jù)其所用指令集的不同,先后推出了5種版本v1~v5。版本v1、v2均只有26位的尋址空間,現(xiàn)在基本上已廢棄不用。版本v3~v5,將尋址空間擴(kuò)展到了32位。

8.1.2ARM7系列處理器核簡介

ARM7系列處理器核包括ARM7TDMI、ARM7TDMI-S、ARM720T和ARM7EJ-S。

ARM7TDMI是從ARM6核發(fā)展而來的第一款A(yù)RM7核,它的后綴“TDMI”反映了它在ARM6基礎(chǔ)上所增加的功能:T表示擴(kuò)展了高密度16位的Thumb指令集;D表示支持在片調(diào)試,允許處理器響應(yīng)調(diào)試請(qǐng)求暫停;M表示具有增強(qiáng)型64位乘法指令,支持兩個(gè)32位數(shù)相乘而直接產(chǎn)生64位結(jié)果;I表示內(nèi)含EmberdedICE觀察點(diǎn)硬件,可提供對(duì)設(shè)置片上斷點(diǎn)和調(diào)試點(diǎn)的支持。

8.1.2ARM7系列處理器核簡介

ARM7TDMI-S是ARM7TDMI的可綜合(Synthesizable)版本(軟核),邏輯上與ARM7TDMI基本相同,編程模型與ARM7TDMI完全一樣,差別僅在于它的邏輯功能可由芯片生產(chǎn)廠商進(jìn)行裁剪。所以,以后如無特殊說明,對(duì)這兩者不予區(qū)分,統(tǒng)稱為ARM7TDMI。

8.1.2ARM7系列處理器核簡介

ARM720T是帶有高速緩存處理宏單元的高性能ARM7核,宏單元中提供了8KB緩存、讀緩沖和內(nèi)存管理等功能,可支持Linux、SymbiamOS和WindowsCE等操作系統(tǒng)。

ARM7EJ-S是擴(kuò)充了Jazelle功能的可綜合版本處理器核。該系列處理器核都提供了ARM32位指令集和Thumb16位壓縮指令集,提供了對(duì)EmbeddedICEJTAG軟件調(diào)試方式的支持,很適合用于大規(guī)模、超大規(guī)模集成的SoC設(shè)計(jì)中,并能很好地兼容8位/16位器件,目前在PDA、移動(dòng)電話等智能化多媒體無線設(shè)備領(lǐng)域和調(diào)制解調(diào)器、網(wǎng)卡等廣域網(wǎng)、局域網(wǎng)接入設(shè)備中已獲得廣泛應(yīng)用。

8.1.3常用ARM系列單片機(jī)選型指南如前所述,世界上基于ARM處理器核開發(fā)生產(chǎn)ARM單片機(jī)(包括微處理器和微控制器芯片)的公司很多,因此各ARM系列單片機(jī)的型號(hào)種類都很多,如Atmel公司基于ARM7TDMI核的芯片型號(hào)AT91F40416,AT91FR40481,AT91F40807,AT91F42800,AT91F43300,AT91F55800,AT91F40807,AT91M40400,AT91M40800,AT91M63200,AT75C220,AT75C310;NetSilicon公司基于ARM720TDMI核的NET+15,NET+40,NET+50;Linkup公司基于ARM720T核的L7200,L7205,L7210;Altera公司基于ARM922T核的EPXA1,EPXA4,EPXA10;Samsung公司基于ARM720TDMI核的S3C3400A,S3C3410A,S3C44A0A,S3C34B0A,S3C34510;Motorola公司基于ARM9207核的DragonBallMXI;Sharp公司基于ARM720TDMI核的LH75400,基于ARM720T核的LH79520,基于ARM922T核的LH7A400;等等。

8.1.3常用ARM系列單片機(jī)選型指南不同公司、不同型號(hào)的產(chǎn)品,功能性能各有千秋。這里僅以市場上較常見、應(yīng)用也較廣的,Philips公司基于ARM7TDMI-S核生產(chǎn)的LPC2100和LPC2200兩個(gè)系列的32位ARM微控制器為例,給出它們中主要型號(hào)的功能配置,如表8.1所示。讀者可以此作為選型指南,參照其中的配置來決定自己的芯片選型。

8.1.3常用ARM系列單片機(jī)選型指南

8.1PhilipsLPC系列32位ARM微控制器選型指南型號(hào)存儲(chǔ)器定時(shí)/計(jì)數(shù)器模-數(shù)轉(zhuǎn)換CANWDT串行接口I/O通道數(shù)CPU電壓/VI/O電壓/V最高頻率/MHz封裝RAM/KBFlash/KBISPIAPTim.

PWMRTCADC路/位DAC路/位UARTI2CSPIUSBLPC2100系列LPC210128YYYY-8/10--Y222-321.83.370LQFP48LPC2102416YYYY-8/10--Y222-321.83.370LQFP48LPC2103832YYYY-8/10--Y222-321.83.370LQFP48LPC210416128YYYYY---Y2YY-321.83.360LQFP48LPC210532128YYYYY---Y2YY-321.83.360LQFP48LPC210664128YYYYY---Y2YY-321.83.360LQFP48LPC211416128YYYYY4/10--Y2Y2-461.83.360LQFP64LPC211916128YYYYY4/10-2Y2Y2-461.83.360LQFP64LPC212416256YYYYY4/10--Y2Y2-461.83.360LQFP64LPC212916256YYYYY4/10-2Y2Y2-461.83.360LQFP64LPC2131832YYYYY8/10--Y222-473.33.360LQFP64LPC21321664YYYYY8/101/10-Y222-473.33.360LQFP64LPC213416128YYYYY8/10x21/10-Y222-473.33.360LQFP64LPC213632256YYYYY8/10x21/10-Y222-473.33.360LQFP64LPC213832512YYYYY8/10x21/10-Y222-473.33.360LQFP64

8.1.3常用ARM系列單片機(jī)選型指南

8.1PhilipsLPC系列32位ARM微控制器選型指南型號(hào)存儲(chǔ)器定時(shí)/計(jì)數(shù)器模-數(shù)轉(zhuǎn)換CANWDT串行接口I/O通道數(shù)CPU電壓/VI/O電壓/V最高頻率/MHz封裝RAM/KBFlash/KBISPIAPTim.

PWMRTCADC路/位DAC路/位UARTI2CSPIUSBLPC2100系列LPC2141832YYYYY6/101/10-Y222Y453.33.360LQFP64LPC21421664YYYYY6/101/10-Y222Y453.33.360LQFP64LPC214416128YYYYY14/101/10-Y222Y453.33.360LQFP64LPC214632+8256YYYYY14/101/10-Y222Y453.33.360LQFP64LPC214832+8512YYYYY14/101/10-Y222Y453.33.360LQFP64LPC219416256YYYYY4/101/10-Y222Y461.83.360LQFP64LPC2200系列LPC221016---YYY8/10--Y2Y2-761.83.360LQFP144LPC221216128YYYYY8/10--Y2Y2-1121.83.360LQFP144LPC221416256YYYYY8/10--Y2Y2-1121.83.360LQFP144LPC222064---YYY8/10--Y2Y2-761.83.375LQFP144LPC229016---YYY8/10-2Y2Y2-761.83.360LQFP144LPC229216256YYYYY8/10-2Y2Y2-1121.83.360LQFP144LPC229416256YYYYY8/10-4Y2Y2-1121.83.360LQFP144

8.2ARM處理器的編程模式本節(jié)簡介ARM處理器編程模型的一些基本概念,包括處理器工作狀態(tài)與運(yùn)行模式、數(shù)據(jù)類型與存儲(chǔ)格式、寄存器組織、處理器異常等。通過對(duì)本節(jié)的學(xué)習(xí),旨在使讀者對(duì)ARM微處理器的基本工作原理和一些與程序設(shè)計(jì)相關(guān)的基本技術(shù)細(xì)節(jié)有個(gè)初步了解,為應(yīng)用編程打下必要基礎(chǔ)。

8.2.1ARM的工作狀態(tài)和運(yùn)行模式1.工作狀態(tài)從編程的角度看,ARM處理器的工作狀態(tài)一般有兩種:

①ARM狀態(tài)。此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令。

②Thumb狀態(tài)。此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。當(dāng)ARM處理器執(zhí)行32位ARM指令集中的指令時(shí),工作在ARM狀態(tài);執(zhí)行16位Thumb指令集中的指令時(shí),工作在Thumb狀態(tài)。通常在剛加電開始執(zhí)行代碼時(shí),ARM處理器處于ARM狀態(tài);然后,在程序的執(zhí)行過程中,只要滿足一定條件(狀態(tài)切換指令或異常處理),隨時(shí)可在兩種工作狀態(tài)之間切換,并且這種切換并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。

8.2.1ARM的工作狀態(tài)和運(yùn)行模式

2.運(yùn)行模式

ARM處理器支持7種運(yùn)行模式,分別為:①用戶模式(usr)——ARM處理器正常的程序執(zhí)行模式。②快速中斷模式(fiq)——

用于高速數(shù)據(jù)傳輸或通道處理。③外部中斷模式(irq)——

用于通用的中斷處理。④管理模式(svc)——

操作系統(tǒng)使用的保護(hù)模式。⑤數(shù)據(jù)訪問中止模式(abt)——

當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。⑥系統(tǒng)模式(sys)——

運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。⑦未定義指令模式(und)——當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。

8.2.1ARM的工作狀態(tài)和運(yùn)行模式

ARM處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,這時(shí),對(duì)某些被保護(hù)的系統(tǒng)資源是不能訪問的。

7種運(yùn)行模式中,除用戶模式以外,其余6種模式統(tǒng)稱為非用戶模式,也叫特權(quán)模式(PrivilegedModes);特權(quán)模式中,除去系統(tǒng)模式以外的5種又稱為異常模式(ExceptionModes),常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況。

8.2.2ARM的數(shù)據(jù)類型和存儲(chǔ)器格式

1.數(shù)據(jù)類型

ARM處理器支持三種長度的數(shù)據(jù)類型:字(Word):長度為32位的數(shù)據(jù)。半字(Half-Word):長度為16位的數(shù)據(jù)。字節(jié)(Byte):長度為8位的數(shù)據(jù)。在ARM體系結(jié)構(gòu)中,半字?jǐn)?shù)據(jù)必須對(duì)準(zhǔn)于偶數(shù)地址,字?jǐn)?shù)據(jù)必須對(duì)準(zhǔn)于4的整數(shù)倍地址,字節(jié)數(shù)據(jù)則可對(duì)準(zhǔn)于任一地址。

8.2.2ARM的數(shù)據(jù)類型和存儲(chǔ)器格式

2.存儲(chǔ)器格式

ARM處理器將存儲(chǔ)器看作是一個(gè)從0開始的線性遞增的字節(jié)集合:字節(jié)0到3保存第1個(gè)字?jǐn)?shù)據(jù),字節(jié)4到7保存第2個(gè)字?jǐn)?shù)據(jù),……依此類推,每4個(gè)字節(jié)保存一個(gè)字?jǐn)?shù)據(jù)。字的存儲(chǔ)格式有兩種:一種是小端(Little-endian)格式,即字的最低字節(jié)(字節(jié)0)保存在最低地址單元,最高字節(jié)(字節(jié)3)保存在最高地址單元。另一種是大端(Big-endian)格式,即字的最低字節(jié)保存在最高地址單元,最高字節(jié)保存在最低地址單元。從硬件連接上看,前者將存儲(chǔ)器系統(tǒng)的字節(jié)0、字節(jié)1、字節(jié)2和字節(jié)3分別連接到32位數(shù)據(jù)線的D7~D0、D15~D8、D23~D16和D31~D24;后者則相反,將存儲(chǔ)器系統(tǒng)的字節(jié)0、字節(jié)1、字節(jié)2和字節(jié)3分別連接到數(shù)據(jù)線的D31~D24、D23~D16、D15~D8和D7~D0。

8.2.2ARM的數(shù)據(jù)類型和存儲(chǔ)器格式一個(gè)具體的基于ARM核的芯片,可能對(duì)這兩種存儲(chǔ)格式都支持,也可能只支持其中一種。如果芯片只支持其中一種(如大端格式),而實(shí)際連接的存儲(chǔ)器系統(tǒng)卻配置為相反的格式(如小端格式),則只有以字為單位的存儲(chǔ)器訪問能正確實(shí)現(xiàn),其他長度的存儲(chǔ)器訪問都將出現(xiàn)不可預(yù)知的結(jié)果。

ARM處理器核中共有37個(gè)32位寄存器,其中31個(gè)為通用寄存器,6個(gè)為程序狀態(tài)寄存器。這些寄存器被安排成部分重疊的組,工作狀態(tài)和運(yùn)行模式不同,使用的寄存器組便不同。圖8.1所示的是ARM處理器核的內(nèi)部寄存器及其組織結(jié)構(gòu)。

8.2.3內(nèi)部寄存器組織

圖8.1ARM狀態(tài)的寄存器結(jié)構(gòu)

8.2.3內(nèi)部寄存器組織

1.ARM狀態(tài)寄存器組在ARM狀態(tài)下,通用寄存器r0~r14,程序計(jì)數(shù)器PC(r15),以及一個(gè)或兩個(gè)狀態(tài)寄存器CPSR是任何時(shí)候均可訪問的。不過要注意,在某種特權(quán)模式中,只有與之相關(guān)的分組寄存器才可以被訪問。圖8.1實(shí)際上反映的是各種模式下所能訪問的寄存器情況。(1)通用寄存器r0~r14

通用寄存器r0~r14實(shí)際上又分為兩類:未分組寄存器r0~r7和分組寄存器r8~r14。每個(gè)未分組寄存器,在任何運(yùn)行模式下都指向同一32位物理寄存器,可用于任何使用通用寄存器的指令。正因?yàn)榇?,在中斷或異常處理進(jìn)行模式切換時(shí),容易造成對(duì)寄存器中數(shù)據(jù)的破壞,這點(diǎn)在程序設(shè)計(jì)時(shí)要特別小心。

8.2.3內(nèi)部寄存器組織對(duì)分組寄存器則不同,處理器每次訪問它們所對(duì)應(yīng)的物理寄存器,與當(dāng)前的運(yùn)行模式直接相關(guān)。其中r8~r12,每個(gè)對(duì)應(yīng)兩個(gè)物理寄存器,一個(gè)用于FIQ模式,叫r8_fiq~r12_fiq,另一個(gè)用于其他6種模式,叫r8~r12;r13和r14分別對(duì)應(yīng)6個(gè)物理寄存器,一個(gè)用于用戶和系統(tǒng)兩種模式,叫r13和r14,另外5個(gè)分別用于其他5種運(yùn)行模式之一,叫r13_mod和r14_mod(其中mod為fiq、irq、svc、abt和und之一)。詳如圖8.1中所示。

r13在ARM指令中通常用作堆棧指針SP。在用戶應(yīng)用程序的初始化部分,一般都要將r13的物理寄存器指向其運(yùn)行模式的??臻g。

8.2.3內(nèi)部寄存器組織

r14為子程序鏈接寄存器(SubroutineLinkRegister),簡稱鏈接寄存器(LR)。當(dāng)執(zhí)行子程序調(diào)用指令(BL)時(shí),r14用于存放子程序返回地址,即將程序計(jì)數(shù)器PC(r15)的當(dāng)前值拷貝給r14。子程序返回時(shí)再通過將r14的內(nèi)容送回給PC來實(shí)現(xiàn)。實(shí)現(xiàn)這種子程序調(diào)用通常有兩種典型方法:①執(zhí)行下列兩條指令之一:

MOVPC,LRBXLR②在子程序入口處使用以下指令將r14存入堆棧:

STMFDSP!,{<register>,LR}

對(duì)應(yīng)地,可用以下指令實(shí)現(xiàn)子程序返回:

LDMFDSP!,{<register>,PC}

8.2.3內(nèi)部寄存器組織與此類似,當(dāng)出現(xiàn)異常時(shí),相應(yīng)異常模式的r14也可被設(shè)置為異常返回地址,且異常返回用與子程序返回相似的方法實(shí)現(xiàn),只是使用的指令稍有不同。除了子程序調(diào)用和異常處理的情形外,其他時(shí)候均可將r14當(dāng)成一個(gè)通用寄存器使用。

8.2.3內(nèi)部寄存器組織(2)程序計(jì)數(shù)器r15

寄存器r15通常用作程序計(jì)數(shù)器PC。在ARM狀態(tài)下,r15的位[1:0]為00,位[31:2]保存PC值;在Thumb狀態(tài)下,r15的位[0]為0,位[31:1]保存PC值。當(dāng)讀程序計(jì)數(shù)器r15時(shí),由于ARM狀態(tài)下的程序計(jì)數(shù)器PC總是指向當(dāng)前指令的下兩條指令的地址,所以讀出的值總是讀指令的地址加上8字節(jié)。而因ARM指令始終是字對(duì)準(zhǔn)的,故讀出結(jié)果值的位[1:0]總為00(對(duì)Thumb指令,總是半字對(duì)準(zhǔn)的,故位[0]總為0)。讀程序計(jì)數(shù)器主要是為了對(duì)附近的指令和數(shù)據(jù)快速地進(jìn)行與位置無關(guān)的尋址。

8.2.3內(nèi)部寄存器組織當(dāng)寫程序計(jì)數(shù)器r15時(shí),指令中的寫入值取決于ARM結(jié)構(gòu)的版本:對(duì)v3及以下版本,位[1:0]值無所謂;對(duì)v4及以上版本(ARM7TDMI(-S)基于v4版),位[1:0]值必須為00。由于ARM指令始終是字對(duì)準(zhǔn)的,指令的實(shí)際目標(biāo)地址的位[1:0]總應(yīng)為00,可見對(duì)v3及以下版本,指令的實(shí)際目標(biāo)地址將由寫入的r15值和0xFFFFFFFCH相“與”得到,而對(duì)v4及以上版本,指令實(shí)際目標(biāo)地址的位[1:0]就是寫入的r15值。

8.2.3內(nèi)部寄存器組織(3)程序狀態(tài)寄存器PSRARM體系結(jié)構(gòu)包含一個(gè)當(dāng)前程序狀態(tài)寄存器CPSR和5個(gè)保存程序狀態(tài)寄存器SPSR,供異常處理程序使用。CPSR為六種處理器模式所共享,SPSR除用戶和系統(tǒng)模式外其他5種模式(統(tǒng)稱為模式)各對(duì)應(yīng)一個(gè)。程序狀態(tài)寄存器的格式如圖8.2所示。其中4位存放條件代碼標(biāo)志,3位控制中斷的使能和禁止,5位設(shè)置處理器操作模式,其余20位未用,留待將來使用。

8.2.3內(nèi)部寄存器組織圖8.2程序狀態(tài)寄存器格式

8.2.3內(nèi)部寄存器組織

2.Thumb狀態(tài)寄存器組

Thumb狀態(tài)寄存器組是ARM狀態(tài)寄存器組的子集,兩者的映射關(guān)系如圖8.3所示。其中Thumb狀態(tài)下的r0~r7、CPSR、SPSR分別與ARM狀態(tài)下的同名寄存器相同;Thumb狀態(tài)下的SP、LR、PC分別映射到ARM狀態(tài)的r13、r14、r15(PC)。這些Thumb狀態(tài)寄存器都是程序員可直接訪問的;各寄存器與可訪問的處理器模式間的對(duì)應(yīng)關(guān)系,和ARM狀態(tài)下的同名或映射寄存器相同。

8.2.3內(nèi)部寄存器組織圖8.3Thumb寄存器在ARM狀態(tài)寄存器上的映射

8.2.3內(nèi)部寄存器組織在Thumb狀態(tài)下,r0~r7為低寄存器,r8~r15為高寄存器,高寄存器不是標(biāo)準(zhǔn)寄存器集的一部分,所以程序員對(duì)它們的訪問受到限制,但可以將它們用于快速暫存,如:用MOV指令的特殊變量可以在低寄存器r0~r7和高寄存器r8~r15之間交換數(shù)據(jù);用CMP指令可以比較高寄存器和低寄存器的值;用ADD指令可以將高寄存器的值與低寄存器的值相加。

8.2.4異常中斷及響應(yīng)機(jī)理

1.異常中斷及分類只要正常的程序流被暫時(shí)中止,例如響應(yīng)一個(gè)來自外設(shè)的中斷,處理器就進(jìn)入異常中斷模式。在處理異常之前,ARM7TDMI-S內(nèi)核保存當(dāng)前的處理器狀態(tài),這樣當(dāng)異常處理程序結(jié)束時(shí)可以恢復(fù)執(zhí)行原來的程序。

ARM體系結(jié)構(gòu)支持的異常有6類。ARM采用向量方式進(jìn)入異常處理程序,即系統(tǒng)中建有一個(gè)異常向量表,表中每類異常對(duì)應(yīng)一個(gè)特定的異常向量(即異常處理程序入口地址),當(dāng)異常出現(xiàn)時(shí),ARM強(qiáng)制將程序計(jì)數(shù)器(PC)值置成該異常所對(duì)應(yīng)的向量,從而轉(zhuǎn)去執(zhí)行異常處理程序。當(dāng)同時(shí)發(fā)生兩個(gè)或更多異常時(shí),系統(tǒng)將按照固定的優(yōu)先級(jí)順序來處理異常。表8.2給出的是6類異常及其對(duì)應(yīng)的進(jìn)入模式、向量、優(yōu)先級(jí)等信息。

8.2.4異常中斷及響應(yīng)機(jī)理異常類型說明進(jìn)入時(shí)的模式向量(地址)優(yōu)先級(jí)復(fù)位當(dāng)系統(tǒng)加電、復(fù)位引腳有效或軟復(fù)位時(shí),產(chǎn)生這種異常,ARM立即停止執(zhí)行當(dāng)前指令,轉(zhuǎn)而執(zhí)行復(fù)位程序。管理模式0x000000001(最高)未定義指令當(dāng)ARM處理器或協(xié)處理器遇到未定義的指令時(shí),產(chǎn)生這種異常??捎迷摦惓C(jī)制通過仿真未定義的協(xié)處理器指令來擴(kuò)展ARM指令集。未定義指令模式0x000000046(最低)軟件中斷該異常由執(zhí)行用戶定義的軟中斷指令(SWI)產(chǎn)生。可用該異常機(jī)制在用戶模式下實(shí)現(xiàn)系統(tǒng)功能調(diào)用。管理模式0x00000008指令預(yù)取中止當(dāng)處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,而該預(yù)取指令又被執(zhí)行時(shí),產(chǎn)生該異常。數(shù)據(jù)訪問中止模式0x0000000C5數(shù)據(jù)中止當(dāng)處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生該異常。數(shù)據(jù)訪問中止模式0x000000102保留--0x00000014-IRQ(外部中斷請(qǐng)求)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR的I控制位為0時(shí),產(chǎn)生該異常。系統(tǒng)中各外設(shè)均通過它請(qǐng)求處理器服務(wù)。IRQ模式0x000000184FIQ(快速中斷請(qǐng)求)當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR的F控制位為0時(shí),產(chǎn)生該異常。FIQ模式0x0000001C3表8.2ARM異常一覽表

8.2.4異常中斷及響應(yīng)機(jī)理

2.ARM處理器對(duì)異常的響應(yīng)機(jī)理

ARM處理器對(duì)異常的響應(yīng)包括進(jìn)入和退出異常處理程序兩方面。⑴異常進(jìn)入(入口)當(dāng)異常出現(xiàn)時(shí),ARM處理器進(jìn)入異常處理的過程如下:①在相應(yīng)的鏈接寄存器LR中保存下一條指令的地址,以便程序能從異常處理程序正確返回被中斷程序。下一條指令的地址,對(duì)ARM狀態(tài)和Thumb狀態(tài)有所不同:在ARM狀態(tài)下,是當(dāng)前PC值加4或8(具體取決于異常類型);在Thumb狀態(tài)下,是當(dāng)前PC值加偏移值后再加4或8(具體取決于異常類型)。②將CPSR狀態(tài)復(fù)制到相應(yīng)的SPSR中。

8.2.4異常中斷及響應(yīng)機(jī)理③根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。④強(qiáng)制將相應(yīng)的異常向量作為下一條指令地址裝入PC。⑤置位中斷禁止標(biāo)志,以防止不受控制的異常嵌套。由于異常總是在ARM狀態(tài)下進(jìn)行處理,所以若處理器處于Thumb狀態(tài)時(shí)發(fā)生了異常,在將異常向量裝入PC時(shí)會(huì)自動(dòng)切換到ARM狀態(tài)。

8.2.4異常中斷及響應(yīng)機(jī)理⑵異常退出(出口)當(dāng)異常處理結(jié)束時(shí),退出異常、返回被中斷程序的過程如下:①將LR中的值移入PC。②將SPSR的值復(fù)制回CPSR。注意,該動(dòng)作會(huì)將T、I和F位自動(dòng)恢復(fù)為異常發(fā)生前的值。③清除中斷禁止標(biāo)志,以開放異常中斷。可以認(rèn)為,應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要退出和返回。

8.3ARM系列單片機(jī)的硬件結(jié)構(gòu)各種ARM系列單片機(jī)的基本特性和硬件結(jié)構(gòu)大同小異。本節(jié)以Philips公司的LPC2212/2214芯片和Samsung公司的S3C44BOX芯片為例,簡單介紹ARM系列單片機(jī)的硬件結(jié)構(gòu)。

8.3.1LPC2212/2214單片機(jī)簡介

LPC2212/2214是兩款基于ARM7TDMI-STM處理器核、支持實(shí)時(shí)仿真和跟蹤的32位微控制器。其128位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32位/16位代碼均能在最大時(shí)鐘速率下運(yùn)行。其144引腳封裝、極低的功耗、豐富的內(nèi)部邏輯部件及其強(qiáng)大的功能,使它特別適合于汽車控制、網(wǎng)關(guān)網(wǎng)橋、軟件Modem、工控設(shè)備、醫(yī)療系統(tǒng)、音頻視頻系統(tǒng)、協(xié)議轉(zhuǎn)換和POS機(jī)等小型應(yīng)用場合。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16位Thumb模式將代碼規(guī)模降低30%以上,而性能的損失卻很小。

8.3.1LPC2212/2214單片機(jī)簡介

1.基本結(jié)構(gòu)及性能

LPC2212/2214內(nèi)部除ARM7TDMI-STM處理器核外,還集成有16kB片內(nèi)SRAM,128Kb/256kB片內(nèi)Flash程序存儲(chǔ)器,4個(gè)通用并行I/O口,2個(gè)16C550工業(yè)標(biāo)準(zhǔn)UART串口,1個(gè)高速I2C串口(400kbit/s),2個(gè)SPI串口,2個(gè)32位定時(shí)器,以及PWM單元、實(shí)時(shí)時(shí)鐘、看門狗、外部中斷控制邏輯、向量中斷控制器和A/D轉(zhuǎn)換器等功能部件,具體如圖8.4的內(nèi)部結(jié)構(gòu)框圖所示。1.

8.3.1LPC2212/2214單片機(jī)簡介圖8.4LPC2212/2214內(nèi)部結(jié)構(gòu)框圖

8.3.1LPC2212/2214單片機(jī)簡介

LPC2212/2214的主要性能如下:⑴128位寬度的接口/加速器和片內(nèi)鎖相環(huán)(PLL)的引入,可實(shí)現(xiàn)高達(dá)60MHz的CPU工作頻率。⑵通過片內(nèi)boot裝載程序可實(shí)現(xiàn)在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP)。單個(gè)Flash扇區(qū)或整片的擦除時(shí)間為400ms,512字節(jié)編程時(shí)間為1ms。⑶EmbeddedICE-RT和嵌入式跟蹤接口通過片內(nèi)軟件RealMonitor,可提供對(duì)任務(wù)進(jìn)行實(shí)時(shí)調(diào)試和對(duì)執(zhí)行代碼進(jìn)行高速實(shí)時(shí)跟蹤的支持。

8.3.1LPC2212/2214單片機(jī)簡介⑷每個(gè)32位定時(shí)器帶有4路捕獲和4路比較通道,PWM單元有6路輸出。⑸內(nèi)部向量中斷控制器可通過編程設(shè)置中斷優(yōu)先級(jí)和向量地址。⑹具有9個(gè)邊沿或電平觸發(fā)的外部中斷輸入引腳。⑺片內(nèi)集成振蕩器可使用外部晶體的頻率范圍為1~30MHz。⑻通過外部存儲(chǔ)器接口可將存儲(chǔ)器配置成4組,每組的容量高達(dá)16Mb,數(shù)據(jù)寬度為8/16/32位。

8.3.1LPC2212/2214單片機(jī)簡介⑼具有空閑和掉電兩種低功耗模式??赏ㄟ^單獨(dú)允許/禁止外圍功能和外圍時(shí)鐘分頻進(jìn)一步實(shí)現(xiàn)功耗優(yōu)化??赏ㄟ^外部中斷將處理器從掉電模式中喚醒。⑽雙電源供電,其中:

CPU操作電壓范圍為1.65~1.95V(1.8V±0.15V);

I/O操作電壓范圍為3.0~3.6V(3.3V±10%),最大可承受5V電壓。⑾具有上電復(fù)位(POR)和掉電檢測(BOD)電路。

LPC2212/2214的外部引腳描述如表8.3所示。

8.3.1LPC2212/2214單片機(jī)簡介表8.3LPC2212/2214的引腳描述

8.3.1LPC2212/2214單片機(jī)簡介表8.3LPC2212/2214的引腳描述

8.3.1LPC2212/2214單片機(jī)簡介表8.3LPC2212/2214的引腳描述

8.3.1LPC2212/2214單片機(jī)簡介

2.片內(nèi)存儲(chǔ)器系統(tǒng)

LPC2212/2214內(nèi)部集成了由128kB/256kBFLASH和16KbSRAM組成的存儲(chǔ)器系統(tǒng),它們均可用作代碼和數(shù)據(jù)的存儲(chǔ)。對(duì)FLASH存儲(chǔ)器,既可通過串口進(jìn)行在系統(tǒng)編程,也可在應(yīng)用程序運(yùn)行時(shí)進(jìn)行在應(yīng)用編程。這樣為數(shù)據(jù)存儲(chǔ)和現(xiàn)場固件的升級(jí)都帶來了極大的靈活性。當(dāng)使用片內(nèi)bootloader時(shí),有120/248kBFlash存儲(chǔ)器可作用戶代碼使用。Flash存儲(chǔ)器的擦除/編寫周期至少為100,000次,數(shù)據(jù)至少可保存20年。SRAM支持按8位、16位或32位的方式進(jìn)行訪問。

8.3.1LPC2212/2214單片機(jī)簡介片內(nèi)的引導(dǎo)狀態(tài)程序(1.60版)提供對(duì)片內(nèi)Flash的代碼讀保護(hù)(CRP)功能。當(dāng)CRP使能時(shí),禁止JTAG調(diào)試端口和ISP命令對(duì)片內(nèi)存儲(chǔ)器的訪問,但I(xiàn)SPFlash擦除命令并不受CRP狀態(tài)的控制,任何時(shí)候均可執(zhí)行。通過擦除整個(gè)片內(nèi)用戶Flash區(qū)可取消CRP,從而恢復(fù)JTAG和/或ISP對(duì)芯片的完全訪問。

LPC2212/2214的存儲(chǔ)器映射包含幾個(gè)不同的區(qū)域,如圖8.5所示。此外,CPU的中斷向量可以重新映射,這樣允許它們位于片內(nèi)Flash(默認(rèn))或者SRAM中。

8.3.1LPC2212/2214單片機(jī)簡介圖8.5LPC2212/2214存儲(chǔ)器映射

8.3.1LPC2212/2214單片機(jī)簡介

3.向量中斷控制器

LPC2194通過其向量中斷控制器(VIC)接收所有的中斷請(qǐng)求輸入,并將它們編程分配為3類:快速中斷請(qǐng)求FIQ、向量IRQ和非向量IRQ??删幊谭峙錂C(jī)制意味著不同外設(shè)的中斷優(yōu)先級(jí)可以動(dòng)態(tài)分配和調(diào)整。

FIQ具有最高優(yōu)先級(jí)。當(dāng)分配為FIQ的請(qǐng)求源只有一個(gè)時(shí),可實(shí)現(xiàn)最短的請(qǐng)求等待時(shí)間,因?yàn)镕IQ服務(wù)程序可以直接啟動(dòng)相應(yīng)外設(shè)的處理;但當(dāng)分配給FIQ的請(qǐng)求源多于1個(gè)時(shí),VIC將多個(gè)中斷請(qǐng)求“相或”后向ARM處理器產(chǎn)生FIQ信號(hào),F(xiàn)IQ服務(wù)程序先要從VIC中讀出一個(gè)中斷狀態(tài)字以識(shí)別該響應(yīng)的是哪一個(gè)FIQ中斷源,然后才能啟動(dòng)相應(yīng)外設(shè)的處理。

8.3.1LPC2212/2214單片機(jī)簡介向量IRQ具有中等優(yōu)先級(jí)。該級(jí)別可分配16個(gè)中斷請(qǐng)求源,其中任意一個(gè)都可分配到16個(gè)向量IRQslot中的任意一個(gè),其中又以slot0優(yōu)先級(jí)最高,slot15優(yōu)先級(jí)最低。非向量IRQ的優(yōu)先級(jí)最低。若分配給該級(jí)別的中斷源多于1個(gè),默認(rèn)中斷服務(wù)程序要從VIC中讀出IRQ狀態(tài)寄存器來識(shí)別該為哪個(gè)中斷源服務(wù)。

VIC將所有向量和非向量IRQ組合后向ARM處理器產(chǎn)生IRQ信號(hào)。IRQ服務(wù)程序可通過讀取VIC的一個(gè)寄存器立即啟動(dòng)并跳轉(zhuǎn)到相應(yīng)地址。如果有任意一個(gè)向量IRQ發(fā)出請(qǐng)求,VIC則提供最高優(yōu)先級(jí)請(qǐng)求IRQ服務(wù)程序的地址,否則提供默認(rèn)程序的地址,該默認(rèn)程序由所有非向量IRQ共用。默認(rèn)程序可讀取另一個(gè)VIC寄存器以確定哪個(gè)IRQ被激活。

8.3.1LPC2212/2214單片機(jī)簡介表8.4所列為每個(gè)外圍功能的中斷源。每個(gè)外設(shè)都有一條中斷線連接到向量中斷控制器,但可能有幾個(gè)內(nèi)部中斷標(biāo)志。單個(gè)中斷標(biāo)志也可能代表不同的中斷源。表8.4每個(gè)外圍功能的中斷源

8.3.1LPC2212/2214單片機(jī)簡介

4.引腳連接模塊

LPC2212/2214通過其片內(nèi)引腳連接模塊,允許將其引腳配置為不同的功能。配置寄存器控制連接引腳和片內(nèi)外設(shè)的多路開關(guān)。應(yīng)當(dāng)在激活外設(shè)以及允許任何相關(guān)的中斷之前,將外設(shè)連接到相應(yīng)的引腳。任何一個(gè)被允許的外設(shè),如果其功能沒有映射到相關(guān)的引腳,對(duì)它的激活將被認(rèn)為是未定義的。

8.3.1LPC2212/2214單片機(jī)簡介引腳連接模塊包含3個(gè)可編程引腳功能選擇寄存器:PINSEL0、PINSEL1和PINSEL2。它們的地址分別為0xE002C000、0xE002C004和0xE002C014。當(dāng)需要配置引腳功能時(shí),只需向某個(gè)引腳功能選擇寄存器寫入相應(yīng)值即可。芯片復(fù)位后,2個(gè)通用并行I/O口P0和P1的所有引腳都被配置為輸入。若允許調(diào)試(Debug),則JTAG引腳被配置為JTAG功能;若允許跟蹤(Trace),則Trace引腳被配置為Trace功能。與I2C相關(guān)的引腳均被配置為開路。

8.3.1LPC2212/2214單片機(jī)簡介

5.通用并行I/O接口

LPC2212/2214中有4個(gè)32位通用并行I/O口(GPIO口):P0、P1、P2和P3。P0口使用了30根端口線(P0.0~P0.25,P0.27~P0.30),P1口使用了18根端口線(P1.1,P1.2和P1.16~P1.31),P2和P3各使用了32根端口線。每位的方向均可單獨(dú)控制,各端口的功能取決于引腳連接模塊的引腳功能選擇。

GPIO口沒有連接到特定外設(shè)功能的引腳由GPIO寄存器進(jìn)行控制。引腳可以動(dòng)態(tài)配置為輸入或輸出。寄存器可以同時(shí)對(duì)任意輸出口進(jìn)行置位或清零。輸出寄存器的值以及引腳的當(dāng)前狀態(tài)都可以讀出。

8.3.1LPC2212/2214單片機(jī)簡介

GPIO的主要特性如下:⑴GPIO寄存器被轉(zhuǎn)移到ARM局部總線,以實(shí)現(xiàn)高速I/O時(shí)序;⑵屏蔽寄存器允許將端口位集作為一組,而其他位不變;⑶所有GPIO寄存器均為字節(jié)尋址;⑷可用一條指令寫入整個(gè)端口值;⑸具有單個(gè)位的方向控制功能;⑹具有對(duì)輸出端口置位或清零的單獨(dú)控制功能;⑺具有用一條指令將一個(gè)端口的任何位置1或清0的功能;⑻所有I/O在復(fù)位后的默認(rèn)狀態(tài)都為輸入。

8.3.1LPC2212/2214單片機(jī)簡介

6.串行I/O接口

【UART】LPC2212/2214包含2個(gè)UART。一個(gè)UART提供一個(gè)完全的調(diào)制解調(diào)器控制握手接口;另一個(gè)UART只有發(fā)送和接收數(shù)據(jù)線。

UART的特性如下:⑴16字節(jié)接收和發(fā)送FIFO;⑵寄存器位置遵循550工業(yè)標(biāo)準(zhǔn);⑶接收器FIFO觸發(fā)點(diǎn)為1、4、8和14個(gè)字節(jié);⑷內(nèi)置波特率發(fā)生器;⑸UART1包含標(biāo)準(zhǔn)調(diào)制解調(diào)器接口信號(hào)。

8.3.1LPC2212/2214單片機(jī)簡介

【I2C接口】I2C是一個(gè)雙向總線,它使用串行時(shí)鐘線(SCL)和串行數(shù)據(jù)線(SDA)兩條線實(shí)現(xiàn)互連芯片的控制。每個(gè)器件都通過一個(gè)唯一的地址來識(shí)別,這些器件可以是只接收器件(例如LCD驅(qū)動(dòng)器),也可以是既發(fā)送又接收信息的收發(fā)器(例如存儲(chǔ)器)。發(fā)送器和/或接收器可以操作為主或從模式,這取決于芯片是啟動(dòng)數(shù)據(jù)的發(fā)送還是只被尋址。I2C是一個(gè)多主機(jī)總線,它可以由一個(gè)以上的總線主控器進(jìn)行控制。

LPC2212/2214所包含的I2C功能支持400kbit/s(快速I2C)。

8.3.1LPC2212/2214單片機(jī)簡介

I2C的特性如下:⑴標(biāo)準(zhǔn)的I2C總線接口;⑵可配置為主機(jī)、從機(jī)或主/從機(jī);⑶可編程時(shí)鐘可實(shí)現(xiàn)通用速率控制;⑷主機(jī)從機(jī)之間雙向數(shù)據(jù)傳輸;⑸多主機(jī)總線(無中央主機(jī));⑹同時(shí)發(fā)送的主機(jī)之間進(jìn)行仲裁,避免了總線數(shù)據(jù)的沖突;⑺串行時(shí)鐘同步使器件在一條串行總線上實(shí)現(xiàn)不同位速率的通信;⑻串行時(shí)鐘同步可作為握手機(jī)制使串行傳輸掛起和恢復(fù);⑼I2C總線可用于測試和診斷。

8.3.1LPC2212/2214單片機(jī)簡介

【SPI接口】LPC2212/2214包含2個(gè)SPI接口。SPI是一個(gè)全雙工的串行接口,它設(shè)計(jì)成可以處理在一個(gè)給定總線上多個(gè)互連的主機(jī)和從機(jī)。在一定數(shù)據(jù)傳輸過程中,接口上只能有一個(gè)主機(jī)和一個(gè)從機(jī)通信。在一次數(shù)據(jù)傳輸中,主機(jī)總是向從機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù),而從機(jī)也總是向主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)。

SPI的特性如下:⑴遵循串行外設(shè)接口(SPI)規(guī)范;⑵支持同步全雙工串行通信;⑶組合的SPI主機(jī)和從機(jī);⑷最大數(shù)據(jù)位速率為輸入時(shí)鐘速率的1/8。

8.3.1LPC2212/2214單片機(jī)簡介

7.定時(shí)器/計(jì)數(shù)器

【通用定時(shí)器】

定時(shí)器對(duì)外設(shè)時(shí)鐘周期(PCLK)進(jìn)行計(jì)數(shù),可選擇產(chǎn)生中斷或基于4個(gè)匹配寄存器,在到達(dá)指定的定時(shí)值時(shí)執(zhí)行其它動(dòng)作。它還包括4個(gè)捕獲輸入,用于在輸入信號(hào)發(fā)生跳變時(shí)捕獲定時(shí)器值,并可選擇產(chǎn)生中斷。多個(gè)引腳通過“或”、“與”,可以實(shí)現(xiàn)捕獲、匹配或‘廣播’功能。通用定時(shí)器的特性如下:⑴帶可編程32位預(yù)分頻器的32位定時(shí)器/計(jì)數(shù)器;⑵每個(gè)定時(shí)器的4個(gè)32位捕獲通道可在輸入信號(hào)跳變時(shí)捕獲定時(shí)器的瞬時(shí)值。捕獲事件可選擇產(chǎn)生中斷;

8.3.1LPC2212/2214單片機(jī)簡介

⑶4個(gè)32位匹配寄存器:-連續(xù)操作,可選擇在匹配時(shí)產(chǎn)生中斷-匹配時(shí)停止定時(shí)器,可選擇產(chǎn)生中斷-匹配時(shí)復(fù)位定時(shí)器,可選擇產(chǎn)生中斷⑷每個(gè)定時(shí)器有4個(gè)對(duì)應(yīng)于匹配寄存器的外部輸出,具有下列特性:-匹配時(shí)置低電平-匹配時(shí)置高電平-匹配時(shí)翻轉(zhuǎn)-匹配時(shí)不變

8.3.1LPC2212/2214單片機(jī)簡介

【看門狗定時(shí)器】

看門狗定時(shí)器的用途是使微控制器在進(jìn)入錯(cuò)誤狀態(tài)經(jīng)過一段時(shí)間后復(fù)位。當(dāng)看門狗使能時(shí),如果沒有在預(yù)先確定的時(shí)間內(nèi)“喂”(重裝)看門狗,它將會(huì)產(chǎn)生一次系統(tǒng)復(fù)位。其特性如下:⑴如果沒有周期性重裝,則產(chǎn)生片內(nèi)復(fù)位;⑵調(diào)試模式;⑶由軟件使能,但要求禁止硬件復(fù)位或看門狗復(fù)位/中斷;⑷錯(cuò)誤/不完整的喂狗時(shí)序會(huì)導(dǎo)致復(fù)位/中斷(如果使能);⑸指示看門狗復(fù)位的標(biāo)志;⑹帶內(nèi)部預(yù)分頻器的可編程32位定時(shí)器;⑺可選擇時(shí)間周期:(tpclk×256×4)~(tpclk×232×4)??蛇x值為tpclk×4的整數(shù)倍。

8.3.1LPC2212/2214單片機(jī)簡介

【實(shí)時(shí)時(shí)鐘】

當(dāng)選擇正?;蚩臻e模式時(shí),實(shí)時(shí)時(shí)鐘(RTC)提供一套用于測量時(shí)間的計(jì)數(shù)器。RTC消耗的功率非常低,這使其適合于由電池供電的、CPU不連續(xù)工作(空閑模式)的系統(tǒng)。其特性如下:⑴通過對(duì)時(shí)間段進(jìn)行測量,可實(shí)現(xiàn)一個(gè)包括秒、分、小時(shí)、日、月、年和星期等的日歷或時(shí)鐘;⑵超低功耗設(shè)計(jì),支持電池供電系統(tǒng);⑶可編程基準(zhǔn)時(shí)鐘分頻器允許調(diào)節(jié)RTC以適應(yīng)不同的晶振頻率。

8.3.1LPC2212/2214單片機(jī)簡介

【脈寬調(diào)制器(PWM)】PWM基于標(biāo)準(zhǔn)的定時(shí)器模塊并具有其所有特性。不過LPC2212/2214只將其PWM功能輸出到引腳。定時(shí)器對(duì)外設(shè)時(shí)鐘(pclk)進(jìn)行計(jì)數(shù),可選擇產(chǎn)生中斷或者根據(jù)7個(gè)匹配寄存器在到達(dá)指定的定時(shí)值時(shí)執(zhí)行其它動(dòng)作。它還包括4個(gè)捕獲輸入,用于在輸入信號(hào)發(fā)生跳變時(shí)捕獲定時(shí)器值,并可選擇在事件發(fā)生時(shí)產(chǎn)生中斷。PWM功能也建立在匹配寄存器事件基礎(chǔ)之上。獨(dú)立控制上升和下降沿位置的能力使PWM可以應(yīng)用于更多的領(lǐng)域。例如,多相位電機(jī)控制通常需要3個(gè)非重疊的PWM輸出,而這3個(gè)輸出的脈寬和位置需要獨(dú)立進(jìn)行控制。

8.3.1LPC2212/2214單片機(jī)簡介兩個(gè)匹配寄存器可用于提供單邊沿控制的PWM輸出。匹配寄存器MR0通過匹配時(shí)重新設(shè)置計(jì)數(shù)值來控制PWM周期率。其它的匹配寄存器控制PWM邊沿的位置。每個(gè)額外的單邊沿控制PWM輸出只需要一個(gè)匹配寄存器,因?yàn)樗蠵WM輸出的重復(fù)速率是相同的。多個(gè)單邊沿控制的PWM輸出在每個(gè)PWM周期的開始并且當(dāng)MR0發(fā)生匹配時(shí),都有一個(gè)上沿。

8.3.1LPC2212/2214單片機(jī)簡介

3個(gè)匹配寄存器可用于提供一個(gè)雙邊沿控制PWM輸出。也就是說,MR0匹配寄存器控制PWM周期速率,其它匹配寄存器控制兩個(gè)PWM邊沿位置。每個(gè)額外的雙邊沿控制PWM輸出只需要兩個(gè)匹配寄存器,因?yàn)樗蠵WM輸出的重復(fù)速率是相同的。使用雙邊沿控制PWM輸出時(shí),指定的匹配寄存器控制輸出的上升和下降沿。這樣就產(chǎn)生了正脈沖(當(dāng)上升沿先于下降沿時(shí))和負(fù)脈沖(當(dāng)下降沿先于上升沿時(shí))。

8.3.1LPC2212/2214單片機(jī)簡介

PWM的特性如下:⑴7個(gè)匹配寄存器,可實(shí)現(xiàn)6個(gè)單邊沿控制或3個(gè)雙邊沿控制PWM輸出,或這兩種類型的混合輸出。;⑵匹配寄存器允許執(zhí)行以下操作:-連續(xù)操作,可選擇在匹配時(shí)產(chǎn)生中斷-匹配時(shí)停止定時(shí)器,可選擇產(chǎn)生中斷-匹配時(shí)復(fù)位定時(shí)器,可選擇產(chǎn)生中斷⑶支持單邊沿控制和/或雙邊沿控制的PWM輸出。單邊沿控制PWM輸出在每個(gè)周期開始時(shí)總是為高電平,除非輸出保持恒定低電平。雙邊沿控制PWM輸出可在一個(gè)周期內(nèi)的任何位置產(chǎn)生邊沿。這樣可同時(shí)產(chǎn)生正和負(fù)脈沖;

8.3.1LPC2212/2214單片機(jī)簡介⑷脈沖周期和寬度可以是任何的定時(shí)器計(jì)數(shù)值。這樣可在分辨率和重復(fù)速率上獲得平衡。所有PWM輸出都以相同的重復(fù)率發(fā)生;⑸雙邊沿控制的PWM輸出可編程為正脈沖或負(fù)脈沖;⑹匹配寄存器更新與脈沖輸出同步,防止產(chǎn)生錯(cuò)誤的脈沖。軟件必須在新的匹配值生效之前將它們釋放。⑺如果不允許PWM模式,可作為一個(gè)標(biāo)準(zhǔn)定時(shí)器使用;⑻帶可編程32位預(yù)分頻器的32位定時(shí)器/計(jì)數(shù)器。

8.3.1LPC2212/2214單片機(jī)簡介

8.A/D轉(zhuǎn)換器

LPC2212/2214分別包含一個(gè)具有8路輸入的10位逐次逼近式A/D轉(zhuǎn)換器。

A/D轉(zhuǎn)換器特性如下:⑴模擬輸入電壓范圍:0~3V;⑵轉(zhuǎn)換頻率為4.5MHz;⑶每秒可執(zhí)行400,000次10位采樣;⑷可工作于單路或多路輸入的突發(fā)轉(zhuǎn)換模式;⑸根據(jù)輸入腳的跳變或定時(shí)器匹配信號(hào)執(zhí)行轉(zhuǎn)換。

8.3.1LPC2212/2214單片機(jī)簡介

9.系統(tǒng)控制模塊

【晶振】

振蕩器支持晶振范圍為1MHz~30MHz。晶振輸出頻率稱為FOSC,而ARM處理器時(shí)鐘頻率稱為cclk。除非連接并運(yùn)行PLL,否則在該文檔中FOSC和cclk的值是相同的。

8.3.1LPC2212/2214單片機(jī)簡介

【PLL】PLL可以接受范圍為10MHz~25MHz的輸入時(shí)鐘頻率。輸入頻率通過一個(gè)電流控制振蕩器(CCO)可以倍增為10MHz~60MHz。倍增器可以是從1到32的整數(shù)(實(shí)際上在該系列微控制器當(dāng)中,由于CPU頻率的限制,倍增器的值不可能高于6)。CCO操作的范圍為156MHz~320MHz,因此在環(huán)當(dāng)中增加了一個(gè)分頻器,這樣PLL在提供所需要的輸出頻率時(shí),使CCO保持在其頻率范圍內(nèi)。輸出分頻器可設(shè)置為2、4、8或者16以產(chǎn)生輸出時(shí)鐘。由于最小輸出分頻值為2,這樣就確保了PLL輸出具有50%的占空比。PLL在芯片復(fù)位后關(guān)閉并且被旁路,可通過軟件使能。程序必須配置并且激活PLL,等待PLL鎖定之后再將PLL作為時(shí)鐘源。PLL的設(shè)置時(shí)間為100μs。

8.3.1LPC2212/2214單片機(jī)簡介【復(fù)位和喚醒定時(shí)器】LPC2212/2214有2個(gè)復(fù)位源:RESET管腳和看門狗復(fù)位。任何復(fù)位源所導(dǎo)致的芯片復(fù)位都會(huì)啟動(dòng)喚醒定時(shí)器(見下面的喚醒定時(shí)器),復(fù)位狀態(tài)將一直保持到外部復(fù)位撤除,振蕩器開始運(yùn)行。振蕩器運(yùn)行經(jīng)過固定數(shù)目的時(shí)鐘后Flash控制器完成其初始化。當(dāng)內(nèi)部復(fù)位撤除后,處理器從復(fù)位向量地址0開始執(zhí)行。此時(shí)所有的處理器和外設(shè)寄存器都被初始化為預(yù)設(shè)的值。

8.3.1LPC2212/2214單片機(jī)簡介

喚醒定時(shí)器的用途是確保振蕩器和其它芯片操作所需要的模擬功能在處理器能夠執(zhí)行指令之前完全正常工作。這在上電、各種類型的復(fù)位以及任何原因所導(dǎo)致上述功能被關(guān)閉的情況下非常重要。由于振蕩器和其它功能在掉電模式下關(guān)閉,因此將處理器從掉電模式中喚醒就要利用喚醒定時(shí)器。喚醒定時(shí)器監(jiān)視晶體振蕩器是否可以安全地開始執(zhí)行代碼。當(dāng)芯片上電時(shí),或某些事件導(dǎo)致芯片退出掉電模式時(shí),振蕩器需要一定的時(shí)間以產(chǎn)生足夠振幅的信號(hào)驅(qū)動(dòng)時(shí)鐘邏輯。

8.3.1LPC2212/2214單片機(jī)簡介

【外部中斷輸入】

根據(jù)可選管腳功能的設(shè)定,LPC2212/2214最多可包含9個(gè)邊沿或電平觸發(fā)的外部中斷輸入。外部事件可作為4個(gè)獨(dú)立的中斷信號(hào)來處理。外部中斷輸入可用于將處理器從掉電狀態(tài)喚醒。

【存儲(chǔ)器映射控制】

存儲(chǔ)器映射控制改變了從地址0x00000000開始的中斷向量的映射。向量可以映射到片內(nèi)Flash存儲(chǔ)器的底部,也可以映射到片內(nèi)靜態(tài)RAM。這使得在不同存儲(chǔ)器空間中運(yùn)行的代碼都能夠?qū)χ袛噙M(jìn)行控制。

8.3.1LPC2212/2214單片機(jī)簡介

【功率控制】LPC2212/2214支持兩種低功耗模式:空閑模式和掉電模式。在空閑模式中,指令的執(zhí)行被暫停,直到產(chǎn)生復(fù)位或中斷為止。外圍功能在空閑模式下繼續(xù)工作并可產(chǎn)生中斷喚醒處理器??臻e模式使處理器自身、存儲(chǔ)器系統(tǒng)和相關(guān)的控制器以及內(nèi)部總線不再消耗功率。

8.3.1LPC2212/2214單片機(jī)簡介在掉電模式中,振蕩器被關(guān)閉,芯片沒有任何的內(nèi)部時(shí)鐘。處理器狀態(tài)和寄存器、外設(shè)寄存器和內(nèi)部SRAM的值在掉電模式下保持不變。芯片管腳的邏輯電平保持靜態(tài)。通過復(fù)位或特定的不需要時(shí)鐘還可工作的中斷可終止掉電模式并恢復(fù)正常操作。由于芯片所有動(dòng)態(tài)的操作都被暫停,掉電模式使芯片消耗的功率降低到幾乎為零。外設(shè)的功率控制特性允許關(guān)閉單獨(dú)的不需要使用的外設(shè),這樣可進(jìn)一步降低功耗。

8.3.1LPC2212/2214單片機(jī)簡介

【VPB總線】VPB分頻器決定處理器時(shí)鐘(cclk)和外設(shè)時(shí)鐘(pclk)之間的關(guān)系。它有兩個(gè)用途:⑴通過VPB總線為外設(shè)提供需要的PCLK時(shí)鐘,以便外設(shè)能在選擇的ARM處理器速度下操作。為了實(shí)現(xiàn)該特性,VPB總線頻率可以降低為處理器時(shí)鐘頻率的一半或1/4。由于上電后VPB總線必須正常工作,因此VPB總線在復(fù)位后的默認(rèn)狀態(tài)是以1/4速率運(yùn)行。⑵當(dāng)所有外設(shè)都不必在全速率下運(yùn)行時(shí)降頻以降低功耗。由于VPB分頻器連接到PLL的輸出,因此PLL(如果正在運(yùn)行)在空閑模式時(shí)將保持有效。

8.3.1LPC2212/2214單片機(jī)簡介

9.仿真和調(diào)試

LPC2212/2214支持通過JTAG串行端口進(jìn)行仿真和調(diào)試。跟蹤端口允許跟蹤程序的執(zhí)行。調(diào)試和跟蹤功能只在GPIO的P1口復(fù)用。這意味著位于P0口的所有通信、定時(shí)器和接口外設(shè)在開發(fā)和調(diào)試階段都可用。

8.3.1LPC2212/2214單片機(jī)簡介

【EmbeddedICETM】

標(biāo)準(zhǔn)的ARMEmbeddedICE邏輯提供對(duì)片內(nèi)調(diào)試的支持。對(duì)目標(biāo)系統(tǒng)進(jìn)行調(diào)試需要一個(gè)主機(jī)來運(yùn)行調(diào)試軟件和EmbeddedICE協(xié)議轉(zhuǎn)換器。EmbeddedICE協(xié)議轉(zhuǎn)換器將遠(yuǎn)程調(diào)試協(xié)議命令轉(zhuǎn)換成所需要的JTAG數(shù)據(jù),從而對(duì)目標(biāo)系統(tǒng)上的ARM內(nèi)核進(jìn)行訪問。ARM內(nèi)核有一個(gè)內(nèi)置的調(diào)試通信通道功能。調(diào)試通信通道允許程序在目標(biāo)系統(tǒng)上運(yùn)行,即使進(jìn)入調(diào)試狀態(tài),目標(biāo)系統(tǒng)程序與主機(jī)調(diào)試

8.3.1LPC2212/2214單片機(jī)簡介器或其它獨(dú)立的主機(jī)進(jìn)行通信時(shí)也不會(huì)中斷程序流程。ARM7TDMI-S內(nèi)核上運(yùn)行的程序?qū)⒄{(diào)試通信通道作為協(xié)處理器14進(jìn)行訪問。調(diào)試通信通道允許JTAG端口發(fā)送和接收數(shù)據(jù),但不影響正常的程序流程。調(diào)試通信通道數(shù)據(jù)和控制寄存器映射到EmbeddedICE邏輯中的地址。

8.3.1LPC2212/2214單片機(jī)簡介

【嵌入式跟蹤】

由于LPC2212/2214帶有大量的片內(nèi)存儲(chǔ)器,因此不能簡單地通過觀察外部管腳來確定處理器核是如何運(yùn)行的。嵌入式跟蹤宏單元(ETM)對(duì)深嵌入處理器內(nèi)核提供了實(shí)時(shí)跟蹤能力。它向一個(gè)跟蹤端口輸出處理器執(zhí)行的信息。ETM直接連接到ARM內(nèi)核而不是主AMBA系統(tǒng)總線。它將跟蹤信息壓縮并通過一個(gè)窄帶跟蹤端口輸出。外部跟蹤端口分析儀在軟件調(diào)試器的控制下捕獲跟蹤信息。指令跟蹤(或PC跟蹤)顯示了

8.3.1LPC2212/2214單片機(jī)簡介處理器的執(zhí)行流程并提供所有已執(zhí)行指令的列表。指令跟蹤被壓縮為廣播分支地址和一套用于指示流水線狀態(tài)的狀態(tài)信號(hào)。跟蹤信息的產(chǎn)生可通過選擇觸發(fā)源進(jìn)行控制。觸發(fā)源包括地址比較器、計(jì)數(shù)器和序列發(fā)生器。由于跟蹤信息被壓縮,軟件調(diào)試器需要一個(gè)執(zhí)行代碼的靜態(tài)映像。由于這個(gè)限制,自修改代碼無法被跟蹤。

8.3.1LPC2212/2214單片機(jī)簡介

【RealMonitorTM】RealMonitor是一個(gè)可配置的軟件模塊,它由ARM公司開發(fā),可以提供實(shí)時(shí)的調(diào)試。它是一個(gè)輕便的調(diào)試監(jiān)控器,當(dāng)用戶對(duì)運(yùn)行在前臺(tái)的應(yīng)用程序進(jìn)行調(diào)試時(shí),它運(yùn)行在后臺(tái)。它使用DCC(調(diào)試通信通道)(EmbeddedICE邏輯中包含了DCC)與主機(jī)進(jìn)行通信。LPC2212/2214包含一個(gè)編程到片內(nèi)Flash存儲(chǔ)器中的特定RealMonitor軟件。

8.3.2S3C44BOX單片機(jī)簡介

S3C44BOX是韓國三星公司(Samsung)生產(chǎn)的、實(shí)際中應(yīng)用較廣的一種32位嵌入式處理器芯片。它和LPC2212/2214一樣,使用的也是16/32位RISC結(jié)構(gòu)的ARM7TDMI內(nèi)核,工作在66MHz。為了降低系統(tǒng)總成本和減少外圍器件,芯片中還集成了下列部件:8KBCache、外部存儲(chǔ)器控制器、LCD控制器、4個(gè)DMA通道、2通道UART、1個(gè)多主I2C總線控制器,以及5通道PWM定時(shí)器、1個(gè)內(nèi)部定時(shí)器、7個(gè)通用工/0口、8個(gè)外部中斷源、實(shí)時(shí)時(shí)鐘、8通道10位A/D等。

S3C44BOX處理器的內(nèi)部體系結(jié)構(gòu)如圖8.6所示。

8.3.2S3C44BOX單片機(jī)簡介圖8.6S3C44BOX處理器的體系結(jié)構(gòu)框圖

8.3.2S3C44BOX單片機(jī)簡介

S3C44BOX各部件中,有許多和LPC2212/2214是大同小異的,這里僅對(duì)它比較特殊的部件及功能性能簡要說明如下。

1.LCD控制器

LCD控制器支持單色、4、16級(jí)灰度的LCD模塊;支持4位的單雙行掃描、8位的單行掃描形式的顯示類型;支持的主要顯示點(diǎn)陣為:640×480,320×240,160×160等。利用它,可以直接支持連接LCD顯示器。

2.兩路帶DMA和中斷的UART口最高波特率為115200bps。支持IrDAl.0,可用于紅外通信,當(dāng)傳送/接收時(shí)支持雙向握手。每個(gè)通道有2個(gè)32位FIFO。

8.3.2S3C44BOX單片機(jī)簡介

3.定時(shí)器共有6個(gè)16位定時(shí)器,每個(gè)均可以中斷方式或DMA方式工作。其中定時(shí)器0、1、2、3、4有PWM功能,可以控制蜂鳴器輸出不同聲音作為系統(tǒng)提示信息;定時(shí)器5是一個(gè)內(nèi)部定時(shí)器,沒有輸出引腳。定時(shí)器0有一個(gè)DEADZONE產(chǎn)生器,定時(shí)器0、1共享一個(gè)8位預(yù)定標(biāo)器,定時(shí)器2、3共享另一個(gè)8位預(yù)定標(biāo)器,定時(shí)器4、5也共享一個(gè)8位預(yù)定標(biāo)器。定時(shí)器0、1、2、3有一個(gè)時(shí)鐘除法器(1/2,1/4,1/8,1/16,1/32),定時(shí)器4、5有一個(gè)時(shí)鐘除法器(1/2,1/4,1/8,1/16)和一個(gè)輸入時(shí)鐘TCLK/EXTCLK。

8.3.2S3C44BOX單片機(jī)簡介每個(gè)定時(shí)器從時(shí)鐘除法器接收時(shí)鐘輸入,而時(shí)鐘除法器的輸入時(shí)鐘為相應(yīng)的預(yù)定標(biāo)器。每個(gè)定時(shí)器有一個(gè)計(jì)數(shù)緩沖寄存器保持定時(shí)器的計(jì)數(shù)初值,當(dāng)定時(shí)器允許和它的向下計(jì)數(shù)器計(jì)到0時(shí),該初值重新加載到定時(shí)器的向下計(jì)數(shù)器,并產(chǎn)生中斷請(qǐng)求。每個(gè)定時(shí)器還有一個(gè)比較緩沖寄存器,計(jì)數(shù)初值加載到定時(shí)器的比較寄存器,當(dāng)比較寄存器的值與定時(shí)器的向下計(jì)數(shù)器值相同時(shí),定時(shí)器控制邏輯改變TOUT的輸出電平。

8.3.2S3C44BOX單片機(jī)簡介

4.通用工/0口內(nèi)部有7個(gè)復(fù)合功能的I/0端口、共71位端口引腳線。其中:端口A,10位;端口B,11位;端口C,16位;端口D和G,各8位;端口E和F,各9位。在主程序開始前,必須定義每個(gè)端口所有I/0引腳的功能。凡未定義為特殊功能的引腳,均作為I/0端口線使用。

5.電源管理模式

S3C44BOX有5種電源管理模式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論