《ARM硬件結(jié)構(gòu)》-2教學(xué)課件_第1頁
《ARM硬件結(jié)構(gòu)》-2教學(xué)課件_第2頁
《ARM硬件結(jié)構(gòu)》-2教學(xué)課件_第3頁
《ARM硬件結(jié)構(gòu)》-2教學(xué)課件_第4頁
《ARM硬件結(jié)構(gòu)》-2教學(xué)課件_第5頁
已閱讀5頁,還剩319頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《ARM硬件結(jié)構(gòu)》(2)幻燈片本課件PPT僅供大家學(xué)習(xí)使用學(xué)習(xí)完請自行刪除,謝謝!本課件PPT僅供大家學(xué)習(xí)使用學(xué)習(xí)完請自行刪除,謝謝!《ARM硬件結(jié)構(gòu)》(2)幻燈片本課件PPT僅供大家ARM硬件結(jié)構(gòu)5CHAPTERARM硬件結(jié)構(gòu)5CHAPTER第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時(shí)器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實(shí)時(shí)時(shí)鐘18.看門狗第5章目錄1.簡介10.UART0第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時(shí)器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實(shí)時(shí)時(shí)鐘18.看門狗第5章目錄1.簡介10.UART05.1簡介LPC2000系列微控制器概述LPC2000系列微控制器基于ARM7TDMI-SCPU內(nèi)核。支持ARM和Thumb指令集,芯片內(nèi)集成豐富外設(shè),而且具有非常低的功率消耗。使該系列微控制器特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和POS機(jī)等場合。

5.1簡介LPC2000系列微控制器概述LPC2器件型號引腳數(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系列器件信息器件型號引腳數(shù)片內(nèi)RAM片內(nèi)Flash10位AD通道數(shù)CAN芯片內(nèi)部框圖LPC2000系列微控制器包含四大部分:ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能ARM7TDMI-SCPUARM7局部總線及相關(guān)部件AHB高性能總線及相關(guān)部件VLSI外設(shè)總線及相關(guān)部件芯片內(nèi)部框圖LPC2000系列微控制器包含四大部分:ARM7芯片內(nèi)部框圖ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘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地址點(diǎn)開始。每個VPB外設(shè)都分配了16KB的地址空間。I2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘AHBToVPB橋芯片內(nèi)部框圖ARM7TDMI-SAHBToVPBEMCV芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能SRAMFlash內(nèi)部存儲器包括無等待SRAM和Flash;外部存儲器控制器(EMC)支持4個BANK的外部SRAM或Flash,每個BANK最多16MB;系統(tǒng)功能包括維持芯片工作的一些基本功能,如系統(tǒng)時(shí)鐘、復(fù)位等;向量中斷控制器(VIC)可以減少中斷的響應(yīng)時(shí)間,最多可以管理32個中斷請求;I2C串行接口為標(biāo)準(zhǔn)的I2C總線接口,支持最高速度400kb;EMC系統(tǒng)功能VICI2C串行接口芯片內(nèi)部各單元簡介ARM7TDMI-SAHBToVPBE芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能具有兩個完全獨(dú)立的SPI控制器,遵循SPI規(guī)范,可配置為SPI主機(jī)或從機(jī);具有兩個UART接口,均包含16字節(jié)的接收/發(fā)送FIFO,內(nèi)置波特率發(fā)生器。其中UART1具有調(diào)制解調(diào)器接口功能;在LPC2119/2129/2290/2292等芯片中包含CAN總線接口;看門狗定時(shí)器帶有內(nèi)部分頻器,可以方便設(shè)置溢出時(shí)間,在軟件使能看門狗后只有復(fù)位可以禁止(具有調(diào)試模式);SPI串行接口UART0&1CAN看門狗定時(shí)器芯片內(nèi)部各單元簡介ARM7TDMI-SAHBToVPBE芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能系統(tǒng)控制模塊包括一些與其它外設(shè)無關(guān)的功能,如功率控制等;外部中斷有4路多引腳輸入,可用于CPU掉電喚醒;定時(shí)器0/1為兩個獨(dú)立的帶可編程32位預(yù)分頻器的32位定時(shí)器/計(jì)數(shù)器,具有捕獲和匹配輸出功能;具有4/8路10位ADC,可以設(shè)置為多路循環(huán)采樣模式。10位轉(zhuǎn)換時(shí)間最短為2.44us;系統(tǒng)控制外部中斷TIMER0/1ADC芯片內(nèi)部各單元簡介ARM7TDMI-SAHBToVPBE芯片內(nèi)部各單元簡介ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時(shí)器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實(shí)時(shí)時(shí)鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能不同封裝的芯片具有數(shù)目不等的IO口,它們可以承受5V電壓。每個IO口可以獨(dú)立設(shè)置為輸入/輸出模式,在作為輸出模式時(shí)可以分別置位或清零;脈寬調(diào)制器可以靈活設(shè)置,以適應(yīng)不同的場合??梢栽O(shè)置為單邊沿或雙邊沿輸出方式,可以靈活的設(shè)置頻率和占空比;實(shí)時(shí)時(shí)鐘具有可編程的寄存時(shí)鐘分頻器,以適應(yīng)不同的晶振頻率。帶日歷和時(shí)鐘功能,提供秒、分、時(shí)、日、月、年和星期,同時(shí)具有非常的功耗。通用I/OPWM0實(shí)時(shí)時(shí)鐘芯片內(nèi)部各單元簡介ARM7TDMI-SAHBToVPBE第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時(shí)器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實(shí)時(shí)時(shí)鐘18.看門狗第5章目錄1.簡介10.UART05.2引腳配置LPC2000系列芯片外形LPC2210/2212/2214LPC2114/21245.2引腳配置LPC2000系列芯片外形LPC2210/GPIOTXD0PWM1輸出P0.05.2引腳配置引腳功能選擇使用例如LPC2000系列微控制器的引腳一般是多個功能復(fù)用,但是同一引腳在同一時(shí)刻只能使用其中一個功能,這可以通過設(shè)置PINSELx寄存器來選擇,詳細(xì)介紹見“引腳連接模塊”小節(jié)。通過PINSEL0控制引腳功能GPIOTXD0PWM1輸出P0.05.2引腳配置引腳功第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時(shí)器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實(shí)時(shí)時(shí)鐘18.看門狗第5章目錄1.簡介10.UART0小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布5.3存儲器尋址地址空間0xFFFFFFFF0x00000000內(nèi)部Flash0x40000000內(nèi)部SRAM0x80000000外部存儲器0x7FFFE000BootBlock片外存儲器片內(nèi)存儲器一個具體應(yīng)用可能存在的物理存儲器5.3存儲器尋址地址空間0xFFFFFFFF0x00000256K16K5.3存儲器尋址不同芯片內(nèi)部存儲器分布16K128K16KLPC2210LPC2114/2212LPC2124/2214片內(nèi)Flash片內(nèi)RAM

0x000000000x0001FFFF0x0003FFFF0x400000000x40001FFF256K16K5.3存儲器尋址不同芯片內(nèi)部存儲器分布16K小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布5.3存儲器尋址片內(nèi)Flash編程方法:JTAG串口1.通過內(nèi)置JTAG接口;2.通過在系統(tǒng)編程(ISP),使用UART0通信;3.通過在應(yīng)用編程(IAP);5.3存儲器尋址片內(nèi)Flash編程方法:JTAG串口1.5.3存儲器尋址片外Flash編程方法(LPC2200):在CPU上運(yùn)行一個裝載程序(Loader,一般由用戶編寫),該程序通過串口接收要燒寫的數(shù)據(jù),然后擦除編程Flash。串口Loder程序外部Flash5.3存儲器尋址片外Flash編程方法(LPC2200):5.3存儲器尋址片內(nèi)SRAM的寫操作SRAM控制器包含一個回寫緩沖區(qū),它總是保存著軟件發(fā)送到SRAM的最后一個字?jǐn)?shù)據(jù)。該數(shù)據(jù)只有在軟件請求下一次寫操作時(shí)才寫入SRAM。如果發(fā)生芯片復(fù)位,實(shí)際的SRAM內(nèi)容將不會反映最近一次的寫操作。??回寫緩沖區(qū)內(nèi)部SRAM寫入地址寫入A寫入BAA寫入AB5.3存儲器尋址片內(nèi)SRAM的寫操作SRAM控制器小節(jié)目錄存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布5.3存儲器尋址存儲器映射根本概念A(yù)RM處理器產(chǎn)生的地址叫虛擬地址,把這個虛擬地址按照某種規(guī)則轉(zhuǎn)換到另一個物理地址去的方法稱為地址映射。這個物理地址表示了被訪問的存儲器的位置。它是一個地址范圍,該范圍內(nèi)可以寫入程序代碼。通過地址映射的方法將各存儲器分配到特定的地址范圍后,這時(shí)用戶所看見的存儲器分布為存儲器映射。5.3存儲器尋址存儲器映射根本概念A(yù)RM處理5.3存儲器尋址芯片復(fù)位后用戶看見的地址空間128KBFlash(LPC2114/2212)256KBFlash(LPC2124/2214)16KBSRAM8KBBootBlock2MBVPB外設(shè)2MBAHB外設(shè)0x000000000xFFFFFFFF保留給片內(nèi)存儲器使用保留給片內(nèi)存儲器使用保留給外部存儲器使用0x400000000xE00000000x800000000xF00000000x00020000地址空間5.3存儲器尋址芯片復(fù)位后用戶看見的地址空間128KBFl5.3存儲器尋址AHB和VPBAHB(先進(jìn)的高性能總線)和VPB(VLSI外設(shè)總線)外設(shè)區(qū)域都為2M字節(jié),可各分配128個外設(shè)。每個外設(shè)空間的規(guī)格都為16K字節(jié),這樣就簡化了每個外設(shè)的地址譯碼。注意:AHB和VPB外設(shè)區(qū)域中不管是字還是半字,都是一次性訪問。例如不可能對一個字寄存器的最高字節(jié)執(zhí)行單獨(dú)的讀或?qū)懖僮?.3存儲器尋址AHB和VPBAHB(先進(jìn)的高性能總5.3存儲器尋址外設(shè)存儲器映射VPB外設(shè)AHB外設(shè)保留3.5GB3.5GB+2MB4.0GB-2MB地址空間4.0GB0xE00000000xE00000000xFFE000000xFFE00000VPB外設(shè)AHB外設(shè)均為128×16KB(2MB)范圍5.3存儲器尋址外設(shè)存儲器映射VPB外設(shè)AHB外設(shè)保留35.3存儲器尋址AHB外設(shè)映射AHB外設(shè)#126地址空間0xFFE000000xFFE040000xFFFF40000xFFFF8000AHB外設(shè)#125AHB外設(shè)#0AHB外設(shè)#10xFFFFF000…0xFFFFC000向量中斷控制器AHB外設(shè)#1275.3存儲器尋址AHB外設(shè)映射AHB外設(shè)#126地址空間05.3存儲器尋址VPB外設(shè)映射VPB外設(shè)#3地址空間0xE00000000xE00040000xE00080000xE000C000VPB外設(shè)#2VPB外設(shè)#0VPB外設(shè)#10xE01FC000…VPB外設(shè)#127看門狗定時(shí)器定時(shí)器0系統(tǒng)控制模塊定時(shí)器1UART05.3存儲器尋址VPB外設(shè)映射VPB外設(shè)#3地址空間0xE5.3存儲器尋址Bootlock的映射地址安排為了兼容將來的器件,整個BootBlock被映射到片內(nèi)存儲器空間的頂端。所以將來的芯片內(nèi)置不同的RAM和FALSH都不會影響B(tài)ootBlock的位置。地址空間FlashSRAMBootBlockAHB&VPB映射位置固定在內(nèi)部存儲器頂端RAM和Flash的變化不會影響B(tài)ootBlock的位置SRAMFlash0x800000005.3存儲器尋址Bootlock的映射地址安排為了5.3存儲器尋址存儲器重新映射存儲器重新映射是將復(fù)位后用戶所見的存儲器中部分區(qū)域,再次映射到其它的地址上。對于Philips的LPC系列ARM微控制器,存儲器重新映射區(qū)域一共為64字節(jié),分別為異常向量區(qū)(32字節(jié))和緊隨其后的32字節(jié)。存儲器重新映射的方法允許在不同模式下處理中斷,重新映射的存儲器區(qū)域在地址0x00000000~0x0000003F處。存儲器重新映射的控制見“存儲器映射控制”小節(jié)。5.3存儲器尋址存儲器重新映射存儲器重新映射是將復(fù)位存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布小節(jié)目錄5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常如果試圖訪問一個保留地址或未分配區(qū)域的地址,ARM處理器將產(chǎn)生預(yù)取指中止或數(shù)據(jù)中止異常。5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常如果試圖訪5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常這些區(qū)域分別為:FlashSRAMBootBlockVPB地址空間AHB1.特定的ARM器件所沒有的存儲器映射區(qū)域;2.AHB外設(shè)空間中未分配的區(qū)域;3.VPB外設(shè)空間中未分配的區(qū)域。5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常這些區(qū)域分別為:Fl5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常注意:

只有在試圖執(zhí)行從非法地址取指的指令時(shí),ARM才會將預(yù)取指中止標(biāo)志與相關(guān)的指令(沒有意義的指令)一起保存到流水線并對中止進(jìn)行處理。當(dāng)代碼在非??拷鎯ζ鬟吔鐖?zhí)行時(shí),防止由預(yù)取指所導(dǎo)致的意外中止。5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常注意:5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)取指譯碼執(zhí)行存儲器程序存儲器第N次取指5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C第N+1次取指5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)無效指令指令C指令B取指譯碼執(zhí)行存儲器程序存儲器第N+1次取指5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指第N+2次取指5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A(yù)存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A(yù)無效指令指令C指令B取指譯碼執(zhí)行無效指令無效指令指令C存儲器程序存儲器第N+2次取指5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指5.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ā)生。5.3存儲器尋址預(yù)取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C存儲器分布各存儲器操作方法存儲器映射預(yù)取指中止和數(shù)據(jù)中止異常向量表小節(jié)目錄存儲器分布小節(jié)目錄5.3存儲器尋址異常向量表對于每一個異常事件,都有一個與之相對應(yīng)的處理程序,它們是關(guān)聯(lián)在一起的,并以一張一維表的格式存儲在存儲器的固定單元中。這張指定了各異常中斷及其處理程序的對應(yīng)關(guān)系的表,稱為異常向量表。5.3存儲器尋址異常向量表對于每一個異常事件,都有一5.3存儲器尋址異常向量表地址異常0x00000000復(fù)位0x00000004未定義指令0x00000008軟件中斷0x0000000C預(yù)取指中止(從存儲器取指出錯)0x00000010數(shù)據(jù)中止(訪問存儲器數(shù)據(jù)出錯)0x00000014保留*0x00000018IRQ0x0000001CFIQ各異常向量的固定位置該位置被Boot裝載程序用作有效用戶程序的檢測標(biāo)志。通過定義此保留值,使向量表所有數(shù)據(jù)32位累加和為0,芯片復(fù)位后才能脫機(jī)運(yùn)行用戶程序。5.3存儲器尋址異常向量表地址異常0x00000000復(fù)位5.3存儲器尋址位于啟動代碼中的異常向量表什么是啟動代碼?一般在32位ARM應(yīng)用系統(tǒng)中,大多數(shù)采用C語言進(jìn)行軟件編程。但是在運(yùn)行應(yīng)用代碼前需要進(jìn)行系統(tǒng)初始化。常用一個匯編文件作啟動代碼,它可以實(shí)現(xiàn)異常向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷系統(tǒng)初始化、I/O初始化、外圍部件初始化、地址重映射等操作。5.3存儲器尋址位于啟動代碼中的異常向量表什么是啟動代碼?位于啟動代碼中的異常向量表CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler前32字節(jié)為異常入口后32字節(jié)為跳轉(zhuǎn)地址異常向量表位于啟動代碼中的異常向量表CODE32前位于啟動代碼中的異常向量表CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler異常向量表例如:發(fā)生未定義異常時(shí)1.程序計(jì)數(shù)器(PC)指向0x00000004;2.執(zhí)行當(dāng)前的指令,將Undefined地址值裝入PC,實(shí)現(xiàn)至未定義異常處理程序的跳轉(zhuǎn)。裝入位于啟動代碼中的異常向量表CODE32異常位于啟動代碼中的異常向量表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位于啟動代碼中的異常向量表CODE32異常第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時(shí)器0/115.脈寬調(diào)制器(PWM)16.A/D轉(zhuǎn)換器17.實(shí)時(shí)時(shí)鐘18.看門狗第5章目錄1.簡介10.UART05.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時(shí)器5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時(shí)器5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述5.4系統(tǒng)控制模塊系統(tǒng)控制模塊概述系統(tǒng)控制模塊包括一些系統(tǒng)構(gòu)件和控制寄存器,它們具有眾多與芯片內(nèi)其它外設(shè)無關(guān)的功能。系統(tǒng)控制模塊包括:系統(tǒng)時(shí)鐘單元、復(fù)位、外部中斷輸入、存儲器映射控制、功率控制和喚醒定時(shí)器。5.4系統(tǒng)控制模塊系統(tǒng)控制模塊概述系統(tǒng)控制模塊包5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時(shí)器5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述晶體振蕩器〔5.4.4〕PLL〔5.4.9〕VPB分頻器〔5.4.10〕系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述晶體振蕩器〔5.4.4〕PLL〔5.4.9〕VPB分頻器〔5.4.10〕系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘概述CPU正常工作需要有合適的時(shí)鐘信號,包括ARM7內(nèi)核使用的CCLK時(shí)鐘,和芯片外設(shè)使用的PCLK時(shí)鐘。通過LPC2000系列微控制器的時(shí)鐘產(chǎn)生單元產(chǎn)生ARM7內(nèi)核和芯片外設(shè)正常工作所需要的時(shí)鐘節(jié)拍。系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘概述CPU正常工作需要有合適的時(shí)鐘信系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘概述ARM7核橋外設(shè)時(shí)鐘產(chǎn)生FCCLKFPCLKFOSCCPU時(shí)鐘結(jié)構(gòu)系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘概述ARM7核橋外設(shè)時(shí)鐘產(chǎn)生FCCLKFPC系統(tǒng)時(shí)鐘時(shí)鐘產(chǎn)生單元時(shí)鐘產(chǎn)生單元包括晶體振蕩器、鎖相環(huán)振蕩器(PLL)和VPB分頻器。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC系統(tǒng)時(shí)鐘時(shí)鐘產(chǎn)生單元時(shí)鐘產(chǎn)生單元包括晶體振蕩器、鎖相環(huán)振蕩系統(tǒng)時(shí)鐘概述晶體振蕩器〔5.4.4〕PLL〔5.4.9〕VPB分頻器〔5.4.10〕系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘晶體振蕩器LPC2000微控制器可以使用內(nèi)部的晶體振蕩器產(chǎn)生時(shí)鐘信號,也可以從外部引入時(shí)鐘信號。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式系統(tǒng)時(shí)鐘晶體振蕩器LPC2000微控制器可以使用內(nèi)部系統(tǒng)時(shí)鐘晶體振蕩器使用從屬模式時(shí),時(shí)鐘信號通過X1引腳從外部輸入,輸入頻率范圍:1~50(MHz),其幅度不小于200mVrms。LPC2000X1X2ClockCC從屬模式系統(tǒng)時(shí)鐘晶體振蕩器使用從屬模式時(shí),時(shí)鐘信號通過X1引腳系統(tǒng)時(shí)鐘晶體振蕩器使用振蕩模式時(shí),時(shí)鐘信號由內(nèi)部晶體振蕩器和外部連接的晶體振蕩產(chǎn)生,振蕩頻率范圍:1~30(MHz)。LPC2000X1X2CX1CX2XTAL振蕩模式系統(tǒng)時(shí)鐘晶體振蕩器使用振蕩模式時(shí),時(shí)鐘信號由內(nèi)部晶體系統(tǒng)時(shí)鐘晶體振蕩器注意:如果使用了ISP下載功能或者連接PLL提高頻率,則輸入的時(shí)鐘頻率范圍必須在10~25(MHz)之間。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式系統(tǒng)時(shí)鐘晶體振蕩器注意:如果使用了ISP下載功能或者連接PL系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述晶體振蕩器〔5.4.4〕PLL〔5.4.9〕VPB分頻器〔5.4.10〕系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕由晶體振蕩器輸出的時(shí)鐘信號,通過PLL升頻,可以獲得更高的系統(tǒng)時(shí)鐘(CCLK)。PLL接受的輸入時(shí)鐘頻率范圍為10~25MHz,通過一個電流控制振蕩器(CCO)倍增到10~60MHz。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC10MHz~25MHz10MHz~60MHzPLL系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕由晶體振蕩器輸出的時(shí)鐘信號,PLL內(nèi)部構(gòu)造相位頻率檢測CCO10/2P分頻M分頻0101FOSCFCCOFCLK晶體振蕩器輸入時(shí)鐘對輸入的兩路時(shí)鐘信號進(jìn)行相位頻率檢測,將兩者差值以電流形式輸出電流控制振蕩器,根據(jù)輸入電流控制振蕩頻率對輸入時(shí)鐘分頻輸入時(shí)鐘2選1開關(guān)PLL內(nèi)部構(gòu)造相位頻率CCO1/2PM00FOSCFCCOFPLL內(nèi)部構(gòu)造相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)CCO自由振蕩,輸出頻率FCCO根據(jù)兩個輸入時(shí)鐘的相位偏差,控制CCO。當(dāng)兩個時(shí)鐘相位同步時(shí),回路鎖定。PLL內(nèi)部構(gòu)造相位頻率CCO12PM00FOSCFCCOFCPLL相關(guān)存放器(參考P168)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL控制寄存器(PLLCON):位76543210功能------PLLCPLLEPLLE:PLL使能,該位為1時(shí)將激活PLL并允許其鎖定到指定的頻率;PLLC:PLL連接,當(dāng)PLLE為1,并且在PLL鎖定后,該位為1,將把PLL作為時(shí)鐘源連接到CPU,否則直接使用振蕩器時(shí)鐘。PLLCPLLEPLL相關(guān)存放器(參考P168)相位頻率CCO12PM00F相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK位76543210功能------PLLCPLLE注:其中“-”表示該位保留,用戶不要向該位寫入1,讀取的值將不確定PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率CCO12PM00FOSCFCCOFCLK位7654相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLLCPLLEPLL功能00PLL被關(guān)閉,并斷開連接。01PLL被激活但是尚未連接??梢栽赑LOCK置位后連接。10與00組合相同。避免PLL已連接,當(dāng)還沒有使能的情況。11PLL已經(jīng)使能,并連接到處理器作為系統(tǒng)時(shí)鐘源。PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率CCO12PM00FOSCFCCOFCLKPLLCP相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL配置寄存器(PLLCFG):位76543210功能-PSEL[1:0]MSEL[4:0]MSEL[4:0]:PLL分頻器值,在PLL頻率計(jì)算中其值為(M-1);PSEL[1:0]:PLL分頻器值,在PLL頻率計(jì)算中其值為P。PLL相關(guān)存放器相位頻率CCO12PM00FOSCFCCOFCLKPLL配置相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL狀態(tài)寄存器(PLLSETA):位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時(shí),PLL未鎖定;為1時(shí),PLL鎖定到指定頻率。PLL相關(guān)寄存器相位頻率CCO12PM00FOSCFCCOFCLKPLL狀態(tài)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL饋送寄存器(PLLFEED):PLLFEDD[7:0]:PLL饋送序列必須寫入該寄存器才能使PLL配置和控制寄存器的更改生效;位76543210功能PLLFEED[7:0]PLL相關(guān)存放器相位頻率CCO12PM00FOSCFCCOFCLKPLL饋送相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK饋送序列為:1.將值0xAA寫入PLLFEED;2.將值0x55寫入PLLFEED。位76543210功能PLLFEED[7:0]PLL相關(guān)存放器PLL饋送寄存器(PLLFEED):相位頻率CCO12PM00FOSCFCCOFCLK饋送序列為PLL頻率計(jì)算回路鎖定后:FOSC=FCCO/(2P×M)FCLK=FOSC×M相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)FOSC:晶振頻率;FCCO:CCO振蕩器輸出頻率FCCLK:處理器時(shí)鐘頻率;M:PLL倍頻值P:PLL分頻值必須滿足的條件:FOSC范圍:10MHz~25MHz;FCCLK范圍:10MHz~60MHz;FCCO范圍:156MHz~320MHz;PLL頻率計(jì)算回路鎖定后:FOSC=FCCO/(2P系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕計(jì)算流程1.選擇處理器的工作頻率(CCLK)2.選擇振蕩器頻率(FOSC)3.計(jì)算M值配置MSEL位4.計(jì)算P值配置PSEL位根據(jù)處理器的整體要求、UART波特率的支持等因素來決定。外圍器件的時(shí)鐘頻率可以低于處理器頻率CCLK必須為FOSC的整數(shù)倍。M=CCLK/FOSC,取值范圍1~32。寫入MSEL的值為(M-1)。選擇合適的P值,使FCCO在限制范圍內(nèi)。P只能取1、2、4或8。寫入PSEL的值為P。系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕計(jì)算流程1.選擇處理器的2.選擇振蕩系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕計(jì)算實(shí)例系統(tǒng)要求:FOSC=10MHz、CCLK=60MHz1.計(jì)算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)時(shí)鐘鎖相環(huán)〔PLL〕計(jì)算實(shí)例系統(tǒng)要求:FOSC=10MH系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕注意要點(diǎn)PLL在芯片復(fù)位或進(jìn)入掉電模式時(shí)被關(guān)閉并旁路,在掉電喚醒后不會自動恢復(fù)PLL的設(shè)定;PLL只能通過軟件使能;PLL在激活后必須等待其鎖定,然后才能連接;PLL如果設(shè)置不當(dāng)將會導(dǎo)致芯片的錯誤操作。系統(tǒng)時(shí)鐘鎖相環(huán)〔PLL〕注意要點(diǎn)PLL在芯片復(fù)位或進(jìn)入掉電模系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述晶體振蕩器〔5.4.4〕PLL〔5.4.9〕VPB分頻器〔5.4.10〕系統(tǒng)時(shí)鐘小節(jié)目錄系統(tǒng)時(shí)鐘概述系統(tǒng)時(shí)鐘VPB分頻器VPB分頻器將PLL輸出的時(shí)鐘信號分頻后作為芯片外設(shè)的時(shí)鐘。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSCVPB分頻器系統(tǒng)時(shí)鐘VPB分頻器VPB分頻器將PLL輸出的時(shí)鐘信號分頻后系統(tǒng)時(shí)鐘VPB分頻器VPB分頻器決定處理器時(shí)鐘(CCLK)與外設(shè)器件所使用的時(shí)鐘(PCLK)之間的關(guān)系。VPB用途1:通過VPB總線為外設(shè)提供所需的PCLK時(shí)鐘,以便外設(shè)在合適的速度下工作;VPB用途2:在應(yīng)用不需要任何外設(shè)全速運(yùn)行時(shí)使功耗降低。系統(tǒng)時(shí)鐘VPB分頻器VPB分頻器決定處理器時(shí)鐘(CC系統(tǒng)時(shí)鐘VPB分頻器相關(guān)存放器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]:設(shè)置分頻值,可以設(shè)定3個值;XCLKDIV[1:0]:這些位用于控制LPC2200系列微控制器A23/XCLK引腳上的時(shí)鐘驅(qū)動,取值編碼方式與VPBDIV相同;系統(tǒng)時(shí)鐘VPB分頻器相關(guān)存放器位76543210功能--XC系統(tǒng)時(shí)鐘VPB分頻器相關(guān)存放器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]說明00VPB總線時(shí)鐘為處理器時(shí)鐘的1/4。01VPB總線時(shí)鐘與處理器時(shí)鐘相同。10VPB總線時(shí)鐘為處理器時(shí)鐘的1/2。11保留。寫入該值將不改變分頻值。系統(tǒng)時(shí)鐘VPB分頻器相關(guān)存放器位76543210功能--XC系統(tǒng)時(shí)鐘初始化流程使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列系統(tǒng)時(shí)鐘初始化流程使能PLL設(shè)置VPB分頻值PLL系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例//應(yīng)當(dāng)與實(shí)際一至晶振頻率,10MHz~25MHz,應(yīng)當(dāng)與實(shí)際一至#defineFosc11059200//系統(tǒng)頻率,必須為Fosc的整數(shù)倍(1~32),且<=60MHZ#defineFcclk(Fosc*4)//CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz#defineFcco(Fcclk*4)//VPB時(shí)鐘頻率,只能為(Fcclk/4)的1、2、4倍#defineFpclk(Fcclk/4)*1將系統(tǒng)內(nèi)各時(shí)鐘的頻率定義為宏,方便用戶操作。設(shè)置晶振頻率設(shè)置內(nèi)核工作頻率設(shè)置CCO輸出頻率設(shè)置外設(shè)工作頻率系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例//應(yīng)當(dāng)與實(shí)際一至晶振頻率,1系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例使能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)時(shí)鐘初始化——啟動代碼實(shí)例使能PLL設(shè)置VPB系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例使能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)時(shí)鐘初始化——啟動代碼實(shí)例使能PLL設(shè)置VPB系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例使能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的控制和配置寄存器后,必須寫入饋送序列,使修改生效。系統(tǒng)時(shí)鐘初始化——啟動代碼實(shí)例使能PLL設(shè)置VPB5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時(shí)器5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述復(fù)位復(fù)位的分類外部復(fù)位 —把nRESET引腳拉為低電平,并保持一個最小時(shí)間,引發(fā)復(fù)位看門狗復(fù)位 —通過設(shè)置看門狗相關(guān)存放器,當(dāng)看門狗定時(shí)器溢出后,引發(fā)復(fù)位復(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)定運(yùn)行且X1引腳上已出現(xiàn)穩(wěn)定信號時(shí),nRESET引腳的復(fù)位信號只需保持至少300ns時(shí)間。復(fù)位外部復(fù)位注意:1.在芯片未上電時(shí),芯片振蕩器沒有工作;復(fù)位UX1tLPC2xxxnRESET電源輸入X1X2外部復(fù)位1.在芯片未上電時(shí),芯片振蕩器沒有工作;復(fù)位UX1tLPC復(fù)位振蕩器穩(wěn)定需要一段時(shí)間UX1tLPC2xxxnRESET電源輸入X1X2外部復(fù)位2.芯片上電后,晶體振蕩器開始振蕩。因?yàn)檎袷帍拈_始到穩(wěn)定需要一過程,所以外部復(fù)位信號至少要保持10ms;>=10ms復(fù)位振蕩器穩(wěn)定需要一段時(shí)間UX1tLPC2xxxnRESET>=300ns復(fù)位UX1t此時(shí)振蕩器穩(wěn)定工作外部復(fù)位LPC2xxxnRESET電源輸入X1X23.在晶體振蕩器保持穩(wěn)定振蕩,或者使用有源鐘振時(shí),外部復(fù)位信號可以縮短到不小于300ns;>=300ns復(fù)位UX1t此時(shí)振蕩器穩(wěn)定工作外部復(fù)位LPC2復(fù)位任何復(fù)位源引起的芯片復(fù)位都會啟動喚醒定時(shí)器,當(dāng)計(jì)數(shù)到一個固定個數(shù)的時(shí)鐘時(shí),處理器開始執(zhí)行指令。這確保振蕩器和芯片所需要的其它模擬電路在處理器開始執(zhí)行指令之前能夠正確工作。外部復(fù)位與內(nèi)部看門狗復(fù)位的共同點(diǎn)復(fù)位任何復(fù)位源引起的芯片復(fù)位都會啟動喚醒定時(shí)器,當(dāng)計(jì)復(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ù)位與內(nèi)部看門狗復(fù)位的區(qū)別外部復(fù)位將把某幾個復(fù)位復(fù)位后的系統(tǒng)狀態(tài)芯片被復(fù)位后,處理器和外設(shè)寄存器都恢復(fù)為默認(rèn)狀態(tài)。程序計(jì)數(shù)器(PC)值為0,即CPU復(fù)位后運(yùn)行的第一條代碼位于0x00000000處。此時(shí)位于該地址的程序并不位于片內(nèi)Flash,而是來自BootBlock的異常向量表的重新映射。通過異常向量表的復(fù)位異常入口,程序跳轉(zhuǎn)至BootBlock中執(zhí)行Boot程序。復(fù)位復(fù)位后的系統(tǒng)狀態(tài)芯片被復(fù)位后,處理器和外設(shè)寄存器復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間1.復(fù)位后用戶見到的存儲器分布復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockA2.BootBlock中的異常向量表重新映射復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000000x000000040x000000080x000000402.BootBlock中的異常向量表重新映射復(fù)位復(fù)位后的系PC指向3.PC指向0x0000地址處,CPU執(zhí)行復(fù)位后的第一條指令復(fù)位復(fù)位后的系統(tǒng)狀態(tài)FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000040x000000080x00000040PC指向3.PC指向0x0000地址處,CPU執(zhí)行復(fù)位后的4.通過跳轉(zhuǎn)指令,程序跳入BootBlock,執(zhí)行Boot程序。復(fù)位復(fù)位后的系統(tǒng)狀態(tài)PC指向FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空間復(fù)位異常入口未定義異常入口軟件中斷入口...0x000000040x000000080x000000404.通過跳轉(zhuǎn)指令,程序跳入BootBlock,執(zhí)行Boo復(fù)位Boot程序Boot程序是芯片生產(chǎn)廠家固化在芯片中的一段代碼,它完成芯片復(fù)位后的初始化操作,并提供實(shí)現(xiàn)Flash編程的方法。Boot裝載程序可啟動對空片的編程、已編程器件的擦除和再編程,以及在運(yùn)行的系統(tǒng)中由應(yīng)用程序?qū)lash存儲器進(jìn)行編程。復(fù)位Boot程序Boot程序是芯片生產(chǎn)廠家固化在芯片Boot程序工作流程——LPC2114/2124復(fù)位運(yùn)行ISP服務(wù)程序看門狗復(fù)位根據(jù)硬件(P1.20、P1.26)配置進(jìn)入ISP狀態(tài)嗎?(P0.14為低)初始化用戶代碼是否有效執(zhí)行用戶代碼(片內(nèi)Flash:0x00000000)NYYYNN在此檢測特定引腳檢測用戶代碼是否有效Boot程序工作流程——LPC2114/2124復(fù)位運(yùn)行ISBoot程序工作流程——LPC2210/2212/2214復(fù)位看門狗復(fù)位進(jìn)入ISP模式?(P0.14為低)初始化用戶代碼是否有效芯片加密允許調(diào)試外部引導(dǎo)芯片加密運(yùn)行ISP服務(wù)程序執(zhí)行外部用戶代碼(0x80000000)執(zhí)行內(nèi)部用戶代碼(0x00000000)NNYYNNNNYYYY在此檢測特定引腳檢測用戶代碼是否有效Boot程序工作流程——LPC2210/2212/2214復(fù)復(fù)位有效用戶代碼的判別LPC2000系列微控制器規(guī)定“內(nèi)部Flash中向量表所有數(shù)據(jù)的32位累加為零”時(shí),判定內(nèi)部Flash中的代碼為有效可執(zhí)行代碼。即只有當(dāng)向量表所有數(shù)據(jù)32位累加和為零時(shí),用戶的程序才能脫機(jī)運(yùn)行。復(fù)位有效用戶代碼的判別LPC2000系列微控制器規(guī)定有效用戶代碼的判別CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler異常向量表前32字節(jié)為異常入口后32字節(jié)為跳轉(zhuǎn)地址有效用戶代碼的判別CODE32異常向量表有效用戶代碼的判別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異常向量表反匯編代碼前32字節(jié)有效用戶代碼的判別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異常向量表反匯編代碼指令的機(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異常向量表反匯編代碼8條指令的機(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,表示用戶代碼有效有效用戶代碼的判別[0x00000000][0xe59ff018][0xe59ff018]...[0xb9205f80][0xe51ffff0][0xe59ff018]跳轉(zhuǎn)地址數(shù)據(jù)不在累加范圍內(nèi)通過調(diào)整該保留字,使累加和為0Reset異常向量表反匯編代碼8條指令的機(jī)器碼累加和為0,表5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時(shí)鐘復(fù)位外部中斷存儲器映射控制功率控制喚醒定時(shí)器5.4系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述外部中斷外部中斷外部中斷是通過引腳輸入符合要求的信號而觸發(fā)的中斷。LPC2114/2124/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)管腳外部中斷外部中斷掉電中斷標(biāo)志CPUPINSELxEXTP外部中斷相關(guān)存放器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0該寄存器控制著外部中斷輸入信號的極性,其中低四位EXTPOLAR[3:0])分別對應(yīng)外部中斷3~0。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷極性控制外部中斷相關(guān)存放器外部中斷極性控制寄存器(EXTPOLAR)外部中斷相關(guān)存放器外部中斷3外部中斷2外部中斷1外部中斷0(EINT3)(EINT2)(EINT1)(EINT0)分別控制著外部中斷相關(guān)寄存器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷相關(guān)存放器外部中斷3外部中斷2當(dāng)EXTPOLARx設(shè)置為1時(shí)EINTx引腳輸入信號高電平或上升沿有效。當(dāng)EXTPOLARx設(shè)置為0時(shí)EINTx引腳輸入信號低電平或下降沿有效。外部中斷相關(guān)存放器外部中斷相關(guān)寄存器外部中斷極性控制寄存器(EXTPOLAR):位7:43210功能-EXTPOLAR3EXTPOLAR2EXTPOLAR1EXTPOLAR0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE當(dāng)EXTPOLARx設(shè)置為1時(shí)EINTx引腳輸入信號高電平或外部中斷相關(guān)存放器外部中斷方式控制寄存器(EXTMODE):位7:43210功能-EXTMODE3EXTMODE2EXTMODE1EXTMODE0該寄存器控制著外部中斷輸入信號的有效觸發(fā)方式,其中低四位(EXTMODE[3:0])分別對應(yīng)外部中斷3~0。外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷方式控制外部中斷相關(guān)存放器外部中斷方式控制寄存器(EXTMODE):當(dāng)EXTMODEx設(shè)置為0時(shí)輸入信號為電平觸發(fā)有效。當(dāng)EXTMODEx設(shè)置為1時(shí)輸入信號為邊沿觸發(fā)有效。外部中斷相關(guān)存放器外部中斷方式控制寄存器(EXTMODE):位7:43210功能-EXTMODE3EXTMODE2EXTMODE1EXTMODE0外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE當(dāng)EXTMODEx設(shè)置為0時(shí)輸入信號為電平觸發(fā)有效。外部中斷外部中斷相關(guān)存放器極性與方式控制的組合關(guān)系:外部中斷相關(guān)寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷極性控制寄存器(EXTPOLAR)外部中斷方式控制寄存器(EXTMODE)外部中斷觸發(fā)信號波形說明00低電平01下降沿10高電平11上升沿外部中斷相關(guān)存放器極性與方式控制的組合關(guān)系:外部中斷相關(guān)寄存外部中斷相關(guān)存放器外部中斷喚醒寄存器(EXTWAKE):位7:43210功能-EXTWAKE3EXTWAKE2EXTWAKE1EXTWAKE0設(shè)置該寄存器允許相應(yīng)的外部中斷將處理器從掉電模式喚醒。實(shí)現(xiàn)掉電喚醒不需要在向量中斷控制器(VIC)中使能相應(yīng)的中斷。該寄存器的低四位(EXTWAKE[3:0])分別對應(yīng)外部中斷3~0。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE掉電喚醒控制外部中斷相關(guān)存放器外部中斷喚醒寄存器(EXTWAKE):位7外部中斷相關(guān)存放器當(dāng)EXTWAKEx設(shè)置為1時(shí)對應(yīng)的外部中斷將處理器從掉電模式喚醒。外部中斷喚醒寄存器(EXTWAKE):位7:43210功能-EXTWAKE3EXTWAKE2EXTWAKE1EXTWAKE0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷相關(guān)存放器當(dāng)EXTWAKEx設(shè)置為1時(shí)對應(yīng)的外部中斷外部中斷相關(guān)存放器外部中斷標(biāo)志寄存器(EXTINT):位7:43210功能-EINT3EINT2EINT1EINT0若引腳上出現(xiàn)了符合要求的信號,EXTINT寄存器中對應(yīng)的中斷標(biāo)志將被置位。向該寄存器的EINT0~EINT3位寫入1,可將其清零。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE中斷標(biāo)志外部中斷相關(guān)存放器外部中斷標(biāo)志寄存器(EXTINT):位7注意:在電平觸發(fā)方式下,清除中斷標(biāo)志只有在引腳處于無效狀態(tài)時(shí)才可實(shí)現(xiàn)。比如設(shè)置為低電平中斷,則只有在中斷引腳恢復(fù)為高電平后才能清除中斷標(biāo)志。外部中斷相關(guān)存放器外部中斷標(biāo)志寄存器(EXTINT):位7:43210功能-EINT3EINT2EINT1EINT0管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標(biāo)志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE注意:在電平觸發(fā)方式下,清除中斷標(biāo)志只有在引腳處于無效狀態(tài)時(shí)外部中斷外部中斷引腳設(shè)置通過軟件設(shè)置引腳選擇寄存器(PINESLEx),可以將多個引腳同時(shí)作為同一個外部中斷的輸入引腳。EINT3~EINT0外部中斷的邏輯電路接收所有與之相連引腳的狀態(tài)和信號。外部中斷0(EINT0)-P0.1andP0.16RXD0外部中斷外部中斷引

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論