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

下載本文檔

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

文檔簡(jiǎn)介

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

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

這些引腳與P1、P2和P3口GPIO功能復(fù)用,所以在使用外部總線前首先要正確設(shè)置PINSEL2寄存器。可以在硬件上對(duì)引腳BOOT1:0設(shè)定,復(fù)位時(shí)微處理器自動(dòng)初始化PINSEL2?;蛘咴谲浖献止?jié)初始化PINSEL2,這只適用于片內(nèi)FLASH引導(dǎo)程序運(yùn)行的系統(tǒng)中。外部存儲(chǔ)器總線接口描述引腳名類(lèi)型引腳描述D[31:0]輸入/18XCLKCSOEWE/BLSAddrData外部存儲(chǔ)器讀訪問(wèn)典型波形:外部存儲(chǔ)器總線接口描述外部存儲(chǔ)器寫(xiě)訪問(wèn)典型波形:XCLKCSOEWE/BLSAddrData有效數(shù)據(jù)有效地址有效地址變化數(shù)據(jù)有效數(shù)據(jù)經(jīng)過(guò)一個(gè)等待狀態(tài)后,存儲(chǔ)器輸出有效數(shù)據(jù)。XCLKCSOEWE/BLSAddrData外部存儲(chǔ)器讀訪問(wèn)195.6外部存儲(chǔ)器控制器(EMC)相關(guān)寄存器

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

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

在LPC2200的啟動(dòng)代碼中包含總線的初始化設(shè)置。設(shè)置步驟:1.設(shè)置引腳連接模塊,將P2口用于外部存儲(chǔ)器總線接口。這里使用了匯編的條件編譯語(yǔ)句,前者為芯片加密時(shí)的設(shè)置值(禁止JTAG調(diào)試);2.設(shè)置BANK0,將其設(shè)置為16位總線接口,使能字節(jié)定位功能,并把讀寫(xiě)周期設(shè)置為最大,以兼容不同速度的外部存儲(chǔ)器,實(shí)際應(yīng)用中根據(jù)存儲(chǔ)器的實(shí)際速度進(jìn)行調(diào)整;芯片加密,禁止JTAG調(diào)試功能相關(guān)啟動(dòng)代碼分析...C代碼:在LPC240相關(guān)啟動(dòng)代碼分析...LDRR0,=BCFG1LDRR1,=0x1000ffefSTRR1,[R0];LDRR0,=BCFG2;LDRR1,=0x2000ffef;STRR1,[R0];LDRR0,=BCFG3;LDRR1,=0x2000ffef;STRR1,[R0]...C代碼:設(shè)置步驟:3.設(shè)置BANK1,與BANK0的設(shè)置值相同;4.BANK3和BANK4被設(shè)置為32位寬度其它與BANK0相同。因?yàn)樵跁簳r(shí)沒(méi)有使用到這兩個(gè)BNAK,所以在此被屏蔽,需要使用時(shí)再進(jìn)行設(shè)置;相關(guān)啟動(dòng)代碼分析...C代碼:設(shè)置步驟:3.設(shè)置BANK41第5章目錄1.簡(jiǎn)介2.引腳配置3.存儲(chǔ)器尋址4.系統(tǒng)控制模塊5.存儲(chǔ)器加速模塊6.外部存儲(chǔ)器控制器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.看門(mén)狗第5章目錄1.簡(jiǎn)介10.UART0425.7引腳連接模塊概述LPC2000系列微控制器的大部分管腳都具有多種功能,即管腳復(fù)用,但是同一引腳在同一時(shí)刻只能使用其中一個(gè)功能,通過(guò)配置相關(guān)寄存器控制多路開(kāi)關(guān)來(lái)連接引腳與片內(nèi)外設(shè)。GPIOTXD0PWM1輸出P0.0通過(guò)引腳連接模塊控制引腳功能5.7引腳連接模塊概述LPC2000系列43外部存儲(chǔ)器寄存器描述——PINSEL0PINSEL0引腳名稱(chēng)00011011復(fù)位值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表示寄存器中某兩位的設(shè)定值如PINSEL0[1:0]=01時(shí),連接TXD0表示寄存器中的控制位如[9:8]表示PINSEL0寄存器的第9和8位外部存儲(chǔ)器寄存器描述——PINSEL0PINSEL0引腳名稱(chēng)44外部存儲(chǔ)器寄存器描述——PINSEL0PINSEL0引腳名稱(chēng)00011011復(fù)位值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]設(shè)置為01時(shí),引腳P0.9的功能為RXD1外部存儲(chǔ)器寄存器描述——PINSEL0PINSEL0引腳名稱(chēng)45外部存儲(chǔ)器寄存器描述——PINSEL1PINSEL1引腳名稱(chēng)00011011復(fù)位值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外部存儲(chǔ)器寄存器描述——PINSEL1PINSEL1引腳名稱(chēng)46外部存儲(chǔ)器寄存器描述——PINSEL2PINSEL2描述復(fù)位值1:0保留002為0時(shí),P1.36:26作GPIO使用為1時(shí),P1.36:26作調(diào)試端口使用復(fù)位時(shí)將P1.26引腳電平取反后作為該位復(fù)位值3為0時(shí),P1.25:16作GPIO使用為1時(shí),P1.25:16作跟蹤端口使用復(fù)位時(shí)將P1.20引腳電平取反后作為該位復(fù)位值5:4控制數(shù)據(jù)總線和選通引腳的使用復(fù)位時(shí)將BOOT1:0引腳電平作為該域的復(fù)位值6當(dāng)數(shù)據(jù)總線不占用P3.29時(shí):為1時(shí),P3.29作GPIO使用為0時(shí),P3.29作AIN6使用17當(dāng)數(shù)據(jù)總線不占用P3.28時(shí):為1時(shí),P3.28作GPIO使用為0時(shí),P3.28作AIN7使用18為1時(shí),P3.27作GPIO使用為0時(shí),P3.27作WE使用0外部存儲(chǔ)器寄存器描述——PINSEL2PINSEL2描述復(fù)位47外部存儲(chǔ)器控制器概述——PINSEL2PINSEL2描述復(fù)位值10:9保留—11為1時(shí),P3.26作CS1使用為0時(shí),P3.26作GPIO使用012保留—13當(dāng)?shù)刂房偩€不占用P3.23引腳時(shí):為1時(shí),P3.23作外部總線時(shí)鐘輸出(XCLK)使用為0時(shí),P3.29作GPIO使用015:14為00時(shí),P3.25作GPIO使用為01時(shí),P3.25作CS2使用其它設(shè)置值保留0017:16為00時(shí),P3.24作GPIO使用為01時(shí),P3.24作CS3使用其它設(shè)置值保留0019:18保留—外部存儲(chǔ)器控制器概述——PINSEL2PINSEL2描述復(fù)位48外部存儲(chǔ)器控制器概述——PINSEL2PINSEL2描述復(fù)位值20當(dāng)數(shù)據(jù)總線沒(méi)有占用P2.29:28時(shí):為0時(shí),P3.29:28作GPIO使用為1時(shí),保留021當(dāng)數(shù)據(jù)總線沒(méi)有占用P2.30時(shí):為0時(shí),P2.30作GPIO使用為1時(shí),P2.30作AIN4使用122當(dāng)數(shù)據(jù)總線沒(méi)有占用P2.31時(shí):為0時(shí),P2.31作GPIO使用為1時(shí),P2.31作AIN5使用123為0時(shí),P3.0作GPIO使用為1時(shí),P3.0作地址線A0使用復(fù)位時(shí),BOOT1:0引腳都為低電平時(shí),該位為124為0時(shí),P3.1作GPIO使用為1時(shí),P3.1作地址線A1使用復(fù)位時(shí),BOOT1引腳為低電平時(shí),該位為127:25控制P3.23/A23和P3.22/A2中的地址總線的數(shù)目復(fù)位時(shí),BOOT1:0引腳都為高電平時(shí),該域?yàn)?00,否則為11131:28保留外部存儲(chǔ)器控制器概述——PINSEL2PINSEL2描述復(fù)位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無(wú)————————外部總線設(shè)置PINSEL[5:4]與數(shù)據(jù)總線和控制線的關(guān)系列表PINSEL2[27:25]000001010011100101110111地址線寬度無(wú)地址線A3:2A5:2A7:2A11:2A15:2A19:2A23:2PINSEL[27:25]與地址線的關(guān)系列表注:“—”表示該引腳不作數(shù)據(jù)總線使用,可作其它用途。PINSEL2數(shù)據(jù)總線寬度P2.27:15P2.15:8P2505.7引腳連接模塊使用示例——將P0.8、P0.9設(shè)置為T(mén)xD1、RxD1PINSEL0=0x05<<16;C代碼:

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

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

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

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

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

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

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

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

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

在一些特殊場(chǎng)合或者調(diào)試時(shí),可能需要使用軟件強(qiáng)制產(chǎn)生某個(gè)中斷請(qǐng)求。5.8向量中斷控制器(VIC)軟件中斷寄存器軟件中斷寄存715.8向量中斷控制器(VIC)保護(hù)使能寄存器軟件中斷寄存器(VICSoftInt):位[31:1]0功能—當(dāng)該位為1時(shí),只能在特權(quán)模式下訪問(wèn)VIC寄存器。

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論