chapter-4-LPC2000系列ARM硬件結(jié)構(gòu)_第1頁
chapter-4-LPC2000系列ARM硬件結(jié)構(gòu)_第2頁
chapter-4-LPC2000系列ARM硬件結(jié)構(gòu)_第3頁
chapter-4-LPC2000系列ARM硬件結(jié)構(gòu)_第4頁
chapter-4-LPC2000系列ARM硬件結(jié)構(gòu)_第5頁
已閱讀5頁,還剩465頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章LPC2000系列ARM硬件結(jié)構(gòu)第4章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實時時鐘18.看門狗第4章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實時時鐘18.看門狗4.1簡介LPC2000系列微控制器概述

LPC2000系列微控制器基于ARM7TDMI-SCPU內(nèi)核。支持ARM和Thumb指令集,芯片內(nèi)集成豐富外設(shè),而且具有非常低的功率消耗。使該系列微控制器特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和POS機(jī)等場合。器件型號引腳數(shù)片內(nèi)RAM片內(nèi)Flash10位AD通道數(shù)CAN控制器備注LPC21146416KB128KB4--LPC21246416KB256KB4--LPC221014416KB-8-帶外部存儲器接口LPC221214416KB128KB8-LPC221414416KB256KB8-LPC21196416KB128KB42-LPC21296416KB256KB42-LPC21946416KB256KB44-LPC229014416KB-82帶外部存儲器接口LPC229214416KB256KB82LPC229414416KB256KB84LPC2131648KB32KB8--LPC21326416KB64KB8-帶1路DACLPC21346416KB128KB雙8路-LPC21366416KB256KB雙8路-LPC21386432KB512KB雙8路-LPC2000系列器件信息芯片內(nèi)部框圖LPC2000系列微控制器包含四大部分:ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能ARM7TDMI-SCPUARM7局部總線及相關(guān)部件AHB高性能總線及相關(guān)部件VLSI外設(shè)總線及相關(guān)部件芯片內(nèi)部框圖ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能LPC2000系列微控制器將ARM7TDMI-S配置為小端模式(Little-endian)。ARM7TDMI-SCPUAHB外設(shè)分配了2M字節(jié)的地址范圍,它位于4G字節(jié)ARM尋址空間的最頂端。每個AHB外設(shè)都分配了16KB的地址空間。EMCVICLPC2000系列微控制器的外設(shè)功能(除中斷控制器)都連接到VPB總線。AHB到VPB的橋?qū)PB總線與AHB總線相連。VPB外設(shè)也分配了2M字節(jié)的地址范圍,從3.5GB地址點開始。每個VPB外設(shè)都分配了16KB的地址空間。I2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘AHBToVPB橋芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能SRAMFlash內(nèi)部存儲器包括無等待SRAM和Flash;外部存儲器控制器(EMC)支持4個BANK的外部SRAM或Flash,每個BANK最多16MB;系統(tǒng)功能包括維持芯片工作的一些基本功能,如系統(tǒng)時鐘、復(fù)位等;向量中斷控制器(VIC)可以減少中斷的響應(yīng)時間,最多可以管理32個中斷請求;I2C串行接口為標(biāo)準(zhǔn)的I2C總線接口,支持最高速度400kb;EMC系統(tǒng)功能VICI2C串行接口芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能具有兩個完全獨立的SPI控制器,遵循SPI規(guī)范,可配置為SPI主機(jī)或從機(jī);具有兩個UART接口,均包含16字節(jié)的接收/發(fā)送FIFO,內(nèi)置波特率發(fā)生器。其中UART1具有調(diào)制解調(diào)器接口功能;在LPC2119/2129/2290/2292等芯片中包含CAN總線接口;看門狗定時器帶有內(nèi)部分頻器,可以方便設(shè)置溢出時間,在軟件使能看門狗后只有復(fù)位可以禁止(具有調(diào)試模式);SPI串行接口UART0&1CAN看門狗定時器芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能系統(tǒng)控制模塊包括一些與其它外設(shè)無關(guān)的功能,如功率控制等;外部中斷有4路多引腳輸入,可用于CPU掉電喚醒;定時器0/1為兩個獨立的帶可編程32位預(yù)分頻器的32位定時器/計數(shù)器,具有捕獲和匹配輸出功能;具有4/8路10位ADC,可以設(shè)置為多路循環(huán)采樣模式。10位轉(zhuǎn)換時間最短為2.44us;系統(tǒng)控制外部中斷TIMER0/1ADC芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能不同封裝的芯片具有數(shù)目不等的IO口,它們可以承受5V電壓。每個IO口可以獨立設(shè)置為輸入/輸出模式,在作為輸出模式時可以分別置位或清零;脈寬調(diào)制器可以靈活設(shè)置,以適應(yīng)不同的場合??梢栽O(shè)置為單邊沿或雙邊緣輸出方式,可以靈活的設(shè)置頻率和占空比;實時時鐘具有可編程的基準(zhǔn)時鐘分頻器,以適應(yīng)不同的晶振頻率。帶日歷和時鐘功能,提供秒、分、時、日、月、年和星期,同時具有非常的功耗。通用I/OPWM0實時時鐘第4章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實時時鐘18.看門狗4.2引腳配置LPC2000系列芯片外形LPC2210/2212/2214LPC2114/2124GPIOTXD0PWM1輸出P0.04.2引腳配置引腳功能選擇使用示例

LPC2000系列微控制器的引腳一般是多個功能復(fù)用,但是同一引腳在同一時刻只能使用其中一個功能,這可以通過設(shè)置PINSELx寄存器來選擇,詳細(xì)介紹見“引腳連接模塊”小節(jié)。通過PINSEL0控制引腳功能第4章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實時時鐘18.看門狗小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表4.3存儲器尋址地址空間0xFFFFFFFF0x00000000內(nèi)部Flash0x40000000內(nèi)部SRAM0x80000000外部存儲器0x7FFFE000BootBlock片外存儲器片內(nèi)存儲器一個具體應(yīng)用可能存在的物理存儲器256K16K4.3存儲器尋址不同芯片內(nèi)部存儲器分布16K128K16KLPC2210LPC2114/2212LPC2124/2214片內(nèi)Flash片內(nèi)RAM

0x000000000x0001FFFF0x0003FFFF0x400000000x40001FFF小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表4.3存儲器尋址片內(nèi)Flash編程方法:JTAG串口1.通過內(nèi)置JTAG接口;2.通過在系統(tǒng)編程(ISP),使用UART0通信;3.通過在應(yīng)用編程(IAP);4.3存儲器尋址片外Flash編程方法(LPC2200):在CPU上運行一個裝載程序(Loader,一般由用戶編寫),該程序通過串口接收要燒寫的數(shù)據(jù),然后擦除編程Flash。串口Loder程序外部Flash4.3存儲器尋址片內(nèi)SRAM的寫操作

SRAM控制器包含一個回寫緩沖區(qū),它總是保存著軟件發(fā)送到SRAM的最后一個字?jǐn)?shù)據(jù)。該數(shù)據(jù)只有在軟件請求下一次寫操作時才寫入SRAM。如果發(fā)生芯片復(fù)位,實際的SRAM內(nèi)容將不會反映最近一次的寫操作。??回寫緩沖區(qū)內(nèi)部SRAM寫入地址寫入A寫入BAA寫入AB小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表4.3存儲器尋址存儲器映射基本概念

ARM處理器產(chǎn)生的地址叫虛擬地址,把這個虛擬地址按照某種規(guī)則轉(zhuǎn)換到另一個物理地址去的方法稱為地址映射。這個物理地址表示了被訪問的存儲器的位置。它是一個地址范圍,該范圍內(nèi)可以寫入程序代碼。通過地址映射的方法將各存儲器分配到特定的地址范圍后,這時用戶所看見的存儲器分布為存儲器映射。4.3存儲器尋址芯片復(fù)位后用戶看見的地址空間128KBFlash(LPC2114/2212)256KBFlash(LPC2124/2214)16KBSRAM8KBBootBlock2MBVPB外設(shè)2MBAHB外設(shè)0x000000000xFFFFFFFF保留給片內(nèi)存儲器使用保留給片內(nèi)存儲器使用保留給外部儲器使用0x400000000xE00000000x800000000xF00000000x00020000地址空間4.3存儲器尋址AHB和VPB

AHB(先進(jìn)的高性能總線)和VPB(VLSI外設(shè)總線)外設(shè)區(qū)域都為2M字節(jié),可各分配128個外設(shè)。每個外設(shè)空間的規(guī)格都為16K字節(jié),這樣就簡化了每個外設(shè)的地址譯碼。注意:AHB和VPB外設(shè)區(qū)域中不管是字還是半字,都是一次性訪問。例如不可能對一個字寄存器的最高字節(jié)執(zhí)行單獨的讀或?qū)懖僮?.3存儲器尋址外設(shè)存儲器映射VPB外設(shè)AHB外設(shè)保留3.5GB3.5GB+2MB4.0GB-2MB地址空間4.0GB0xE00000000xE01FFFFF0xFFE000000xFFFFFFFFVPB外設(shè)AHB外設(shè)均為128×16KB(2MB)范圍4.3存儲器尋址AHB外設(shè)映射AHB外設(shè)#126地址空間0xFFE000000xFFE040000xFFFF40000xFFFF8000AHB外設(shè)#125AHB外設(shè)#0AHB外設(shè)#10xFFFFF000…0xFFFFC000向量中斷控制器AHB外設(shè)#1274.3存儲器尋址VPB外設(shè)映射VPB外設(shè)#3地址空間0xE00000000xE00040000xE00080000xE000C000VPB外設(shè)#2VPB外設(shè)#0VPB外設(shè)#10xE01FC000…VPB外設(shè)#127看門狗定時器定時器0系統(tǒng)控制模塊定時器1UART04.3存儲器尋址BootBlock的映射地址安排為了兼容將來的器件,整個BootBlock被映射到片內(nèi)存儲器空間的頂端。所以將來的芯片內(nèi)置不同的RAM和FALSH都不會影響B(tài)ootBlock的位置。地址空間FlashSRAMBootBlockAHB&VPB映射位置固定在內(nèi)部存儲器頂端RAM和Flash的變化不會影響B(tài)ootBlock的位置SRAMFlash0x80000000Skip4.3存儲器尋址存儲器重新映射

存儲器重新映射是將復(fù)位后用戶所見的存儲器中部分區(qū)域,再次映射到其它的地址上。對于Philips的LPC系列ARM微控制器,存儲器重新映射區(qū)域一共為64字節(jié),分別為異常向量區(qū)(32字節(jié))和緊隨其后的32字節(jié)。存儲器重新映射的方法允許在不同模式下處理中斷,重新映射的存儲器區(qū)域在地址0x00000000~0x0000003F處。存儲器重新映射的控制見“存儲器映射控制”小節(jié)。4.3存儲器尋址使用存儲器重新映射的原因使Flash存儲器中的FIQ處理程序不必考慮因為重新映射所導(dǎo)致的存儲器邊界問題用來處理代碼空間中段邊界仲裁的SRAM和BootBlock向量的使用大大減少為超過單字轉(zhuǎn)移指令范圍的跳轉(zhuǎn)提供空間來保存常量存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常

如果試圖訪問一個保留地址或未分配區(qū)域的地址,ARM處理器將產(chǎn)生預(yù)取指中止或數(shù)據(jù)中止異常。4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常這些區(qū)域分別為:FlashSRAMBootBlockVPB地址空間AHB1.特定的ARM器件所沒有的存儲器映射區(qū)域;2.AHB外設(shè)空間中未分配的區(qū)域;3.VPB外設(shè)空間中未分配的區(qū)域。4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常注意:

只有在試圖執(zhí)行從非法地址取指的指令時,ARM才會將預(yù)取指中止標(biāo)志與相關(guān)的指令(沒有意義的指令)一起保存到流水線并對中止進(jìn)行處理。當(dāng)代碼在非常靠近存儲器邊界執(zhí)行時,防止了由預(yù)取指所導(dǎo)致的意外中止。4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)取指譯碼執(zhí)行存儲器程序存儲器第N次取指第N+1次取指4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)無效指令指令C指令B取指譯碼執(zhí)行存儲器程序存儲器第N+2次取指4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)無效指令指令C指令B取指譯碼執(zhí)行無效指令無效指令指令C存儲器程序存儲器4.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)無效指令指令C指令B取指譯碼執(zhí)行無效指令無效指令指令C無效指令無效指令無效指令存儲器程序存儲器第N+3次取指,此時流水線的執(zhí)行級執(zhí)行了無效指令,發(fā)生預(yù)取指中止。如果指令C為跳轉(zhuǎn)指令則可以避免預(yù)取指中止的發(fā)生。存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄4.3存儲器尋址異常向量表對于每一個異常事件,都有一個與之相對應(yīng)的處理程序,它們是關(guān)聯(lián)在一起的,并以一張一維表的格式存儲在存儲器的固定單元中。這張指定了各異常中斷及其處理程序的對應(yīng)關(guān)系的表,稱為異常向量表。4.3存儲器尋址異常向量表地址異常0x00000000復(fù)位0x00000004未定義指令0x00000008軟件中斷0x0000000C預(yù)取指中止(從存儲器取指出錯)0x00000010數(shù)據(jù)中止(訪問存儲器數(shù)據(jù)出錯)0x00000014保留*0x00000018IRQ0x0000001CFIQ各異常向量的固定位置該位置被Boot裝載程序用作有效用戶程序的檢測標(biāo)志。通過定義此保留值,使向量表所有數(shù)據(jù)32位累加和為0,芯片復(fù)位后才能脫機(jī)運行用戶程序。4.3存儲器尋址位于啟動代碼中的異常向量表什么是啟動代碼?一般在32位ARM應(yīng)用系統(tǒng)中,大多數(shù)采用C語言進(jìn)行軟件編程。但是在運行應(yīng)用代碼前需要進(jìn)行系統(tǒng)初始化。常用一個匯編文件作啟動代碼,它可以實現(xiàn)異常向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷系統(tǒng)初始化、I/O初始化、外圍部件初始化、地址重映射等操作。位于啟動代碼中的異常向量表CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler前32字節(jié)為異常入口

后32字節(jié)為跳轉(zhuǎn)地址

異常向量表位于啟動代碼中的異常向量表CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler異常向量表例如:發(fā)生未定義異常時1.程序計數(shù)器(PC)指向0x00000004;2.執(zhí)行當(dāng)前的指令,將Undefined地址值裝入PC,實現(xiàn)至未定義異常處理程序的跳轉(zhuǎn)。裝入位于啟動代碼中的異常向量表CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler異常向量表注意:異常向量表中程序跳轉(zhuǎn)使用LDR指令,而沒有使用B指令。原因:1.LDR指令可以全地址范圍跳轉(zhuǎn),而B指令只能在前后32MB范圍內(nèi)跳轉(zhuǎn);2.芯片具有Remap功能。當(dāng)向量表位于內(nèi)部RAM或外部存儲器中,用B指令不能跳轉(zhuǎn)到正確的位置。BResetAddr第4章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實時時鐘18.看門狗4.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器4.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器4.4系統(tǒng)控制模塊系統(tǒng)控制模塊概述

系統(tǒng)控制模塊包括一些系統(tǒng)構(gòu)件和控制寄存器,它們具有眾多與芯片內(nèi)其它外設(shè)無關(guān)的功能。系統(tǒng)控制模塊包括:系統(tǒng)時鐘單元、復(fù)位、外部中斷輸入、存儲器映射控制、功率控制和喚醒定時器。4.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器系統(tǒng)時鐘內(nèi)容目錄系統(tǒng)時鐘概述晶體振蕩器(4.4.3)PLL(4.4.6)VPB分頻器(4.4.7)系統(tǒng)時鐘小節(jié)目錄系統(tǒng)時鐘概述晶體振蕩器(4.4.3)PLL(4.4.6)VPB分頻器(4.4.7)系統(tǒng)時鐘系統(tǒng)時鐘概述

CPU正常工作需要有合適的時鐘信號,包括ARM7內(nèi)核使用的CCLK時鐘,和芯片外設(shè)使用的PCLK時鐘。通過LPC2000系列微控制器的時鐘產(chǎn)生單元產(chǎn)生ARM7內(nèi)核和芯片外設(shè)正常工作所需要的時鐘節(jié)拍。系統(tǒng)時鐘系統(tǒng)時鐘概述ARM7核橋外設(shè)時鐘產(chǎn)生FCCLKFPCLKFOSCCPU時鐘結(jié)構(gòu)系統(tǒng)時鐘時鐘產(chǎn)生單元

時鐘產(chǎn)生單元包括晶體振蕩器、鎖相環(huán)振蕩器(PLL)和VPB分頻器。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC系統(tǒng)時鐘概述晶體振蕩器(4.4.3)PLL(4.4.6)VPB分頻器(4.4.7)系統(tǒng)時鐘小節(jié)目錄系統(tǒng)時鐘晶體振蕩器

LPC2000微控制器可以使用內(nèi)部的晶體振蕩器產(chǎn)生時鐘信號,也可以從外部引入時鐘信號。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式SKIP系統(tǒng)時鐘晶體振蕩器

使用從屬模式時,時鐘信號通過X1引腳從外部輸入,輸入頻率范圍:1~50(MHz),其幅度不小于200mVrms。LPC2000X1X2ClockCC從屬模式系統(tǒng)時鐘晶體振蕩器

使用振蕩模式時,時鐘信號由內(nèi)部晶體振蕩器和外部連接的晶體振蕩產(chǎn)生,振蕩頻率范圍:1~30(MHz)。LPC2000X1X2CX1CX2XTAL振蕩模式系統(tǒng)時鐘晶體振蕩器注意:如果使用了ISP下載功能或者連接PLL提高頻率,則輸入的時鐘頻率范圍必須在10~25(MHz)之間。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式系統(tǒng)時鐘小節(jié)目錄系統(tǒng)時鐘概述晶體振蕩器(4.4.3)PLL(4.4.6)VPB分頻器(4.4.7)系統(tǒng)時鐘鎖相環(huán)(PLL)

由晶體振蕩器輸出的時鐘信號,通過PLL升頻,可以獲得更高的系統(tǒng)時鐘(CCLK)。

PLL接受的輸入時鐘頻率范圍為10~25MHz,通過一個電流控制振蕩器(CCO)倍增到10~60MHz。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC10MHz~25MHz10MHz~60MHzPLLSKIPPLL內(nèi)部結(jié)構(gòu)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK晶體振蕩器輸入時鐘對輸入的兩路時鐘信號進(jìn)行相位頻率檢測,將兩者差值以電流形式輸出電流控制振蕩器,根據(jù)輸入電流控制振蕩頻率對輸入時鐘分頻輸入時鐘2選1開關(guān)PLL內(nèi)部結(jié)構(gòu)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)CCO自由振蕩,輸出頻率FCCO根據(jù)兩個輸入時鐘的相位偏差,控制CCO。當(dāng)兩個時鐘相位同步時,回路鎖定。PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL控制寄存器(PLLCON):位76543210功能------PLLCPLLEPLLE:PLL使能,該位為1時將激活PLL并允許其鎖定到指定的頻率;PLLC:PLL連接,當(dāng)PLLE為1,并且在PLL鎖定后,該位為1,將把PLL作為時鐘源連接到CPU,否則直接使用振蕩器時鐘。PLLCPLLE相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK位76543210功能------PLLCPLLE注:其中“-”表示該位保留,用戶不要向該位寫入1,讀取的值將不確定PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLLCPLLEPLL功能00PLL被關(guān)閉,并斷開連接。01PLL被激活但是尚未連接??梢栽赑LOCK置位后連接。10與00組合相同。避免PLL已連接,但還沒有使能的情況。11PLL已經(jīng)使能,并連接到處理器作為系統(tǒng)時鐘源。PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL配置寄存器(PLLCFG):位76543210功能-PSEL[1:0]MSEL[4:0]MSEL[4:0]:PLL倍頻器值,在PLL頻率計算中其值為(M-1);PSEL[1:0]:PLL分頻器值,在PLL頻率計算中其值為P

。PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL狀態(tài)寄存器(PLLSTAT):位15:11109876:54:0功能-PLOCKPLLCPLLE-PSEL[1:0]MSEL[4:0]MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:讀出反映這幾個參數(shù)的設(shè)置值,寫入無效;PLOCK:反映PLL的鎖定狀態(tài)。為0時,PLL未鎖定;為1時,PLL鎖定到指定頻率。PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL饋送寄存器(PLLFEED):PLLFEDD[7:0]:PLL饋送序列必須寫入該寄存器才能使PLL配置和控制寄存器的更改生效;位76543210功能PLLFEED[7:0]PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK饋送序列為:

1.將值0xAA寫入PLLFEED;

2.將值0x55寫入PLLFEED。位76543210功能PLLFEED[7:0]PLL相關(guān)寄存器PLL饋送寄存器(PLLFEED):PLL頻率計算回路鎖定后:FOSC=FCCO/(2P×M)FCLK=FOSC

×M相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)FOSC:晶振頻率;FCCO:CCO振蕩器輸出頻率FCCLK:PLL的輸出頻率;M:PLL倍頻值P:PLL分頻值必須滿足的條件:FOSC范圍:10MHz~25MHz;

FCCLK范圍:10MHz~60MHz;

FCCO范圍:156MHz~320MHz;系統(tǒng)時鐘鎖相環(huán)(PLL)計算流程1.選擇處理器的工作頻率(CCLK)2.選擇振蕩器頻率(FOSC)3.計算M值配置MSEL位4.計算P值配置PSEL位根據(jù)處理器的整體要求、UART波特率的支持等因素來決定。外圍器件的時鐘頻率可以低于處理器頻率

CCLK必須為FOSC的整數(shù)倍。

M=CCLK/FOSC,取值范圍1~32。寫入MSEL的值為(M-1)。選擇合適的P值,使FCCO在限制范圍內(nèi)。P只能取1、2、4或8。寫入PSEL的值為P。系統(tǒng)時鐘鎖相環(huán)(PLL)計算實例系統(tǒng)要求:FOSC=10MHz、CCLK=60MHz1.計算M值:M=CCLK/FOSC=6

;2.設(shè)置MSEL位:寫入值為(M-1)=5;3.設(shè)置PSEL位:P=FCCO/(CCLK×2)

=(156~320)/120=1.3~2.67

所以P取整數(shù)2,PSEL寫入值為2。系統(tǒng)時鐘鎖相環(huán)(PLL)注意要點PLL在芯片復(fù)位或進(jìn)入掉電模式時被關(guān)閉并旁路,在掉電喚醒后不會自動恢復(fù)PLL的設(shè)定;PLL只能通過軟件使能;PLL在激活后必須等待其鎖定,然后才能連接;PLL如果設(shè)置不當(dāng)將會導(dǎo)致芯片的錯誤操作。系統(tǒng)時鐘小節(jié)目錄系統(tǒng)時鐘概述晶體振蕩器(4.4.3)PLL(4.4.6)VPB分頻器(4.4.7)系統(tǒng)時鐘VPB分頻器

VPB分頻器將PLL輸出的時鐘信號分頻后作為芯片外設(shè)的時鐘。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSCVPB分頻器SKIP系統(tǒng)時鐘VPB分頻器

VPB分頻器決定處理器時鐘(CCLK)與外設(shè)器件所使用的時鐘(PCLK)之間的關(guān)系。VPB用途1:通過VPB總線為外設(shè)提供所需的PCLK時鐘,以便外設(shè)在合適的速度下工作;VPB用途2:在應(yīng)用不需要任何外設(shè)全速運行時使功耗降低。系統(tǒng)時鐘VPB分頻器相關(guān)寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]:設(shè)置分頻值,可以設(shè)定3個值;XCLKDIV[1:0]:這些位用于控制LPC2200系列微控制器A23/XCLK引腳上的時鐘驅(qū)動,取值編碼方式與VPBDIV相同;系統(tǒng)時鐘VPB分頻器相關(guān)寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]說明00VPB總線時鐘為處理器時鐘的1/4。01VPB總線時鐘與處理器時鐘相同。10VPB總線時鐘為處理器時鐘的1/2。11保留。寫入該值將不改變分頻值。系統(tǒng)時鐘初始化流程使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列系統(tǒng)時鐘初始化——啟動代碼實例//應(yīng)當(dāng)與實際一致晶振頻率,10MHz~25MHz,應(yīng)當(dāng)與實際一致#defineFosc11059200//系統(tǒng)頻率,必須為Fosc的整數(shù)倍(1~32),且<=60MHZ#defineFcclk(Fosc*4)//CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz#defineFcco(Fcclk*4)//VPB時鐘頻率,只能為(Fcclk/4)的1、2、4倍#defineFpclk(Fcclk/4)*1將系統(tǒng)內(nèi)各時鐘的頻率定義為宏,方便用戶操作。設(shè)置晶振頻率設(shè)置內(nèi)核工作頻率設(shè)置CCO輸出頻率設(shè)置外設(shè)工作頻率系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列使能PLL設(shè)置VPB分頻值一致C代碼分析:

PLLCON=1;#if(Fpclk/(Fcclk/4))==1VPBDIV=0;#endif#if(Fpclk/(Fcclk/4))==2VPBDIV=2;#endif#if(Fpclk/(Fcclk/4))==4VPBDIV=1;#endif...注意:在啟動代碼中很多地方使用了條件編譯的方法,根據(jù)用戶定義的宏來決定要設(shè)置的值,可以方便用戶使用。系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列設(shè)置PLL分頻值C代碼分析:...#if(Fcco/Fcclk)==2PLLCFG=((Fcclk/Fosc)-1)|(0<<5);#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);...系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列PLL饋送序列等待PLL鎖定連接PLLPLL饋送序列C代碼分析:...PLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;注意:在修改PLL的控制和配置寄存器后,必須寫入饋送序列,使修改生效。4.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器復(fù)位復(fù)位的分類外部復(fù)位

—把nRESET引腳拉為低電平,并保持一個最小時間,引發(fā)復(fù)位看門狗復(fù)位

—通過設(shè)置看門狗相關(guān)寄存器,當(dāng)看門狗定時器溢出后,引發(fā)復(fù)位復(fù)位外部復(fù)位

外部復(fù)位引腳(nRESET)連接內(nèi)部的施密特觸發(fā)器,通過施密特觸發(fā)器可以濾除引腳輸入的干擾信號,保證復(fù)位的可靠性。如果外部復(fù)位信號一直有效,芯片將保持復(fù)位狀態(tài)。注意:如果芯片使用了外部晶體,上電后nRESET引腳的復(fù)位信號必須保持至少10ms,以便產(chǎn)生穩(wěn)定的振蕩信號。如果晶振已經(jīng)穩(wěn)定運行且X1引腳上已出現(xiàn)穩(wěn)定信號時,nRESET引腳的復(fù)位信號只需保持至少300ns時間。1.在芯片未上電時,芯片振蕩器沒有工作;復(fù)位UX1tLPC2xxxnRESET電源輸入X1X2外部復(fù)位復(fù)位振蕩器穩(wěn)定需要一段時間UX1tLPC2xxxnRESET電源輸入X1X2外部復(fù)位2.芯片上電后,晶體振蕩器開始振蕩。因為振蕩從開始到穩(wěn)定需要一過程,所以外部復(fù)位信號至少要保持10ms;>=10ms>=300ns復(fù)位UX1t此時振蕩器穩(wěn)定工作外部復(fù)位LPC2xxxnRESET電源輸入X1X23.在晶體振蕩器保持穩(wěn)定振蕩,或者使用有源鐘振時,外部復(fù)位信號可以縮短到不小于300ns;復(fù)位任何復(fù)位源引起的芯片復(fù)位都會啟動喚醒定時器,當(dāng)計數(shù)到一個固定個數(shù)的時鐘時,處理器開始執(zhí)行指令。這確保振蕩器和芯片所需要的其它模擬電路在處理器開始執(zhí)行指令之前能夠正確工作。外部復(fù)位與內(nèi)部看門狗復(fù)位的共同點復(fù)位外部復(fù)位與內(nèi)部看門狗復(fù)位的區(qū)別外部復(fù)位將把某幾個特定引腳的值鎖存,來決定系統(tǒng)復(fù)位后的狀態(tài),而看門狗(WDT)復(fù)位則無此功能。檢測引腳鎖存狀態(tài)對應(yīng)功能P1.20/TRACESYNC0P1.25~P1.16作為跟蹤端口P1.26/RTCK0P1.31~P1.26作為調(diào)試端口P0.140進(jìn)入ISP狀態(tài)BOOT1、BOOT2全1內(nèi)部Flash啟動,否則外部啟動復(fù)位復(fù)位后的系統(tǒng)狀態(tài)芯片被復(fù)位后,處理器和外設(shè)寄存器都恢復(fù)為默認(rèn)狀態(tài)。程序計數(shù)器(PC)值為0,即CPU復(fù)位后運行的第一條代碼位于0x00000000處。此時位于該地址的程序并不位于片內(nèi)Flash,而是來自BootBlock的異常向量表的重新映射。通過異常向量表的復(fù)位異常入口,程序跳轉(zhuǎn)至BootBlock中執(zhí)行Boot程序。復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間1.復(fù)位后用戶見到的存儲器分布2.BootBlock中的異常向量表重新映射復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000000x000000040x000000080x00000040PC指向3.PC指向0x0000地址處,CPU執(zhí)行復(fù)位后的第一條指令復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000040x000000080x000000404.通過跳轉(zhuǎn)指令,程序跳入BootBlock,執(zhí)行Boot程序。復(fù)位復(fù)位后的系統(tǒng)狀態(tài)PC指向FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000040x000000080x00000040復(fù)位Boot程序

Boot程序是芯片生產(chǎn)廠家固化在芯片中的一段代碼,它完成芯片復(fù)位后的初始化操作,并提供實現(xiàn)Flash編程的方法。Boot裝載程序可啟動對空片的編程、已編程器件的擦除和再編程,以及在運行的系統(tǒng)中由應(yīng)用程序?qū)lash存儲器進(jìn)行編程。SKIPBoot程序工作流程——LPC2114/2124復(fù)位運行ISP服務(wù)程序看門狗復(fù)位根據(jù)硬件(P1.20、P1.26)配置進(jìn)入ISP狀態(tài)嗎?(P0.14為低)初始化用戶代碼是否有效執(zhí)行用戶代碼(片內(nèi)Flash:0x00000000)NYYYNN在此檢測特定引腳檢測用戶代碼是否有效Boot程序工作流程——LPC2210/2212/2214復(fù)位看門狗復(fù)位進(jìn)入ISP模式?(P0.14為低)初始化用戶代碼是否有效芯片加密允許調(diào)試外部引導(dǎo)芯片加密運行ISP服務(wù)程序執(zhí)行外部用戶代碼(0x80000000)執(zhí)行內(nèi)部用戶代碼(0x00000000)NNYYNNNNYYYY在此檢測特定引腳檢測用戶代碼是否有效復(fù)位有效用戶代碼的判別

LPC2000系列微控制器規(guī)定“內(nèi)部Flash中向量表所有數(shù)據(jù)的32位累加為零”時,判定內(nèi)部Flash中的代碼為有效可執(zhí)行代碼。即只有當(dāng)向量表所有數(shù)據(jù)32位累加和為零時,用戶的程序才能脫機(jī)運行。有效用戶代碼的判別CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler異常向量表前32字節(jié)為異常入口

后32字節(jié)為跳轉(zhuǎn)地址

有效用戶代碼的判別Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c異常向量表反匯編代碼前32字節(jié)為異常入口

后32字節(jié)為跳轉(zhuǎn)地址

有效用戶代碼的判別Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c異常向量表反匯編代碼指令的機(jī)器碼指令有效用戶代碼的判別Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c異常向量表反匯編代碼8條指令的機(jī)器碼累加和為0,表示用戶代碼有效Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c異常向量表反匯編代碼8條指令的機(jī)器碼累加和為0,表示用戶代碼有效有效用戶代碼的判別[0x00000000][0xe59ff018][0xe59ff018]...[0xb9205f80][0xe51ffff0][0xe59ff018]跳轉(zhuǎn)地址數(shù)據(jù)不在累加范圍內(nèi)

通過調(diào)整該保留字,使累加和為04.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器外部中斷外部中斷外部中斷是通過引腳輸入符合要求的信號而觸發(fā)的中斷。LPC2114/2124/2210/2212/2214含有4個外部中斷輸入(作為可選引腳功能,通過PINSEL0/1寄存器設(shè)置相應(yīng)管腳為外部中斷功能)。外部中斷輸入可用于將處理器從掉電模式喚醒。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷外部中斷內(nèi)部示意圖2.控制某幾個引腳作為外部中斷輸入;管腳連接控制1.可作為外部中斷輸入的引腳;外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志3.控制觸發(fā)外部中斷的信號波形;4.控制外部中斷產(chǎn)生后是否喚醒CPU;5.外部中斷產(chǎn)生后設(shè)置的標(biāo)志位;(2)(1)(3)(3)(4)(5)外部中斷相關(guān)寄存器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0該寄存器控制著外部中斷輸入信號的極性,其中低四位(EXTPOLAR[3:0])分別對應(yīng)外部中斷3~0。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷極性控制外部中斷相關(guān)寄存器外部中斷3外部中斷2外部中斷1外部中斷0(EINT3)(EINT2)(EINT1)(EINT0)分別控制著外部中斷相關(guān)寄存器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE當(dāng)EXTPOLARx設(shè)置為1時EINTx引腳輸入信號高電平或上升沿有效。當(dāng)EXTPOLARx設(shè)置為0時EINTx引腳輸入信號低電平或下降沿有效。外部中斷相關(guān)寄存器外部中斷相關(guān)寄存器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷相關(guān)寄存器外部中斷方式控制寄存器(EXTMODE):位7:43210功能-EXTMODE3EXTMODE2EXTMODE1EXTMODE0該寄存器控制著外部中斷輸入信號的有效觸發(fā)方式,其中低四位(EXTMODE[3:0])分別對應(yīng)外部中斷3~0。外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷方式控制當(dāng)EXTMODEx設(shè)置為0時輸入信號為電平觸發(fā)有效。當(dāng)EXTMODEx設(shè)置為1時輸入信號為邊沿觸發(fā)有效。外部中斷相關(guān)寄存器外部中斷方式控制寄存器(EXTMODE):位7:43210功能-EXTMODE3EXTMODE2EXTMODE1EXTMODE0外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷相關(guān)寄存器極性與方式控制的組合關(guān)系:外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷極性控制寄存器(EXTPOLAR)外部中斷方式控制寄存器(EXTMODE)外部中斷觸發(fā)信號波形說明00低電平01下降沿10高電平11上升沿外部中斷相關(guān)寄存器外部中斷喚醒寄存器(EXTWAKE):位7:43210功能-EXTWAKE3EXTWAKE2EXTWAKE1EXTWAKE0設(shè)置該寄存器允許相應(yīng)的外部中斷將處理器從掉電模式喚醒。實現(xiàn)掉電喚醒不需要在向量中斷控制器(VIC)中使能相應(yīng)的中斷。該寄存器的低四位(EXTWAKE[3:0])分別對應(yīng)外部中斷3~0。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE掉電喚醒控制外部中斷相關(guān)寄存器當(dāng)EXTWAKEx設(shè)置為1時對應(yīng)的外部中斷將處理器從掉電模式喚醒。外部中斷喚醒寄存器(EXTWAKE):位7:43210功能-EXTWAKE3EXTWAKE2EXTWAKE1EXTWAKE0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷相關(guān)寄存器外部中斷標(biāo)志寄存器(EXTINT):位7:43210功能-EINT3EINT2EINT1EINT0若引腳上出現(xiàn)了符合要求的信號,EXTINT寄存器中對應(yīng)的中斷標(biāo)志將被置位。向該寄存器的EINT0~EINT3位寫入1,可將其清零。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE中斷標(biāo)志注意:在電平觸發(fā)方式下,清除中斷標(biāo)志只有在引腳處于無效狀態(tài)時才可實現(xiàn)。比如設(shè)置為低電平中斷,則只有在中斷引腳恢復(fù)為高電平后才能清除中斷標(biāo)志。外部中斷相關(guān)寄存器外部中斷標(biāo)志寄存器(EXTINT):位7:43210功能-EINT3EINT2EINT1EINT0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKESKIP外部中斷外部中斷引腳設(shè)置通過軟件設(shè)置引腳選擇寄存器(PINESLEx),可以將多個引腳同時作為同一個外部中斷的輸入引腳。EINT3~EINT0外部中斷的邏輯電路接收所有與之相連引腳的狀態(tài)和信號。外部中斷外部中斷引腳設(shè)置根據(jù)其方式位和極性位的不同,外部中斷邏輯處理如下:低電平觸發(fā)方式:作為EINT功能的全部引腳的狀態(tài)相與后作為輸入信號;高電平觸發(fā)方式:作為EINT功能的全部引腳的狀態(tài)相或后作為輸入信號;邊沿觸發(fā)方式:只使用GPIO端口號最低的那個引腳,并且與極性設(shè)置無關(guān)。外部中斷外部中斷應(yīng)用示例1——設(shè)置EINT0為低電平觸發(fā)中斷...PINSEL1=(PINSEL1&0xFFFFFFFC)|0x01;EXTMODE&=0x0E;EXTPOLAR&=0x0E;...C代碼:1.設(shè)置引腳連接模塊,將P0.16設(shè)置為外部中斷功能;2.設(shè)置中斷方式寄存器,將外部中斷0設(shè)置為電平觸發(fā);3.設(shè)置中斷極性寄存器,將外部中斷0設(shè)置為低電平觸發(fā);步驟:(1)(2)(3)4.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時器SKIP存儲器映射控制存儲器映射控制的作用“存儲器映射控制”用于控制地址范圍為0x0000~0x003F存儲區(qū)域的重新映射。該區(qū)域存放著異常向量表。

AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddr...當(dāng)發(fā)生異常時,程序總是跳轉(zhuǎn)到地址為0x0000~0x003F的對應(yīng)入口處,在該地址范圍內(nèi)存儲有異常向量表。指令未定義中止入口軟件中斷入口取數(shù)據(jù)中止入口預(yù)取指中止入口復(fù)位入口

...存儲器映射控制的必要性異常向量表

AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddr...存儲器映射控制的必要性復(fù)位后用戶看見的地址空間FlashSRAMBootBlockVPB外設(shè)AHB外設(shè)0x000000000xFFFFFFFF0x400000000xE00000000x80000000片外存儲器可能存在的程序存儲器FlashSRAMBootBlock片外存儲器異常向量表

AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddr...FlashSRAMBootBlockVPB外設(shè)AHB外設(shè)0x000000000xFFFFFFFF0x400000000xE00000000x80000000片外存儲器異常向量表內(nèi)部Flash可以來自存儲器映射控制的必要性復(fù)位后用戶看見的地址空間內(nèi)部SRAM

AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,Dat

溫馨提示

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

評論

0/150

提交評論