存儲器加速模塊(MAM)-課件_第1頁
存儲器加速模塊(MAM)-課件_第2頁
存儲器加速模塊(MAM)-課件_第3頁
存儲器加速模塊(MAM)-課件_第4頁
存儲器加速模塊(MAM)-課件_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章目錄1.2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調制器(PWM)16.A/D轉換器17.實時時鐘18.看門狗第5章目錄1.10.UART015.5存儲器加速模塊(MAM)概述LPC2114/2124/2210/2212/2214微控制器的ARM內核工作在最高頻率60MHz時,執(zhí)行一條指令約為17ns。而Flash存儲器的訪問周期需要50ns,即最高頻率20MHz。所以如果將代碼存放在Flash中,將影響ARM內核發(fā)揮最大效能。為了能將指令從內部Flash存儲器更高效快速地提取到ARM內核,而設計產(chǎn)生了一個存儲器加速模塊(MAM)。5.5存儲器加速模塊(MAM)概述LPC2精品資料精品資料3你怎么稱呼老師?如果老師最后沒有總結一節(jié)課的重點的難點,你是否會認為老師的教學方法需要改進?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風雨狂,只怕先生罵我笨,沒有學問無顏見爹娘……”“太陽當空照,花兒對我笑,小鳥說早早早……”存儲器加速模塊(MAM)-ppt課件4分支跟蹤緩存分支跟蹤緩存總線接口Flash存儲器組0Flash存儲器組1預取指緩存預取指緩存數(shù)據(jù)緩存區(qū)選擇ARM局部總線2×128位2×128位MAM結構使能MAM模塊后,ARM內核將通過MAM模塊訪問Flash存儲器。Flash存儲器組0Flash存儲器組1分支跟蹤緩存分支跟蹤緩存預取指緩存預取指緩存數(shù)據(jù)緩存區(qū)選擇總線接口分支跟蹤緩存分支跟蹤緩存總線FlashFlash預取指緩存預5MAM結構Flash存儲器被分為兩組,當CPU執(zhí)行其中一組Flash內的指令時,另一組進行讀取緩存操作。使能MAM模塊后,ARM內核將通過MAM模塊訪問Flash存儲器。每個Flash組包含預取指緩存和分支跟蹤緩存。分支跟蹤緩存分支跟蹤緩存總線接口Flash存儲器組0Flash存儲器組1預取指緩存預取指緩存數(shù)據(jù)緩存區(qū)選擇ARM局部總線2×128位2×128位MAM模塊中的數(shù)據(jù)總線寬度為128位,所以一次讀取操作可以讀出4條ARM指令或8條Thumb指令。分支跟蹤緩存預取指緩存分支跟蹤緩存Flash存儲器組1預取指緩存分支跟蹤緩存預取指緩存分支跟蹤緩存預取指緩存Flash存儲器組0分支跟蹤緩存分支跟蹤緩存預取指緩存預取指緩存MAM結構Flash存儲器被分為兩組,當CPU執(zhí)行其中一組F6分支跟蹤緩存分支跟蹤緩存MAM結構總線接口Flash存儲器組0Flash存儲器組1預取指緩存預取指緩存數(shù)據(jù)緩存區(qū)選擇ARM局部總線當程序向前跳轉時,嘗試從預取指緩存區(qū)取指。2×128位2×128位如果程序跳轉出緩存的范圍,CPU將要停止,等待若干個周期,直到正確的指令從Flash中被讀出。當程序向后跳轉時,嘗試從分支跟蹤緩存區(qū)取指。預取指緩存區(qū)保存有將要執(zhí)行的指令。而分支跟蹤緩存區(qū)保存有程序跳轉后可能執(zhí)行到的指令。分支跟蹤緩存分支跟蹤緩存MAM結構總線FlashFlash預7分支跟蹤緩存分支跟蹤緩存MAM結構總線接口Flash存儲器組0Flash存儲器組1預取指緩存預取指緩存數(shù)據(jù)緩存區(qū)ARM局部總線2×128位2×128位Flash中除了存儲指令之外,還可用來存儲不修改或者很少修改的數(shù)據(jù),所以在MAM模塊中設計有數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)緩存區(qū)可以提高順序讀取數(shù)據(jù)的操作速度。但是對隨機讀取操作幾乎沒有加速效果。數(shù)據(jù)緩存區(qū)Flash編程由另一個獨立的模塊完成,F(xiàn)lash在進行編程操作時禁止訪問。在編程操作結束后,緩存區(qū)的數(shù)據(jù)將自動失效,可以避免讀取到無效的數(shù)據(jù)。選擇分支跟蹤緩存分支跟蹤緩存MAM結構總線FlashFlash預85.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述MAM控制寄存器(MAMCR):MAMCR[1:0]:用于MAM的模式控制,具體關系如下表。位765432[1:0]功能------模式控制MAMCR[1:0]描述00禁止MAM功能01部分使能MAM功能10完全使能MAM功能11保留5.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述M95.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述MAM定時寄存器(MAMTIM):MAMTIM[2:0]:決定使用多少個CCLK周期訪問Flash存儲器,這樣可以調整MAM時序使其匹配處理器操作頻率,具體關系如下表。位76543[2:0]功能-----取指周期控制MATIM[2:0]描述MATIM[2:0]描述000保留100取指周期為4個CCLK001取指周期為1個CCLK101取指周期為5個CCLK010取指周期為2個CCLK110取指周期為6個CCLK011取指周期為3個CCLK111取指周期為7個CCLK5.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述M105.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述MAM定時寄存器(MAMTIM):MATIM[2:0]描述MATIM[2:0]描述000保留100取指周期為4個CCLK001取指周期為1個CCLK101取指周期為5個CCLK010取指周期為2個CCLK110取指周期為6個CCLK011取指周期為3個CCLK111取指周期為7個CCLK

當訪問周期設置為1個CCLk時,實際上關閉了MAM,但是仍可以選擇MAM模式對功耗進行優(yōu)化。注意:不正確的設定會導致器件的錯誤操作5.5存儲器加速模塊(MAM)存儲器加速模塊寄存器描述M115.5存儲器加速模塊(MAM)MAM使用要點當改變MAM定時值時,必須先將MAMCR設置為0關閉MAM,然后將新值寫入MAMTIM。最后將需要的操作模式的對應值(1或2)寫入MAMCR,再次打開MAM;對于低于20MHz的系統(tǒng)時鐘,MAMTIM設定為001,將Flash訪問時間設定為1CCLK;對于20MHz到40MHz之間的系統(tǒng)時鐘,建議將Flash訪問時間設定為2CCLK;高于40MHz的系統(tǒng)時鐘,建議使用3CCLK。5.5存儲器加速模塊(MAM)MAM使用要點當改變MAM12相關啟動代碼分析...MAMCR=0;#ifFcclk<20000000MAMTIM=1;#else#ifFcclk<40000000MAMTIM=2;#elseMAMTIM=3;#endif#endifMAMCR=2;...設置步驟:1.關閉MAM模塊;2.根據(jù)用戶定義的系統(tǒng)時鐘頻率決定MAM定時寄存器的值;3.打開MAM模塊,完全使能MAM模塊;系統(tǒng)時鐘(CCLK)MAM定時值<20MHz120MHz~40MHz2>40MHz3C代碼:相關啟動代碼分析...設置步驟:1.關閉MAM模塊;2.13第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調制器(PWM)16.A/D轉換器17.實時時鐘18.看門狗第5章目錄1.簡介10.UART014ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口SPI串行接口UART0&1CAN看門狗定時器系統(tǒng)控制外部中斷TIMER0/1ADC通用I/OPWM0實時時鐘SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能EMC外部存儲器控制器概述只有LPC2200系列的微控制器含有EMC模塊。外部靜態(tài)存儲器控制器是一個AHB總線上的從模塊。EMC模塊為AHB系統(tǒng)總線和外部存儲器件之間提供了一個接口。ARM7TDMI-SAHBToVPBEMCVICI2C串15ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口外部中斷TIMER0/1SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能EMC外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器控制器概述EMC模塊支持4個獨立配置的存儲器組,每個存儲器組的總線寬度可設置為8、16或者32位,但是同一個存儲器組的器件必須寬度相同。每個存儲器組最大支持16MB尋址空間。支持字節(jié)定位讀取。ARM7TDMI-SAHBToVPBEMCVICI2C串16ARM7TDMI-SCPUAHBToVPB橋EMCVICI2C串行接口外部中斷TIMER0/1SRAMFlashAHB總線ARM7局部總線系統(tǒng)功能EMC外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器或外部I/O器件外部存儲器控制器概述地址輸出線是A[23:0],其中地址位A[25:24]用于4個存儲器組的譯碼(CS[3:0])。總線存儲器組選擇線CS[3:0]Bank地址范圍配置寄存器00x80000000~0x80FFFFFFBCFG010x81000000~0x81FFFFFFBCFG120x82000000~0x82FFFFFFBCFG230x83000000~0x83FFFFFFBCFG3Bank0Bank1Bank2Bank3ARM7TDMI-SAHBToVPBEMCVICI2C串17外部存儲器總線接口描述引腳名類型引腳描述D[31:0]輸入/輸出外部存儲器數(shù)據(jù)線A[23:0]輸出外部存儲器地址線OE輸出輸出使能信號,低有效BLS輸出字節(jié)定位選擇信號,低有效WE輸出寫使能信號,低有效CS[3:0]輸出芯片選擇信號,低有效接口引腳描述:

這些引腳與P1、P2和P3口GPIO功能復用,所以在使用外部總線前首先要正確設置PINSEL2寄存器??梢栽谟布蠈σ_BOOT1:0設定,復位時微處理器自動初始化PINSEL2?;蛘咴谲浖献止?jié)初始化PINSEL2,這只適用于片內FLASH引導程序運行的系統(tǒng)中。外部存儲器總線接口描述引腳名類型引腳描述D[31:0]輸入/18XCLKCSOEWE/BLSAddrData外部存儲器讀訪問典型波形:外部存儲器總線接口描述外部存儲器寫訪問典型波形:XCLKCSOEWE/BLSAddrData有效數(shù)據(jù)有效地址有效地址變化數(shù)據(jù)有效數(shù)據(jù)經(jīng)過一個等待狀態(tài)后,存儲器輸出有效數(shù)據(jù)。XCLKCSOEWE/BLSAddrData外部存儲器讀訪問195.6外部存儲器控制器(EMC)相關寄存器

外部存儲器控制器包含4個寄存器,它們分別對應一個存儲器組。通過這些寄存器,可以分別設置每個存儲器組讀寫訪問之間插入的等待周期個數(shù)、每個存儲器組的總線寬度等。名稱描述訪問復位值地址BCFG0存儲器組0的配置寄存器讀/寫0x2000FBEF0xFFE00000BCFG1存儲器組1的配置寄存器讀/寫0x2000FBEF0xFFE00004BCFG2存儲器組2的配置寄存器讀/寫0x1000FBEF0xFFE00008BCFG3存儲器組3的配置寄存器讀/寫0x0000FBEF0xFFE0000C5.6外部存儲器控制器(EMC)相關寄存器205.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):IDCY:在兩個存儲器組之間切換訪問時,為了避免器件間的總線競爭,需要插入空閑的CCLK周期,該域控制著這個周期數(shù)。計算公式為:空閑CCLK周期數(shù)=IDCY+1;(IDCY的復位值為15)5.6外部存儲器控制器(EMC)相關寄存器位31:302215.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):WST1:一些慢速的外部存儲器可能不能適應EMC最高速度的讀操作,所以需要在讀周期中插入若干個空閑等待周期,以降低讀操作的速度。該域控制著讀周期中插入的空閑CCLK周期數(shù)。計算公式為:讀操作周期長度=WST1+3;(WST1的復位值為15)5.6外部存儲器控制器(EMC)相關寄存器位31:302225.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):XCLKCSOEWE/BLSAddrData有效地址變化數(shù)據(jù)有效數(shù)據(jù)WST1=01個等待周期外部存儲器讀訪問波形(WST1=0):讀操作,共需3個周期5.6外部存儲器控制器(EMC)相關寄存器位23:161235.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):XCLKCSOEWE/BLSAddrData有效地址變化數(shù)據(jù)有效數(shù)據(jù)WST1=01個等待周期讀操作,共需3個周期外部存儲器讀訪問波形(WST1=1):增加1個等待周期5.6外部存儲器控制器(EMC)相關寄存器位23:161245.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):XCLKCSOEWE/BLSAddrDataWST1=1,2個等待周期外部存儲器讀訪問波形(WST1=1):有效地址變化數(shù)據(jù)有效數(shù)據(jù)讀操作,共需4個周期5.6外部存儲器控制器(EMC)相關寄存器位23:161255.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):RBLE:如果外部存儲器的總線寬度為16或32位,那么讀寫操作是對總線上的2個或4個字節(jié)的數(shù)據(jù)同時進行的。某些存儲器允許對總線上的某幾個字節(jié)進行獨立的讀寫操作,而不影響其它字節(jié),這通過芯片的字節(jié)定位引腳實現(xiàn)。當RBLE位為1時使能字節(jié)定位功能,BLS3:0在讀寫操作時輸出低電平。當RBLE位為0時,禁止該功能。5.6外部存儲器控制器(EMC)相關寄存器位31:30226D[7:0]D[15:8]nBLS0nBLS1nLBnUBA[23:0]nCS0nCEnWEnWED[15:0]D[7:0]D[15:0]D[7:0]A[23:0]A[23:0]LPC2200SRAM5.6外部存儲器控制器(EMC)相關寄存器例1:向地址0x80001000寫入一個8位數(shù)據(jù)0xAA1.地址總線上出現(xiàn)地址;2.數(shù)據(jù)總線上出現(xiàn)數(shù)據(jù)0x??AA,高8位無效;0xAA無效數(shù)據(jù)3.控制線nBLS0、nCS0和nWE拉低,將低8位數(shù)據(jù)寫入芯片。0x80001000LDRR0,=0x80001000MOVR1,#0xAASTRBR1,[R0]匯編代碼:D[7:0]D[15:8]nBLS0nBLS1nLBnU27D[7:0]D[15:8]nBLS0nBLS1nLBnUBA[23:0]nCS0nCEnWEnWED[15:0]D[7:0]D[15:0]D[7:0]A[23:0]A[23:0]LPC2200SRAM5.6外部存儲器控制器(EMC)相關寄存器例2:向地址0x80001001寫入一個8位數(shù)據(jù)0x551.地址總線上出現(xiàn)地址;2.數(shù)據(jù)總線上出現(xiàn)數(shù)據(jù)0x55??,低8位無效;0x55無效數(shù)據(jù)3.控制線nBLS1、nCS0和nWE拉低,將高8位數(shù)據(jù)寫入芯片。0x80001000LDRR0,=0x80001001MOVR1,#0x55STRBR1,[R0]匯編代碼:D[7:0]D[15:8]nBLS0nBLS1nLBnU285.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):WST2:和讀操作類似,一些慢速的外部存儲器可能不能適應EMC最高速度的寫操作,所以需要在寫周期中插入若干個空閑等待周期,以降低寫操作的速度。該域控制著寫周期中插入的空閑CCLK周期數(shù)。計算公式為:寫操作周期長度=WST2+3;(WST2的復位值為15)對于BurstROM,計算公式為:寫操作周期長度=WST2+1;5.6外部存儲器控制器(EMC)相關寄存器位31:30229外部存儲器寫訪問波形(WST2=0):XCLKCSOEWE/BLSAddrData有效數(shù)據(jù)有效地址5.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):WST1=01個等待周期寫操作,共需3個周期外部存儲器寫訪問波形(WST2=0):XCLKCSOEWE/30XCLKCSOEWE/BLSAddrData有效數(shù)據(jù)有效地址5.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):WST1=01個等待周期寫操作,共需3個周期外部存儲器寫訪問波形(WST2=1):增加1個等待周期XCLKCSOEWE/BLSAddrData有效數(shù)據(jù)有效地址31外部存儲器寫訪問波形(WST2=1):XCLKCSOEWE/BLSAddrData5.6外部存儲器控制器(EMC)相關寄存器位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):寫操作,共需4個周期有效數(shù)據(jù)有效地址WST1=12個等待周期外部存儲器寫訪問波形(WST2=1):XCLKCSOEWE/325.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):BUSERR:總線錯誤狀態(tài)位。如果EMC檢測到AMBA總線上出現(xiàn)一個大于32位數(shù)據(jù)訪問的請求,那么該位將置位。ARM7TDMI-S內核不會出現(xiàn)這樣的請求;WPERR:錯誤寫狀態(tài)位。如果對一個已經(jīng)寫保護(WP位為1)的存儲器組進行寫操作,該位將置位。向該位寫入1,可以清零該位。5.6外部存儲器控制器(EMC)相關寄存器位31:302335.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):WP:該位為1時,相應的存儲器組被寫保護;BM:如果外部存儲器使用了BurstROM,將該位置1;AT:該域通常寫入00。5.6外部存儲器控制器(EMC)相關寄存器位31:302345.6外部存儲器控制器(EMC)相關寄存器位31:3029:2827262524功能ATMWBMWPWPERRBUSERR位23:1615:11109:543:0功能保留WST2RBLEWST1保留IDCY存儲器組配置寄存器0~3(BCFG0~3):MW:該位控制相應存儲器組的數(shù)據(jù)總線寬度,如下表所示。BCFGx[29:28]數(shù)據(jù)總線寬度0080116103211保留5.6外部存儲器控制器(EMC)相關寄存器位31:302355.6外部存儲器控制器(EMC)相關寄存器MW控制域(BCFG[29:28])與引腳BOOT1:0的關系:

由于Bank0可用于引導程序運行,所以BCFG0[29:28]的復位值與引腳BOOT1:0的設定有關(當BOOT1:0=11時,復位后從片內Flash引導程序運行)。Bank復位時BOOT1:0的狀態(tài)BCFG[29:28]復位值存儲器寬度0LL0080LH01160HL10320HH10321XX10322XX01163XX0085.6外部存儲器控制器(EMC)相關寄存器MW控制域(B365.6外部存儲器控制器(EMC)與外部存儲器的連接如果存儲器組配置成32位寬度,地址線A0和A1無用,可作為GPIO使用(由PINSEL2設置);如果存儲器組配置成16位寬度,地址線A0無用,可作為GPIO使用(由PINSEL2設置);如果存儲器組配置成8位寬度,并且使能字節(jié)定位功能(RBLE=1),存儲器的寫信號由BLS[0]提供,否則由WE信號提供;同一寄存器組的器件寬度必須一致。5.6外部存儲器控制器(EMC)與外部存儲器的連接如果存37與外部存儲器連接——32位寬度由1片32位寬度的存儲器芯片構成32位存儲器由2片16位寬度的存儲器芯片構成32位存儲器由4片8位的存儲器芯片構成32位存儲器與外部存儲器連接——32位寬度由1片32位寬度的存儲器芯片構38與外部存儲器連接——8/16位寬度由1片16位寬度的存儲器芯片構成16位存儲器由2片8位寬度的存儲器芯片構成16位存儲器由1片8位寬度的存儲器芯片構成8位存儲器使用字節(jié)定位引腳BLS[0]作為寫使能信號與外部存儲器連接——8/16位寬度由1片16位寬度的存儲器芯39相關啟動代碼分析...LDRR0,=PINSEL2IF:DEF:EN_CRPLDRR1,=0x0f814910ELSELDRR1,=0x0f814914ENDIFSTRR1,[R0]LDRR0,=BCFG0LDRR1,=0x1000ffefSTRR1,[R0]...C代碼:

在LPC2200的啟動代碼中包含總線的初始化設置。設置步驟:1.設置引腳連接模塊,將P2口用于外部存儲器總線接口。這里使用了匯編的條件編譯語句,前者為芯片加密時的設置值(禁止JTAG調試);2.設置BANK0,將其設置為16位總線接口,使能字節(jié)定位功能,并把讀寫周期設置為最大,以兼容不同速度的外部存儲器,實際應用中根據(jù)存儲器的實際速度進行調整;芯片加密,禁止JTAG調試功能相關啟動代碼分析...C代碼:在LPC240相關啟動代碼分析...LDRR0,=BCFG1LDRR1,=0x1000ffefSTRR1,[R0];LDRR0,=BCFG2;LDRR1,=0x2000ffef;STRR1,[R0];LDRR0,=BCFG3;LDRR1,=0x2000ffef;STRR1,[R0]...C代碼:設置步驟:3.設置BANK1,與BANK0的設置值相同;4.BANK3和BANK4被設置為32位寬度其它與BANK0相同。因為在暫時沒有使用到這兩個BNAK,所以在此被屏蔽,需要使用時再進行設置;相關啟動代碼分析...C代碼:設置步驟:3.設置BANK41第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調制器(PWM)16.A/D轉換器17.實時時鐘18.看門狗第5章目錄1.簡介10.UART0425.7引腳連接模塊概述LPC2000系列微控制器的大部分管腳都具有多種功能,即管腳復用,但是同一引腳在同一時刻只能使用其中一個功能,通過配置相關寄存器控制多路開關來連接引腳與片內外設。GPIOTXD0PWM1輸出P0.0通過引腳連接模塊控制引腳功能5.7引腳連接模塊概述LPC2000系列43外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱00011011復位值1:0P0.0GPIOP0.0TxD0PWM1保留003:2P0.1GPIOP0.1RxD0PWM3EINT0005:4P0.2GPIOP0.2SCL捕獲0.0保留007:6P0.3GPIOP0.3SDA匹配0.0EINT1009:8P0.4GPIOP0.4SCK0捕獲0.1保留0011:10P0.5GPIOP0.5MISO0匹配0.1保留0013:12P0.6GPIOP0.6MOSI0捕獲0.2保留0015:14P0.7GPIOP0.7SSEL0PWM2EINT20017:16P0.8GPIOP0.8TxD1PWM4保留0019:18P0.9GPIOP0.9RxD1PWM6EINT30021:20P0.10GPIOP0.10RTS捕獲1.0保留0023:22P0.11GPIOP0.11CTS捕獲1.1保留0025:24P0.12GPIOP0.12DSR匹配1.0保留0027:26P0.13GPIOP0.13DTR匹配1.1保留0029:28P0.14GPIOP0.14CDEINT1保留0031:30P0.15GPIOP0.15RIEINT2保留00表示寄存器中某兩位的設定值如PINSEL0[1:0]=01時,連接TXD0表示寄存器中的控制位如[9:8]表示PINSEL0寄存器的第9和8位外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱44外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱00011011復位值1:0P0.0GPIOP0.0TxD0PWM1保留003:2P0.1GPIOP0.1RxD0PWM3EINT0005:4P0.2GPIOP0.2SCL捕獲0.0保留007:6P0.3GPIOP0.3SDA匹配0.0EINT1009:8P0.4GPIOP0.4SCK0捕獲0.1保留0011:10P0.5GPIOP0.5MISO0匹配0.1保留0013:12P0.6GPIOP0.6MOSI0捕獲0.2保留0015:14P0.7GPIOP0.7SSEL0PWM2EINT20017:16P0.8GPIOP0.8TxD1PWM4保留0019:18P0.9GPIOP0.9RxD1PWM6EINT30021:20P0.10GPIOP0.10RTS捕獲1.0保留0023:22P0.11GPIOP0.11CTS捕獲1.1保留0025:24P0.12GPIOP0.12DSR匹配1.0保留0027:26P0.13GPIOP0.13DTR匹配1.1保留0029:28P0.14GPIOP0.14CDEINT1保留0031:30P0.15GPIOP0.15RIEINT2保留00如:PINSEL[19:18]設置為01時,引腳P0.9的功能為RXD1外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱45外部存儲器寄存器描述——PINSEL1PINSEL1引腳名稱00011011復位值1:0P0.16GPIOP0.16EINT1匹配0.2保留003:2P0.17GPIOP0.17捕獲1.2SCK1匹配1.2005:4P0.18GPIOP0.18捕獲1.3MISO1匹配1.3007:6P0.19GPIOP0.19匹配1.2MOSI1匹配1.3009:8P0.20GPIOP0.20匹配1.3SSEL1EINT30011:10P0.21GPIOP0.21PWM5保留捕獲1.30013:12P0.22GPIOP0.22保留捕獲0.0匹配0.00015:14P0.23GPIOP0.23保留保留保留0017:16P0.24GPIOP0.24保留保留保留0019:18P0.25GPIOP0.25保留保留保留0021:20P0.26保留0023:22P0.27GPIOP0.27AIN0捕獲0.1匹配0.10025:24P0.28GPIOP0.28AIN1捕獲0.2匹配0.20027:26P0.29GPIOP0.29AIN2捕獲0.3匹配0.30029:28P0.30GPIOP0.30AIN3EINT3捕獲0.00031:30P0.31保留00外部存儲器寄存器描述——PINSEL1PINSEL1引腳名稱46外部存儲器寄存器描述——PINSEL2PINSEL2描述復位值1:0保留002為0時,P1.36:26作GPIO使用為1時,P1.36:26作調試端口使用復位時將P1.26引腳電平取反后作為該位復位值3為0時,P1.25:16作GPIO使用為1時,P1.25:16作跟蹤端口使用復位時將P1.20引腳電平取反后作為該位復位值5:4控制數(shù)據(jù)總線和選通引腳的使用復位時將BOOT1:0引腳電平作為該域的復位值6當數(shù)據(jù)總線不占用P3.29時:為1時,P3.29作GPIO使用為0時,P3.29作AIN6使用17當數(shù)據(jù)總線不占用P3.28時:為1時,P3.28作GPIO使用為0時,P3.28作AIN7使用18為1時,P3.27作GPIO使用為0時,P3.27作WE使用0外部存儲器寄存器描述——PINSEL2PINSEL2描述復位47外部存儲器控制器概述——PINSEL2PINSEL2描述復位值10:9保留—11為1時,P3.26作CS1使用為0時,P3.26作GPIO使用012保留—13當?shù)刂房偩€不占用P3.23引腳時:為1時,P3.23作外部總線時鐘輸出(XCLK)使用為0時,P3.29作GPIO使用015:14為00時,P3.25作GPIO使用為01時,P3.25作CS2使用其它設置值保留0017:16為00時,P3.24作GPIO使用為01時,P3.24作CS3使用其它設置值保留0019:18保留—外部存儲器控制器概述——PINSEL2PINSEL2描述復位48外部存儲器控制器概述——PINSEL2PINSEL2描述復位值20當數(shù)據(jù)總線沒有占用P2.29:28時:為0時,P3.29:28作GPIO使用為1時,保留021當數(shù)據(jù)總線沒有占用P2.30時:為0時,P2.30作GPIO使用為1時,P2.30作AIN4使用122當數(shù)據(jù)總線沒有占用P2.31時:為0時,P2.31作GPIO使用為1時,P2.31作AIN5使用123為0時,P3.0作GPIO使用為1時,P3.0作地址線A0使用復位時,BOOT1:0引腳都為低電平時,該位為124為0時,P3.1作GPIO使用為1時,P3.1作地址線A1使用復位時,BOOT1引腳為低電平時,該位為127:25控制P3.23/A23和P3.22/A2中的地址總線的數(shù)目復位時,BOOT1:0引腳都為高電平時,該域為000,否則為11131:28保留外部存儲器控制器概述——PINSEL2PINSEL2描述復位49PINSEL2[5:4]數(shù)據(jù)總線寬度P2.27:15P2.15:8P2.7:0P3.31P3.30P3.29:28P1.1P1.0008位——D[7:0]BLS0——OECS00116位—D[15:0]D[7:0]BLS0BLS1—OECS01032位D[31:16]D[15:0]D[7:0]BLS0BLS1BLS3:2OECS011無————————外部總線設置PINSEL[5:4]與數(shù)據(jù)總線和控制線的關系列表PINSEL2[27:25]000001010011100101110111地址線寬度無地址線A3:2A5:2A7:2A11:2A15:2A19:2A23:2PINSEL[27:25]與地址線的關系列表注:“—”表示該引腳不作數(shù)據(jù)總線使用,可作其它用途。PINSEL2數(shù)據(jù)總線寬度P2.27:15P2.15:8P2505.7引腳連接模塊使用示例——將P0.8、P0.9設置為TxD1、RxD1PINSEL0=0x05<<16;C代碼:

通過查閱PINSE0寄存器設置表,得到P0.9和P0.8的控制位為PINSEL0[19:16],當該域設置為[0101](0x05)時選擇RxD1和TxD1;

為了不影響別的管腳連接設置,通常選擇下面的設置方法。PINSEL0=(PINSEL0&0xFFF0FFFF)|(0x05<<16);C代碼:5.7引腳連接模塊使用示例——將P0.8、P0.9設置為515.7引腳連接模塊啟動代碼相關部分LPC2200系列微控制器是總線開放型芯片,其總線寬度可設置為8位、16位或32位,對于沒有使用到的總線引腳(比如16位總線寬度時,D16~D31位沒有使用),可作為GPIO使用。5.7引腳連接模塊啟動代碼相關部分LPC525.7引腳連接模塊啟動代碼相關部分...LDRR0,=PINSEL2IF:DEF:EN_CRPLDRR1,=0x0f814910ELSELDRR1,=0x0f814914ENDIFSTRR1,[R0]...C代碼:如果在工程目標中選擇RelInChip項,編譯器將會預定義EN_CRP宏,PINSEL2被設置為0x0f814910,禁止JTAG調試。當沒有預定義EN_CRP宏時,PINSEL2被設置為0x0f814914,使能JTAG調試。5.7引腳連接模塊啟動代碼相關部分...C代碼:如果53第5章目錄1.簡介2.引腳配置3.存儲器尋址4.系統(tǒng)控制模塊5.存儲器加速模塊6.外部存儲器控制器7.引腳連接模塊8.向量中斷控制器9.GPIO10.UART011.UART112.I2C接口13.SPI接口14.定時器0/115.脈寬調制器(PWM)16.A/D轉換器17.實時時鐘18.看門狗第5章目錄1.簡介10.UART0545.8向量中斷控制器(VIC)向量中斷控制器概述ARM7TDMI內核具有兩個中斷輸入,分別為IRQ中斷和FIQ中斷。但是芯片內部有許多中斷源,最多可以有32個中斷輸入請求。向量中斷控制器的作用就是允許哪些中斷源可以產(chǎn)生中斷、可以產(chǎn)生哪類中斷、產(chǎn)生中斷后執(zhí)行哪段服務程序。ARM7TDMI-SIRQFIQVIC中斷請求輸入0中斷請求輸入31...5.8向量中斷控制器(VIC)向量中斷控制器概述555.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的標志VIC通道號WDT看門狗中斷(WDINT)0—保留給軟件中斷1ARM內核EmbeddedICE,DbgCommRx2ARM內核EmbeddedICE,DbgCommTx3定時器0匹配0~3(MR0,MR1,MR2,MR3)捕獲0~3(CR0,CR1,CR2,CR3)4定時器1匹配0~3(MR0,MR1,MR2,MR3)捕獲0~3(CR0,CR1,CR2,CR3)5UART0Rx線狀態(tài)(RLS),發(fā)送保持寄存器空(THRE)Rx數(shù)據(jù)可用(RDA),字符超時指示(CTI)65.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的565.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的標志VIC通道號UART1Rx線狀態(tài)(RLS),發(fā)送保持寄存器空(THRE)Rx數(shù)據(jù)可用(RDA),字符超時指示(CTI)7PWM0匹配0~6(MR0,MR1,MR2,MR3,MR4,MR5,MR6)8I2CSI(狀態(tài)改變)9SPI0SPI中斷標志(SPIF),模式錯誤(MODF)10SPI1SPI中斷標志(SPIF),模式錯誤(MODF)11PLLPLL鎖定(PLOCK)12RTC計數(shù)器增加(RTCCIF),報警(RTCALF)135.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的575.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的標志VIC通道號系統(tǒng)控制外部中斷0(EINT0)14系統(tǒng)控制外部中斷1(EINT1)15系統(tǒng)控制外部中斷2(EINT2)16系統(tǒng)控制外部中斷3(EINT3)17A/DA/D轉換器18保留保留19~315.8向量中斷控制器(VIC)中斷源列表模塊可產(chǎn)生中斷的585.8向量中斷控制器(VIC)允許中斷源產(chǎn)生中斷

芯片內部許多部件都可以作為中斷源,但并不是每個中斷源都需要在中斷情況下進行操作,也可以通過其它方法來處理各種狀態(tài)。比如通過串口發(fā)送一段數(shù)據(jù),可以選擇在一批發(fā)送結束后產(chǎn)生中斷,然后在中斷服務程序中發(fā)送下一批數(shù)據(jù)。也可以通過查詢發(fā)送標志位來決定什么時候發(fā)送下一批數(shù)據(jù)。允許中斷源產(chǎn)生中斷由寄存器VICIntEnable和VICIntEnClr控制,前者使能中斷,后者禁止中斷。5.8向量中斷控制器(VIC)允許中斷源產(chǎn)生中斷595.8向量中斷控制器(VIC)允許中斷源產(chǎn)生中斷中斷使能清零寄存器(VICIntEnClr):位31…1817…210功能保留A/D轉換器外部中斷3ARM內核—WDT

與中斷使能寄存器的功能相反,向某位寫入1時,禁止對應的中斷源產(chǎn)生中斷。中斷使能寄存器(VICIntEnable):位31…1817…210功能保留A/D轉換器外部中斷3ARM內核—WDT

寄存器中每一位控制著一個中斷源,各中斷源的位置與中斷源列表所示相同。向某位寫入1時,允許對應的中斷源產(chǎn)生中斷。5.8向量中斷控制器(VIC)允許中斷源產(chǎn)生中斷中斷使能605.8向量中斷控制器(VIC)選擇產(chǎn)生中斷的類型ARM7TDMI內核具有FIQ和IRQ兩個中斷輸入,所有中斷源產(chǎn)生的中斷都可以選擇產(chǎn)生其中一種中斷。這通過中斷選擇寄存器完成。中斷選擇寄存器(VICIntSelect):位31…1817…210功能保留A/D轉換器外部中斷3ARM內核—WDT

寄存器中每一位控制著一個中斷源,各中斷源的位置與中斷源列表所示相同。向某位寫入1時,對應中斷源產(chǎn)生的中斷為FIQ中斷,否則為IRQ中斷。5.8向量中斷控制器(VIC)選擇產(chǎn)生中斷的類型615.8向量中斷控制器(VIC)中斷輸入請求可以在VIC中被設置為以下三類:FIQ中斷:具有最高優(yōu)先級;向量IRQ中斷:具有中等優(yōu)先級;非向量IRQ中斷:具有最低優(yōu)先級;中斷類型19個中斷輸入VIC將32個中斷輸入進行分配13個未使用FIQ中斷向量IRQ中斷非向量IRQ中斷中斷源0中斷源1……中斷源185.8向量中斷控制器(VIC)中斷輸入請求可以在VIC中625.8向量中斷控制器(VIC)VIC最多支持16個向量IRQ中斷,這些中斷被分為16個優(yōu)先級,并且為每個優(yōu)先級指定一個服務程序入口地址。在發(fā)生向量IRQ中斷后,相應優(yōu)先級的服務程序入口地址被裝入向量地址寄存器VICVectAddr中,通過一條ARM指令即可跳轉到相應的服務程序入口處,所以向量IRQ中斷具有較快的中斷響應。向量IRQ中斷5.8向量中斷控制器(VIC)VIC最多635.8向量中斷控制器(VIC)

任何中斷源都可以設置為非向量IRQ中斷。它與向量IRQ中斷的區(qū)別在于前者不能為每個非向量IRQ中斷源設置服務程序地址,而是所有的非向量IRQ中斷都共用一個相同的服務程序入口地址。當有多個中斷源被設置為非向量IRQ中斷時,需要在用戶程序中識別中斷源,并分別作出處理。所以非向量IRQ中斷響應延時相對較長。非向量IRQ中斷5.8向量中斷控制器(VIC)任何中斷源645.8向量中斷控制器(VIC)VICVectCntl0~15和VICVectAddr0~15兩類寄存器與向量IRQ中斷設置有關,前者為中斷源分配向量IRQ中斷的優(yōu)先級,后者為該中斷優(yōu)先級設置服務程序入口地址。寄存器名稱最后的數(shù)字同時也代表該寄存器控制的向量IRQ中斷的優(yōu)先級,數(shù)值越小優(yōu)先級越高。向量IRQ中斷相關寄存器注意:如果將同一個中斷源分配給多個使能的向量IRQ中斷,那么該中斷源發(fā)生中斷時,會使用最高優(yōu)先級(最低編號)的寄存器設置。5.8向量中斷控制器(VIC)VICVe655.8向量中斷控制器(VIC)向量IRQ中斷相關寄存器向量地址寄存器(VICVectAddr0~15):該寄存器中存放對應優(yōu)先級向量IRQ中斷服務程序的入口地址。位[31:0]功能中斷服務程序入口地址向量控制寄存器(VICVectCntl0~15):VICVectCntlx[4:0]:分配給此優(yōu)先級向量IRQ中斷的中斷源序號;VICVectCntlx[5]:該位為1,使能當前優(yōu)先級的向量IRQ中斷。否則為禁止。位765[4:0]功能--EN中斷源序號5.8向量中斷控制器(VIC)向量IRQ中斷相關寄存器向665.8向量中斷控制器(VIC)非向量IRQ中斷相關寄存器向量地址寄存器(VICDefVectAddr):VICDefVectAddr寄存器存放非向量中斷服務程序的入口地址,當發(fā)生非向量中斷時該寄存器中保存的地址存入VICVectAddr寄存器。位[31:0]功能中斷服務程序入口地址5.8向量中斷控制器(VIC)非向量IRQ中斷相關寄存器675.8向量中斷控制器(VIC)產(chǎn)生中斷后的服務程序地址

在發(fā)生向量IRQ中斷后,VIC能將對應中斷的服務程序地址存入VICVectAddr寄存器中。如果為非向量中斷,將把VICDefVectAddr寄存器的值存入該寄存器。在異常向量表的IRQ異常入口處放置一條指令,將VICVectAddr寄存器的內容裝入程序計數(shù)器(PC),就可以跳轉到當前中斷的服務函數(shù)。這樣的設計可以減小中斷響應延時。向量地址寄存器(VICVectAddr):位[31:0]功能中斷服務程序入口地址5.8向量中斷控制器(VIC)產(chǎn)生中斷后的服務程序地址685.8向量中斷控制器(VIC)中斷狀態(tài)寄存器

如果使用了多個非向量IRQ中斷或多個FIQ中斷,那么在發(fā)生中斷后要在程序中查找中斷源。通過IRQ狀態(tài)寄存器和FIQ狀態(tài)寄存器可以了解到這些中斷源的中斷請求狀態(tài)。任何在VIC中使能的中斷都會把中斷請求反映在“所有中斷狀態(tài)寄存器(VICRawIntr)”中。5.8向量中斷控制器(VIC)中斷狀態(tài)寄存器69IRQ狀態(tài)寄存器(VICIRQStatus):位[31:0]功能當某位為1時表示對應位的中斷源產(chǎn)生IRQ中斷請求。5.8向量中斷控制器(VIC)中斷狀態(tài)寄存器所有中斷狀態(tài)寄存器(VICRawIntr):位[31:0]功能當某位為1時表示對應位的中斷源產(chǎn)生中斷請求。FIQ狀態(tài)寄存器(VICFIQStatus):位[31:0]功能當某位為1時表示對應位的中斷源產(chǎn)生FIQ中斷請求。IRQ狀態(tài)寄存器(VICIRQStatus):位[31:0]705.8向量中斷控制器(VIC)軟件中斷寄存器軟件中斷寄存器(VICSoftInt):位[31:0]功能當某位為1時,將產(chǎn)生與該位相對應的中斷請求。軟件中斷清零寄存器(VICSoftIntClear):位[31:0]功能當某位為1時,將清零VICSoftInt寄存器中對應位

在一些特殊場合或者調試時,可能需要使用軟件強制產(chǎn)生某個中斷請求。5.8向量中斷控制器(VIC)軟件中斷寄存器軟件中斷寄存715.8向量中斷控制器(VIC)保護使能寄存器軟件中斷寄存器(VICSoftInt):位[31:1]0功能—當該位為1時,只能在特權模式下訪問VIC寄存器。

在某些場合可能需要禁止在用戶模式下訪問VIC寄存器,以提高軟件的安全等級。5.8向量中斷控制器(VIC)保護使能寄存器軟件中斷寄存72IRQ中斷的設計實例

設置外部中斷0產(chǎn)生向量IRQ中斷后執(zhí)行中斷服務程序“IRQ_Eint0()”。...PINSEL1=(PINSEL1&0xFFFFFFFC)|0x01;VICIntSelect=0x00000000;

溫馨提示

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

評論

0/150

提交評論