周立功ARM培訓精華第5章_第1頁
周立功ARM培訓精華第5章_第2頁
周立功ARM培訓精華第5章_第3頁
周立功ARM培訓精華第5章_第4頁
周立功ARM培訓精華第5章_第5頁
已閱讀5頁,還剩487頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第5章 LPC2000系列ARM硬件結構第5章 目錄q1.簡介q2.引腳配置q3.存儲器尋址q4.系統(tǒng)控制模塊q5.存儲器加速模塊q6.外部存儲器控制器q7.引腳連接模塊q8. 向量中斷控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定時器0/1q15.脈寬調制器(PWM)q16.A/D轉換器q17.實時時鐘q18.看門狗第5章 目錄q1.簡介q2.引腳配置q3.存儲器尋址q4.系統(tǒng)控制模塊q5.存儲器加速模塊q6.外部存儲器控制器q7.引腳連接模塊q8. 向量中斷控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q1

2、3.SPI接口q14.定時器0/1q15.脈寬調制器(PWM)q16.A/D轉換器q17.實時時鐘q18.看門狗5.1 簡介 LPC2000系列微控制器概述 LPC2000系列微控制器基于ARM7TDMI-S CPU內核。支持ARM和Thumb指令集,芯片內集成豐富外設,而且具有非常低的功率消耗。使該系列微控制器特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和POS機等場合。 LPC2000系列器件信息 芯片內部框圖LPC2000系列微控制器包含四大部分:ARM7TDMI-SCPUAHB To VPB橋EMCVICI2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷

3、TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能ARM7TDMI-S CPUARM7局部總線及相關部件AHB高性能總線及相關部件VLSI外設總線及相關部件 芯片內部框圖ARM7TDMI-SCPUAHB To VPB橋EMCVICI2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能LPC2000系列微控制器將ARM7TDMI-S配置為小端模式(Little-endian)。ARM7TDMI-SCPUAHB外

4、設分配了2M字節(jié)的地址范圍,它位于4G字節(jié)ARM尋址空間的最頂端。每個AHB外設都分配了16KB的地址空間。EMCVICLPC2000系列微控制器的外設功能(除中斷控制器)都連接到VPB總線。AHB到VPB的橋將VPB總線與AHB總線相連。VPB外設也分配了2M字節(jié)的地址范圍,從3.5GB地址點開始。每個VPB外設都分配了16KB的地址空間。I2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘AHB To VPB橋 芯片內部各單元簡介ARM7TDMI-SCPUAHB To VPB橋EMCVICI2C串行接口SP

5、I串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能SRAMFlash內部存儲器包括無等待SRAM和Flash;外部存儲器控制器(EMC)支持4個BANK的外部SRAM或Flash,每個BANK最多16MB;系統(tǒng)功能包括維持芯片工作的一些基本功能,如系統(tǒng)時鐘、復位等;向量中斷控制器(VIC)可以減少中斷的響應時間,最多可以管理32各中斷請求;I2C串行接口為標準的I2C總線接口,支持最高速度400kb;EMC系統(tǒng)功能VICI2C串行接口 芯片內部各單元簡介ARM7TDMI-S

6、CPUAHB To VPB橋EMCVICI2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能具有兩個完全獨立的SPI控制器,遵循SPI規(guī)范,可配置為SPI主機或從機;具有兩個UART接口,均包含16字節(jié)的接收/發(fā)送FIFO,內置波特率發(fā)生器。其中UART1具有調制解調器接口功能;在LPC2119/2129/2290/2292等芯片中包含CAN總線接口;看門狗定時器帶有內部分頻器,可以方便設置溢出時間,在軟件使能看門狗后只有復位可以禁止(具有調試模式);SPI

7、串行接口UART0 & 1CAN看門狗定時器 芯片內部各單元簡介ARM7TDMI-SCPUAHB To VPB橋EMCVICI2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能系統(tǒng)控制模塊包括一些與其它外設無關的功能,如功率控制等;外部中斷有4路多引腳輸入,可用于CPU掉電喚醒;定時器0/1為兩個獨立的帶可編程32位預分頻器的32位定時器/計數(shù)器,具有捕獲和匹配輸出功能;具有4/8路10位ADC,可以設置為多路循環(huán)采樣模式。10位轉換時間最短為2.4

8、4us;系統(tǒng)控制外部中斷TIMER0/1ADC 芯片內部各單元簡介ARM7TDMI-SCPUAHB To VPB橋EMCVICI2C串行接口SPI串行接口UART0 & 1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7 局部總線系統(tǒng)功能不同封裝的芯片具有數(shù)目不等的IO口,它們可以承受5V電壓。每個IO口可以獨立設置為輸入/輸出模式,在作為輸出模式時可以分別置位或清零;脈寬調制器可以靈活設置,以適應不同的場合??梢栽O置為單邊沿或雙邊緣輸出方式,可以靈活的設置頻率和占空比;實時時鐘具有可編程的積存時鐘分頻器,以適應不同

9、的晶振頻率。帶日歷和時鐘功能,提供秒、分、時、日、月、年和星期,同時具有非常的功耗。通用I/OPWM0實時時鐘第5章 目錄q1.簡介q2.引腳配置q3.存儲器尋址q4.系統(tǒng)控制模塊q5.存儲器加速模塊q6.外部存儲器控制器q7.引腳連接模塊q8. 向量中斷控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定時器0/1q15.脈寬調制器(PWM)q16.A/D轉換器q17.實時時鐘q18.看門狗5.2 引腳配置 LPC2000系列芯片外形LPC2210/2212/2214LPC2114/2124GPIOTXD0PWM1輸出P0.05.2 引腳配置

10、 引腳功能選擇使用示例 LPC2000系列微控制器的引腳一般是多個功能復用,但是同一引腳在同一 引腳在同一時刻只能使用其中一個功能,這可以通過設置PINSELx寄存器來選擇,詳細介紹見“引腳連接模塊”小節(jié)。通過PINSEL0控制引腳功能第5章 目錄q1.簡介q2.引腳配置q3.存儲器尋址q4.系統(tǒng)控制模塊q5.存儲器加速模塊q6.外部存儲器控制器q7.引腳連接模塊q8. 向量中斷控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定時器0/1q15.脈寬調制器(PWM)q16.A/D轉換器q17.實時時鐘q18.看門狗小節(jié)目錄 存儲器分布 各存儲

11、器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表小節(jié)目錄 存儲器分布 各存儲器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表5.3 存儲器尋址地址空間0 xFFFFFFFF0 x00000000內部Flash0 x40000000內部SRAM0 x80000000外部存儲器0 x7FFFE000Boot Block片外存儲器片內存儲器 一個具體應用可能存在的物理存儲器256K16K5.3 存儲器尋址 不同芯片內部存儲器分布16K128K16KLPC2210LPC2114/2212LPC2124/2214片內Flash片內RAM 0 x000000000 x0001FFFF0 x

12、0003FFFF0 x400000000 x40001FFF小節(jié)目錄 存儲器分布 各存儲器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表5.3 存儲器尋址 片內Flash編程方法:JTAG串口1. 通過內置JTAG接口;2. 通過在系統(tǒng)編程(ISP),使用UART0通信;3. 通過在應用編程(IAP);5.3 存儲器尋址 片外Flash編程方法(LPC2200): 在CPU上運行一個裝載程序(Loader,一般由用戶編寫),該程序通過串口接收要燒寫的數(shù)據(jù),然后擦除編程Flash。串口Loder程序外部Flash5.3 存儲器尋址 片內SRAM的寫操作 SRAM控制器包含一個回寫緩沖區(qū),

13、它總是保存著軟件發(fā)送到SRAM的最后一個字數(shù)據(jù)。該數(shù)據(jù)只有在軟件請求下一次寫操作時才寫入SRAM。如果發(fā)生芯片復位,實際的SRAM內容將不會反映最近一次的寫操作。?回寫緩沖區(qū)內部SRAM寫入地址寫入A寫入BAA寫入AB小節(jié)目錄 存儲器分布 各存儲器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表5.3存儲器尋址 存儲器映射基本概念 ARM處理器產生的地址叫虛擬地址,把這個虛擬地址按照某種規(guī)則轉換到另一個物理地址去的方法稱為地址映射。這個物理地址表示了被訪問的存儲器的位置。它是一個地址范圍,該范圍內可以寫入程序代碼。 通過地址映射的方法將各存儲器分配到特定的地址范圍后,這時用戶所看見的存儲

14、器分布為存儲器映射。5.3存儲器尋址 芯片復位后用戶看見的地址空間128KB Flash(LPC2114/2212)256KB Flash(LPC2124/2214)16KB SRAM8KB BootBlock2MB VPB 外設2MB AHB 外設0 x000000000 xFFFFFFFF保留給片內存儲器使用保留給片內存儲器使用保留給外部儲器使用0 x400000000 xE00000000 x800000000 xF00000000 x00020000地址空間5.3存儲器尋址 AHB和VPB AHB(先進的高性能總線)和VPB(VLSI外設總線)外設區(qū)域都為2M字節(jié),可各分配128個外設

15、。每個外設空間的規(guī)格都為16K字節(jié),這樣就簡化了每個外設的地址譯碼。注意:AHB和VPB外設區(qū)域中不管是字還是半字,都是一次性訪問。例如不可能對一個字寄存器的最高字節(jié)執(zhí)行單獨的讀或寫操作5.3存儲器尋址 外設存儲器映射VPB 外設AHB 外設保留3.5GB3.5GB+2MB4.0GB-2MB地址空間4.0GB0 xE00000000 xE00000000 xFFE000000 xFFE00000VPB 外設AHB 外設均為12816KB(2MB)范圍5.3存儲器尋址 AHB外設映射AHB 外設126地址空間0 xFFE000000 xFFE040000 xFFFF40000 xFFFF8000

16、AHB 外設125AHB 外設0AHB 外設10 xFFFFF0000 xFFFFC000向量中斷控制器AHB 外設1275.3存儲器尋址 VPB外設映射VPB 外設3地址空間0 xE00000000 xE00040000 xE00080000 xE000C000VPB 外設2VPB 外設0VPB 外設10 xE01FC000VPB外設127看門狗定時器定時器0系統(tǒng)控制模塊定時器1UART 05.3存儲器尋址 Boot lock的映射地址安排 為了兼容將來的器件,整個Boot Block被映射到片內存儲器空間的頂端。所以將來的芯片內置不同的RAM和FALSH都不會影響B(tài)oot Block的位置

17、。地址空間FlashSRAMBoot BlockAHB & VPB映射位置固定在內部存儲器頂端RAM和Flash 的變化不會影響B(tài)ootBlock的位置SRAMFlash0 x800000005.3存儲器尋址 存儲器重新映射 存儲器重新映射是將復位后用戶所見的存儲器中部分區(qū)域,再次映射到其它的地址上。 對于Philips的LPC系列ARM微控制器,存儲器重新映射區(qū)域一共為64字節(jié),分別為異常向量區(qū)(32字節(jié))和緊隨其后的32字節(jié)。存儲器重新映射的方法允許在不同模式下處理中斷,重新映射的存儲器區(qū)域在地址0 x000000000 x0000003F處。存儲器重新映射的控制見“存儲器映射控制

18、”小節(jié)。5.3存儲器尋址 使用存儲器重新映射的原因使Flash存儲器中的FIQ處理程序不必考慮因為重新映射所導致的存儲器邊界問題用來處理代碼空間中段邊界仲裁的SRAM和Boot Block向量的使用大大減少為超過單字轉移指令范圍的跳轉提供空間來保存常量 存儲器分布 各存儲器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表小節(jié)目錄5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常 如果試圖訪問一個保留地址或未分配區(qū)域的地址,ARM處理器將產生預取指中止或數(shù)據(jù)中止異常。5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常這些區(qū)域分別為:FlashSRAMBoot BlockVPB地址空間AHB1.特定的ARM

19、器件所沒有的存儲器映射區(qū)域;2. AHB外設空間中未分配的區(qū)域;3. VPB外設空間中未分配的區(qū)域。5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常注意:只有在試圖執(zhí)行從非法地址取指的指令時,ARM才會將預取指中止標志與相關的指令(沒有意義的指令)一起保存到流水線并對中止進行處理。當代碼在非??拷鎯ζ鬟吔鐖?zhí)行時,防止了由預取指所導致的意外中止。5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A取指譯碼執(zhí)行存儲器程序 存儲器第N次取指第N+1次取指5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A存儲器無效區(qū)

20、域取指譯碼執(zhí)行指令C指令B指令A無效指令指令C指令B取指譯碼執(zhí)行存儲器程序 存儲器第N+2次取指5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A無效指令指令C指令B取指譯碼執(zhí)行無效指令無效指令指令C存儲器程序 存儲器5.3存儲器尋址 預取指中止和數(shù)據(jù)中止異常舉例指令流水線指令C指令B指令A存儲器無效區(qū)域取指譯碼執(zhí)行指令C指令B指令A無效指令指令C指令B取指譯碼執(zhí)行無效指令無效指令指令C無效指令無效指令無效指令存儲器程序 存儲器 第N+3次取指,此時流水線的執(zhí)行級執(zhí)行了無效指令,發(fā)生預取指中止。如果指令C為跳轉指令則可以避免預

21、取指中止的發(fā)生。 存儲器分布 各存儲器操作方法 存儲器映射 預取指中止和數(shù)據(jù)中止 異常向量表小節(jié)目錄5.3存儲器尋址 異常向量表 對于每一個異常事件,都有一個與之相對應的處理程序,它們是關聯(lián)在一起的,并以一張一維表的格式存儲在存儲器的固定單元中。這張指定了各異常中斷及其處理程序的對應關系的表,稱為異常向量表。5.3存儲器尋址 異常向量表地址異常0 x0000 0000復位0 x0000 0004未定義指令0 x0000 0008軟件中斷0 x0000 000C預取指中止(從存儲器取指出錯)0 x0000 0010數(shù)據(jù)中止(訪問存儲器數(shù)據(jù)出錯)0 x0000 0014保留 *0 x0000 00

22、18IRQ0 x0000 001CFIQ各異常向量的固定位置該位置被Boot裝載程序用作有效用戶程序的檢測標志。通過定義此保留值,使向量表所有數(shù)據(jù)32位累加和為0,芯片復位后才能脫機運行用戶程序。5.3存儲器尋址 位于啟動代碼中的異常向量表什么是啟動代碼?一般在32位ARM應用系統(tǒng)中,大多數(shù)采用C語言進行軟件編程。但是在運行應用代碼前需要進行系統(tǒng)初始化。 常用一個匯編文件作啟動代碼,它可以實現(xiàn)異常向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷系統(tǒng)初始化、I/O初始化、外圍部件初始化、地址重映射等操作。 位于啟動代碼中的異常向量表 CODE32 AREA vectors,CODE,READONLY

23、 ENTRYReset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD Undefined. . .Nouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler 前32字節(jié)為異常入口 后32字節(jié)為跳轉地址 異常向量表 位于啟動代碼中的異常向量表 CODE32 AREA vectors,CODE,READONLY ENTRYRes

24、et LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD Undefined. . .Nouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler異常向量表例如:發(fā)生未定義異常時1.程序計數(shù)器(PC)指向0 x00000004;2.執(zhí)行當前的指令,將Undefined地址值裝入PC,實現(xiàn)至未定義異常處理程序的跳轉。裝入 位于啟動代碼

25、中的異常向量表 CODE32 AREA vectors,CODE,READONLY ENTRYReset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD Undefined. . .Nouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler異常向量表注意:異常向量表中程序跳轉使用LDR指令,而沒有使用B指令。原因:1.LDR指

26、令可以全地址范圍跳轉,而B指令只能在前后32MB范圍內跳轉;2.芯片具有Remap功能。當向量表位于內部RAM或外部存儲器中,用B指令不能跳轉到正確的位置。B ResetAddr第5章 目錄q1.簡介q2.引腳配置q3.存儲器尋址q4.系統(tǒng)控制模塊q5.存儲器加速模塊q6.外部存儲器控制器q7.引腳連接模塊q8. 向量中斷控制器q9.GPIOq10.UART0q11.UART1q12.I2C接口q13.SPI接口q14.定時器0/1q15.脈寬調制器(PWM)q16.A/D轉換器q17.實時時鐘q18.看門狗5.4 系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復位外部中斷存儲器映射控制功率控制

27、喚醒定時器5.4 系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復位外部中斷存儲器映射控制功率控制喚醒定時器5.4 系統(tǒng)控制模塊 系統(tǒng)控制模塊概述 系統(tǒng)控制模塊包括一些系統(tǒng)構件和控制寄存器,它們具有眾多與芯片內其它外設無關的功能。系統(tǒng)控制模塊包括:系統(tǒng)時鐘單元、復位、外部中斷輸入、存儲器映射控制、功率控制和喚醒定時器。5.4 系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復位外部中斷存儲器映射控制功率控制喚醒定時器系統(tǒng)時鐘小節(jié)目錄 系統(tǒng)時鐘概述 晶體振蕩器(5.4.4) PLL(5.4.9) VPB分頻器(5.4.10)系統(tǒng)時鐘小節(jié)目錄 系統(tǒng)時鐘概述 晶體振蕩器(5.4.4) PLL(5.4.9)

28、 VPB分頻器(5.4.10)系統(tǒng)時鐘 系統(tǒng)時鐘概述 CPU正常工作需要有合適的時鐘信號,包括ARM7內核使用的CCLK時鐘,和芯片外設使用的PCLK時鐘。 通過LPC2000系列微控制器的時鐘產生單元產生ARM7內核和芯片外設正常工作所需要的時鐘節(jié)拍。系統(tǒng)時鐘 系統(tǒng)時鐘概述ARM7核橋外設時鐘產生FCCLKFPCLKFOSCCPU時鐘結構系統(tǒng)時鐘 時鐘產生單元 時鐘產生單元包括晶體振蕩器、鎖相環(huán)振蕩器(PLL)和VPB分頻器。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC 系統(tǒng)時鐘概述 晶體振蕩器(5.4.4) PLL(5.4.9) VPB分頻器(5.4.10)系統(tǒng)時鐘小節(jié)目錄系統(tǒng)

29、時鐘 晶體振蕩器 LPC2000微控制器可以使用內部的晶體振蕩器產生時鐘信號,也可以從外部引入時鐘信號。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式系統(tǒng)時鐘 晶體振蕩器 使用從屬模式時,時鐘信號通過X1引腳從外部輸入,輸入頻率范圍:150(MHz),其幅度不小于200m Vrms。LPC2000X1X2ClockCC從屬模式系統(tǒng)時鐘 晶體振蕩器 使用振蕩模式時,時鐘信號由內部晶體振蕩器和外部連接的晶體振蕩產生,振蕩頻率范圍:130(MHz)。LPC2000X1X2CX1CX2XTAL振蕩模式系統(tǒng)時鐘 晶體振蕩器注意:如果使用了ISP下載功能或者

30、連接PLL提高頻率,則輸入的時鐘頻率范圍必須在1025(MHz)之間。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL從屬模式振蕩模式系統(tǒng)時鐘小節(jié)目錄 系統(tǒng)時鐘概述 晶體振蕩器(5.4.4) PLL(5.4.9) VPB分頻器(5.4.10)系統(tǒng)時鐘 鎖相環(huán)(PLL) 由晶體振蕩器輸出的時鐘信號,通過PLL升頻,可以獲得更高的系統(tǒng)時鐘(CCLK)。 PLL接受的輸入時鐘頻率范圍為1025MHz,通過一個電流控制振蕩器(CCO)倍增到1060MHz。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC10MHz25MHz10MHz60MHzPLL PLL內部結構

31、相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLK晶體振蕩器輸入時鐘對輸入的兩路時鐘信號進行相位頻率檢測,將兩者差值以電流形式輸出電流控制振蕩器,根據(jù)輸入電流控制振蕩頻率對輸入時鐘分頻輸入時鐘 2選1開關 PLL內部結構相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKFCCO / 2PFCCO / (2P*M)CCO自由振蕩,輸出頻率FCCO 根據(jù)兩個輸入時鐘的相位偏差,控制CCO。當兩個時鐘相位同步時,回路鎖定。 PLL相關寄存器相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKPLL控制寄存器(PLLCON):PLLE:PLL使能,該位為1時將激活PLL并允許其鎖定到指

32、定的頻率;PLLC:PLL連接,當PLLE為1,并且在PLL鎖定后,該位為1,將把PLL作為時鐘源連接到CPU,否則直接使用振蕩器時鐘。PLLCPLLE相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLK注:其中“”表示該位保留,用戶不要向該位寫入1,讀取的值將不確定PLLCPLLE PLL相關寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKPLLCPLLE PLL相關寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKPLL配置寄存器(PLLCFG):MSEL4:0:PLL倍頻器值,在PLL頻率計

33、算中其值為(M-1);PSEL1:0:PLL分頻器值,在PLL頻率計算中其值為P 。 PLL相關寄存器相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKPLL狀態(tài)寄存器(PLLSATA):MSEL4:0、PSEL1:0、PLLE、PLLC:讀出反映這幾個參數(shù)的設置值,寫入無效;PLOCK:反映PLL的鎖定狀態(tài)。為0時,PLL未鎖定;為1時,PLL鎖定到指定頻率。 PLL相關寄存器相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKPLL饋送寄存器(PLLFEED):PLLFEDD7:0:PLL饋送序列必須寫入該寄存器才能使PLL配置和控制寄存器的更改生效; PLL相關寄存器相位頻率檢

34、測CCO2P分頻M分頻FOSCFCCOFCLK饋送序列為: 1.將值0 xAA寫入PLLFEED; 2.將值0 x55寫入PLLFEED。 PLL相關寄存器PLL饋送寄存器(PLLFEED): PLL頻率計算回路鎖定后:FOSC = FCCO / (2P M) FCLK = FOSC M相位頻率檢測CCO2P分頻M分頻FOSCFCCOFCLKFCCO / 2PFCCO / (2P*M)FOSC:晶振頻率; FCCO :CCO振蕩器輸出頻率FCCLK:處理器時鐘頻率; M:PLL倍頻值 P:PLL分頻值必須滿足的條件:FOSC范圍:10MHz25MHz; FCCLK范圍:10MHz60MHz;

35、FCCO范圍:156MHz320MHz;系統(tǒng)時鐘 鎖相環(huán)(PLL)計算流程1.選擇處理器的工作頻率(CCLK)2.選擇振蕩器頻率(FOSC)3.計算M值配置MSEL位4.計算P值配置PSEL位 根據(jù)處理器的整體要求、UART波特率的支持等因素來決定。外圍器件的時鐘頻率可以低于處理器頻率 CCLK 必須為FOSC的整數(shù)倍。 M = CCLK / FOSC,取值范圍132。寫入MSEL的值為(M-1)。 選擇合適的P值,使FCCO在限制范圍內。P只能取1、2、4或8。寫入PSEL的值為P。系統(tǒng)時鐘 鎖相環(huán)(PLL)計算實例系統(tǒng)要求:FOSC10MHz、CCLK 60MHz1.計算M值:M CCLK

36、 / FOSC 6 ;2.設置MSEL位:寫入值為(M1)5;3. 設置PSEL位:PFCCO/(CCLK2) (156320)/1201.32.67 所以P取整數(shù)2,PSEL寫入值為2。系統(tǒng)時鐘 鎖相環(huán)(PLL)注意要點PLL在芯片復位或進入掉電模式時被關閉并旁路,在掉電喚醒后不會自動恢復PLL的設定;PLL只能通過軟件使能;PLL在激活后必須等待其鎖定,然后才能連接;PLL如果設置不當將會導致芯片的錯誤操作。系統(tǒng)時鐘小節(jié)目錄 系統(tǒng)時鐘概述 晶體振蕩器(5.4.4) PLL(5.4.9) VPB分頻器(5.4.10)系統(tǒng)時鐘 VPB分頻器 VPB分頻器將PLL輸出的時鐘信號分頻后作為芯片外設

37、的時鐘。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSCVPB分頻器系統(tǒng)時鐘 VPB分頻器 VPB分頻器決定處理器時鐘(CCLK)與外設器件所使用的時鐘(PCLK)之間的關系。VPB用途1:通過VPB總線為外設提供所需的PCLK時鐘,以便外設在合適的速度下工作;VPB用途2:在應用不需要任何外設全速運行時使功耗降低。系統(tǒng)時鐘 VPB分頻器相關寄存器VPB分頻寄存器(VPBDIV):VPBDIV1:0:設置分頻值,可以設定3個值;XCLKDIV1:0:這些位用于控制LPC2200系列微控制器A23/XCLK引腳上的時鐘驅動,取值編碼方式與VPBDIV相同;系統(tǒng)時鐘 VPB分頻器相關寄存器

38、VPB分頻寄存器(VPBDIV): 系統(tǒng)時鐘初始化流程使能PLL設置VPB 分頻值PLL饋送序列等待PLL鎖定設置PLL 分頻值連接PLLPLL饋送序列 系統(tǒng)時鐘初始化啟動代碼實例/應當與實際一至晶振頻率,10MHz25MHz,應當與實際一至#define Fosc 11059200 /系統(tǒng)頻率,必須為Fosc的整數(shù)倍(132),且=60MHZ#define Fcclk (Fosc * 4) /CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz320MHz#define Fcco (Fcclk * 4) /VPB時鐘頻率,只能為(Fcclk / 4)的1、2、4倍#defin

39、e Fpclk (Fcclk / 4) * 1 將系統(tǒng)內各時鐘的頻率定義為宏,方便用戶操作。設置晶振頻率設置內核工作頻率設置CCO輸出頻率設置外設工作頻率 系統(tǒng)時鐘初始化啟動代碼實例使能PLL設置VPB 分頻值PLL饋送序列等待PLL鎖定設置PLL 分頻值連接PLLPLL饋送序列使能PLL設置VPB 分頻值C代碼分析: PLLCON = 1;#if (Fpclk / (Fcclk / 4) = 1 VPBDIV = 0;#endif#if (Fpclk / (Fcclk / 4) = 2 VPBDIV = 2;#endif#if (Fpclk / (Fcclk / 4) = 4 VPBDIV

40、= 1;#endif. . .注意:在啟動代碼中很多地方使用了條件編譯的方法,根據(jù)用戶定義的宏來決定要設置的值,可以方便用戶使用。 系統(tǒng)時鐘初始化啟動代碼實例使能PLL設置VPB 分頻值PLL饋送序列等待PLL鎖定設置PLL 分頻值連接PLLPLL饋送序列設置PLL 分頻值C代碼分析:. . .#if(Fcco/Fcclk)=2 PLLCFG=(Fcclk/Fosc)-1)|(05);#endif#if(Fcco/Fcclk)=4 PLLCFG=(Fcclk/Fosc)-1)|(15);#endif#if(Fcco/Fcclk)= 8 PLLCFG=(Fcclk/Fosc)-1)|(25);#

41、endif#if(Fcco/Fcclk)=16 PLLCFG=(Fcclk/Fosc)-1)|(35);. . . 系統(tǒng)時鐘初始化啟動代碼實例使能PLL設置VPB 分頻值PLL饋送序列等待PLL鎖定設置PLL 分頻值連接PLLPLL饋送序列PLL饋送序列等待PLL鎖定連接PLLPLL饋送序列C代碼分析:. . .PLLFEED = 0 xaa;PLLFEED = 0 x55;while(PLLSTAT & (1 =10ms=300ns復位UX1t此時振蕩器穩(wěn)定工作 外部復位LPC2xxxnRESET電源輸入X1X23. 在晶體振蕩器保持穩(wěn)定振蕩,或者使用有源鐘振時,外部復位信號可以縮短

42、到不小于300ns;復位 任何復位源引起的芯片復位都會啟動喚醒定時器,當計數(shù)到一個固定個數(shù)的時鐘時,處理器開始執(zhí)行指令。這確保振蕩器和芯片所需要的其它模擬電路在處理器開始執(zhí)行指令之前能夠正確工作。 外部復位與內部看門狗復位的共同點復位 外部復位與內部看門狗復位的區(qū)別 外部復位將把某幾個特定引腳的值鎖存,來決定系統(tǒng)復位后的狀態(tài),而看門狗(WDT)復位則無此功能。檢測引腳鎖存狀態(tài)對應功能P1.20/TRACESYNC0P1.25P1.16作為跟蹤端口P1.26/RTCK0P1.31P1.26作為調試端口P0.140進入ISP狀態(tài)BOOT1、BOOT2全1內部Flash啟動,否則外部啟動復位 復位后

43、的系統(tǒng)狀態(tài) 芯片被復位后,處理器和外設寄存器都恢復為默認狀態(tài)。程序計數(shù)器(PC)值為0,即CPU復位后運行的第一條代碼位于0 x00000000處。此時位于該地址的程序并不位于片內Flash,而是來自Boot Block的異常向量表的重新映射。通過異常向量表的復位異常入口,程序跳轉至Boot Block中執(zhí)行Boot程序。復位 復位后的系統(tǒng)狀態(tài)FlashSRAMBoot BlockAHB & VPB0 x000000000 xFFFFFFFF0 x400000000 x80000000地址空間1. 復位后用戶見到的存儲器分布2. BootBlock中的異常向量表重新映射復位 復位后的系

44、統(tǒng)狀態(tài)FlashSRAMBoot BlockAHB & VPB0 x000000000 xFFFFFFFF0 x400000000 x80000000地址空間復位異常入口未定義異常入口軟件中斷入口. . .0 x000000000 x000000040 x000000080 x00000040PC指向3. PC指向0 x0000地址處,CPU執(zhí)行復位后的第一條指令復位 復位后的系統(tǒng)狀態(tài)FlashSRAMBoot BlockAHB & VPB0 x000000000 xFFFFFFFF0 x400000000 x80000000地址空間復位異常入口未定義異常入口軟件中斷入口. .

45、 .0 x000000040 x000000080 x000000404. 通過跳轉指令,程序跳入Boot Block,執(zhí)行Boot程序。復位 復位后的系統(tǒng)狀態(tài)PC指向FlashSRAMBoot BlockAHB & VPB0 x000000000 xFFFFFFFF0 x400000000 x80000000地址空間復位異常入口未定義異常入口軟件中斷入口. . .0 x000000040 x000000080 x00000040復位 Boot程序 Boot程序是芯片生產廠家固化在芯片中的一段代碼,它完成芯片復位后的初始化操作,并提供實現(xiàn)Flash編程的方法。Boot裝載程序可啟動對空

46、片的編程、已編程器件的擦除和再編程,以及在運行的系統(tǒng)中由應用程序對Flash存儲器進行編程。 Boot程序工作流程LPC2114/2124復位運行ISP服務程序看門狗復位根據(jù)硬件(P1.20、P1.26)配置進入ISP狀態(tài)嗎?(P0.14為低)初始化用戶代碼是否有效執(zhí)行用戶代碼(片內Flash:0 x00000000)NYYYNN在此檢測特定引腳檢測用戶代碼是否有效 Boot程序工作流程LPC2210/2212/2214復位看門狗復位進入ISP模式?(P0.14為低)初始化用戶代碼是否有效芯片加密允許調試外部引導芯片加密運行ISP服務程序執(zhí)行外部用戶代碼(0 x80000000)執(zhí)行內部用戶代

47、碼(0 x00000000)NNYYNNNNYYYY在此檢測特定引腳檢測用戶代碼是否有效復位 有效用戶代碼的判別 LPC2000系列微控制器規(guī)定 “內部Flash中向量表所有數(shù)據(jù)的32位累加為零”時,判定內部Flash中的代碼為有效可執(zhí)行代碼。即只有當向量表所有數(shù)據(jù)32位累加和為零時,用戶的程序才能脫機運行。 有效用戶代碼的判別 CODE32 AREA vectors,CODE,READONLY ENTRYReset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0 xb9205f80 LDR PC, PC, #-0 xff0 LDR PC

48、, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD Undefined. . .Nouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler異常向量表 前32字節(jié)為異常入口 后32字節(jié)為跳轉地址 有效用戶代碼的判別Reset0 xe59ff018 ldr pc,ResetAddr0 xe59ff018 ldr pc,UndefinedAddr. . .0 xb9205f80 dcd 0 xb9205f800 xe51ffff0 ldr pc,0 x7ffff0300 xe59ff018 ldr pc,FIQ

49、_AddrResetAddr0 x8000008c dcd 0 x8000008cUndefinedAddr0 x80000040 dcd 0 x80000040. . .Nouse0 x00000000 dcd 0 x00000000IRQ_Addr0 x00000000 dcd 0 x00000000FIQ_Addr0 x8000004c dcd 0 x8000004c異常向量表反匯編代碼 前32字節(jié)為異常入口 后32字節(jié)為跳轉地址 有效用戶代碼的判別Reset0 xe59ff018 ldr pc,ResetAddr0 xe59ff018 ldr pc,UndefinedAddr. . .

50、0 xb9205f80 dcd 0 xb9205f800 xe51ffff0 ldr pc,0 x7ffff0300 xe59ff018 ldr pc,FIQ_AddrResetAddr0 x8000008c dcd 0 x8000008cUndefinedAddr0 x80000040 dcd 0 x80000040. . .Nouse0 x00000000 dcd 0 x00000000IRQ_Addr0 x00000000 dcd 0 x00000000FIQ_Addr0 x8000004c dcd 0 x8000004c異常向量表反匯編代碼指令的機器碼指令 有效用戶代碼的判別Reset

51、0 xe59ff018 ldr pc,ResetAddr0 xe59ff018 ldr pc,UndefinedAddr. . .0 xb9205f80 dcd 0 xb9205f800 xe51ffff0 ldr pc,0 x7ffff0300 xe59ff018 ldr pc,FIQ_AddrResetAddr0 x8000008c dcd 0 x8000008cUndefinedAddr0 x80000040 dcd 0 x80000040. . .Nouse0 x00000000 dcd 0 x00000000IRQ_Addr0 x00000000 dcd 0 x00000000FIQ

52、_Addr0 x8000004c dcd 0 x8000004c異常向量表反匯編代碼8條指令的機器碼累加和為0,表示用戶代碼有效Reset0 xe59ff018 ldr pc,ResetAddr0 xe59ff018 ldr pc,UndefinedAddr. . .0 xb9205f80 dcd 0 xb9205f800 xe51ffff0 ldr pc,0 x7ffff0300 xe59ff018 ldr pc,FIQ_AddrResetAddr0 x8000008c dcd 0 x8000008cUndefinedAddr0 x80000040 dcd 0 x80000040. . .N

53、ouse0 x00000000 dcd 0 x00000000IRQ_Addr0 x00000000 dcd 0 x00000000FIQ_Addr0 x8000004c dcd 0 x8000004c異常向量表反匯編代碼8條指令的機器碼累加和為0,表示用戶代碼有效 有效用戶代碼的判別0 x000000000 xe59ff0180 xe59ff018. . .0 xb9205f800 xe51ffff00 xe59ff018跳轉地址數(shù)據(jù)不在累加范圍內 通過調整該保留字,使累加和為05.4 系統(tǒng)控制模塊小節(jié)目錄系統(tǒng)控制模塊概述系統(tǒng)時鐘復位外部中斷存儲器映射控制功率控制喚醒定時器外部中斷 外部中斷

54、 外部中斷是通過引腳輸入符合要求的信號而觸發(fā)的中斷。LPC2114/2124/2212/2214含有4個外部中斷輸入(作為可選引腳功能,通過PINSEL0/1寄存器設置相應管腳為外部中斷功能)。外部中斷輸入可用于將處理器從掉電模式喚醒。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷 外部中斷內部示意圖2.控制某幾個引腳作為外部中斷輸入;管腳連接控制1.可作為外部中斷輸入的引腳;外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志3.控制觸發(fā)外部中斷的信號波形;4.控制外部中斷產生后是否

55、喚醒CPU;5.外部中斷產生后設置的標志位;(2)(1)(3)(3)(4)(5) 外部中斷相關寄存器外部中斷極性控制寄存器(EXTPOLAR): 該寄存器控制著外部中斷輸入信號的極性,其中低四位(EXTPOLAR3:0)分別對應外部中斷30。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷極性控制 外部中斷相關寄存器外部中斷3 外部中斷2 外部中斷1 外部中斷0(EINT3) (EINT2) (EINT1) (EINT0)分別控制著 外部中斷相關寄存器外部中斷極性控制寄存器(EXTPOL

56、AR):管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE當EXTPOLARx設置為1時EINTx引腳輸入信號高電平或上升沿有效。當EXTPOLARx設置為0時EINTx引腳輸入信號低電平或下降沿有效。 外部中斷相關寄存器 外部中斷相關寄存器外部中斷極性控制寄存器(EXTPOLAR):管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE 外部中斷相關寄存器外部中斷方式控制寄存器(EXTMODE): 該寄

57、存器控制著外部中斷輸入信號的有效觸發(fā)方式,其中低四位(EXTMODE 3:0)分別對應外部中斷30。 外部中斷相關寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷方式控制當EXTMODEx設置為0時輸入信號為電平觸發(fā)有效。當EXTMODEx設置為1時輸入信號為邊沿觸發(fā)有效。 外部中斷相關寄存器外部中斷方式控制寄存器(EXTMODE): 外部中斷相關寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTI

58、NTEXTWAKE 外部中斷相關寄存器極性與方式控制的組合關系: 外部中斷相關寄存器管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE 外部中斷相關寄存器外部中斷喚醒寄存器(EXTWAKE): 設置該寄存器允許相應的外部中斷將處理器從掉電模式喚醒。實現(xiàn)掉電喚醒不需要在向量中斷控制器(VIC)中使能相應的中斷。該寄存器的低四位(EXTWAKE3:0)分別對應外部中斷30。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTI

59、NTEXTWAKE掉電喚醒控制 外部中斷相關寄存器 當EXTWAKEx設置為1時對應的外部中斷將處理器從掉電模式喚醒。外部中斷喚醒寄存器(EXTWAKE):管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE 外部中斷相關寄存器外部中斷標志寄存器(EXTINT): 若引腳上出現(xiàn)了符合要求的信號,EXTINT寄存器中對應的中斷標志將被置位。向該寄存器的EINT0EINT3位寫入1,可將其清零。管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLARE

60、XTMODEEXTINTEXTWAKE中斷標志注意:在電平觸發(fā)方式下,清除中斷標志只有在引腳處于無效狀態(tài)時才可實現(xiàn)。比如設置為低電平中斷,則只有在中斷引腳恢復為高電平后才能清除中斷標志。 外部中斷相關寄存器外部中斷標志寄存器(EXTINT):管腳連接控制外部中斷極性控制外部中斷方式控制掉電喚醒控制中斷標志CPU其它部件PINSELxEXTPOLAREXTMODEEXTINTEXTWAKE外部中斷 外部中斷引腳設置 通過軟件設置引腳選擇寄存器(PINESLEx),可以將多個引腳同時作為同一個外部中斷的輸入引腳。EINT3EINT0外部中斷的邏輯電路接收所有與之相連引腳的狀態(tài)和信號。外部中斷 外部中斷引腳設置 根據(jù)其方式位和極性位的不同,外部中斷邏輯處理如下:低電平觸發(fā)方式:作為EINT功能的全部引腳的狀態(tài)相與后作為輸入信號;高電平

溫馨提示

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

評論

0/150

提交評論