32BitRISC微处理器S3C2410A课件_第1页
32BitRISC微处理器S3C2410A课件_第2页
32BitRISC微处理器S3C2410A课件_第3页
32BitRISC微处理器S3C2410A课件_第4页
32BitRISC微处理器S3C2410A课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

32BitRISC微處理器S3C2410A

3.1S3C2410A簡介

3.1.1S3C2410A內部結構

S3C2410是Samsung公司推出的16/32位RISC處理器,主要面向高性價比、低功耗的手持設備應用。S3C2410有S3C2410X和S3C2410A兩個型號,A型是X型的改進型,具有更好的性能和更低的功耗。為了降低系統的成本,S3C2410A在片上集成了單獨的16KB指令Cache和16KB數據Cache、用於虛擬記憶體管理的MMU、支持STN和TFT的LCD控制器、NANDFlashBootLoader、系統管理器(片選邏輯和SDRAM控制器)、3通道UART、4通道DMA、4通道PWM定時器、I/O口、RTC、8通道10位ADC和觸摸屏介面、I2C匯流排介面、I2S匯流排介面、USB主設備、USB從設備、SD主卡和MMC(多媒體卡)卡介面、2通道的SPI(串行週邊設備介面)以及PLL時鐘發生器。S3C2410A的CPU內核採用的是16/32位ARM920T內核,同時還採用了AMBA(先進的微控制器匯流排體系結構)新型匯流排結構。S3C2410A提供一組完整的系統週邊設備介面,從而大大減少了整個系統的成本,省去了為系統配置額外器件的開銷。S3C2410A集成的片上功能包括:●內核電壓1.8V/2.0V,記憶體電壓3.3V,外部I/O電壓3.3V;●具有16KB的I-Cache和16KB的D-Cache以及MMU;●外部記憶體控制器(SDRAM控制和片選邏輯);●LCD控制器(最大支持4K彩色STN和256K彩色TFT)提供1通道LCD專用DMA;●4通道DMA並有外部請求引腳端;●3通道UART(IrDAl.0,16位元組TxFIFO和16位元組RxFIFO)/2通道SPI;●1通道多主設I2C匯流排和1通道I2S匯流排控制器;●版本1.0SD主介面和2.11相容版MMC卡協議;●2個USB主設介面/1個USB從設介面(版本1.1);●4通道PWM定時器和1通道內部定時器;●看門狗定時器;●117位通用I/O口和24通道外部中斷源;●電源控制模式有正常、慢速、空閒和電源關斷4種模式;●8通道10位ADC和觸摸屏介面;●具有日曆功能的RTC;●使用PLL的片上時鐘發生器。圖3.1.1S3C2410A內部結構方框圖3.1.2S3C2410A的技術特點

S3C2410A具有如下特點:1.體系結構●採用ARM920TCPU內核,具有16/32位RISC體系結構和強大的指令集,為手持設備和通用嵌入式應用提供片上集成系統解決方案;●增強的ARM體系結構MMU,支持WinCE、EPOC32和Linux;●使用指令Cache、數據Cache、寫緩衝器和物理地址TAGRAM減少主記憶體帶寬和反應時間對性能的影響;●ARM920TCPU內核支持ARM調試體系結構;●內部採用先進的微控制器匯流排體系結構(AMBA)(AMBA2.0,AHB/APB)。2.系統管理器●支持小/大端方式。●8個記憶體bank:

一6個用於ROM、SRAM及其他;一2個用於ROM、SRAM和同步DRAM。●地址空間:每bank128MB(byte)(總共1GB)。●每個bank支持可編程的8/16/32位數據匯流排寬度。●bank0~bank6都採用固定的bank起始地址。●bank7具有可編程的bank起始地址和大小。●所有的記憶體bank都具有可編程的訪問週期。●支持使用外部等待信號來填充匯流排週期。●支持掉電時的SDRAM自刷新模式。●支持各種類型的ROM啟動(booting),包括NOR/NANDFlash和EEPROM等。3.NANDFlashBootLoader(啟動裝載)●支持從NANDFlash記憶體的啟動。●採用4KB內部緩衝器用於啟動引導。●支持啟動之後NAND記憶體仍然作為外部記憶體使用。4.Cache記憶體●I-Cache(16KB)和D-Cache(16KB)為64路組相聯Cache。●每行8字長度,其中每行帶有一個有效位和兩個髒位(dirtybits)。●採用偽亂數或迴圈替換演算法。●採用寫直達(Write-through)或寫回(Write-back)Cache操作來更新主記憶體。●寫緩衝器可以保存16個字的數據值和4個地址值。5.時鐘和電源管理●片上MPLL和UPLL:一UPLL產生用於USB主機/設備操作的時鐘;一MPLL產生操作MCU的時鐘,時鐘頻率最高可達266MHz(2.0V內核電壓)。●通過軟體可以有選擇地為每個功能模組提供時鐘。●電源模式包括正常、慢速、空閒和掉電模式:一正常模式為正常運行模式;一慢速模式為不加PLL的低時鐘頻率模式;一空閒模式只停止CPU的時鐘;一掉電模式切斷所有外設和內核的電源。●可以通過EINT[15:0]或RTC報警中斷從掉電模式中喚醒處理器。6.中斷控制器●55個中斷源(1個看門狗定時器、5個定時器、9個UART、24個外部中斷、4個DMA、2個RTC、2個ADC、1個I2C、2個SPI、1個SDI、2個USB、1個LCD和1個電池故障);●支持電平/邊沿觸發模式的外部中斷源;●可編程的電平/邊沿觸發極性;●為緊急中斷請求提供快速中斷服務(FIQ)支持。7.具有脈衝寬度調製(PWM)的定時器●具有PWM功能的4通道16位定時器,可基於DMA或中斷操作的1通道16位內部定時器;●可編程的占空比週期、頻率和極性;●能產生死區;●支持外部時鐘源。8.RTC(即時時鐘)●完整的時鐘特性:秒、分、時、日期、星期、月和年;●工作頻率32.768kHz;●具有報警中斷;●具有時鐘滴答中斷。9.通用I/O口●24個外部中斷口;●多路複用的I/O口。10.UAR ●3通道UART,可以基於DMA模式或中斷模式操作; ●支持5位、6位、7位或者8位串行數據發送/接收(Tx/Rx); ●支持外部時鐘作為UART的運行時鐘(UEXTCLK); ●串列傳輸速率可編程; ●支持IrDA1.0; ●支持回環(Loopback)測試模式; ●每個通道內部都具有16位元組的發送FIFO和16位元組的接收FIFO。11.DMA控制器 ●4通道的DMA控制器; ●支持記憶體到記憶體、I/O到記憶體、記憶體到I/O和I/O到I/O的傳送; ●採用突發傳送模式提高傳送速率。12.A/D轉換和觸摸屏介面 ●8通道多路複用ADC; ●轉換速率最大為500KSPS(KiloSamplesPerSecond,每秒採樣千點),10位解析度。13.LCD控制器STNLCD顯示特性 ●支持3種類型的STNLCD顯示幕:4位雙掃描、4位單掃描和8位單掃描顯示類型; ●對於STNLCD支持單色模式、4級灰度、16級灰度、256彩色和4096彩色; ●支持多種螢幕尺寸,典型的螢幕尺寸有:640×480,320×240,160×160; ●最大虛擬螢幕大小是4MB; ●在256彩色模式下支持的最大虛擬螢幕尺寸是:4096×1024,2048×2048,1024×40960或者其他尺寸。14.TFT(ThinFilmTransistor,薄膜場效應電晶體)彩色顯示特性 ●彩色TFT支持1、2、4或8bpp(bitperpixel,每像素所占位數)調色顯示; ●支持16bpp無調色真彩顯示; ●在24bpp模式下支持最大16M彩色TFT; 支持多種螢幕尺寸,典型的螢幕尺寸有:640×480,320×320,160×160或者其他尺寸; ●最大虛擬屏大小是4MB; ●在64彩色模式下支持的最大虛擬螢幕尺寸是:2048×1024或者其他尺寸。15.看門狗定時器 ●16位看門狗定時器; ●定時器溢出時產生中斷請求或系統複位。16.I2C匯流排介面 ●1通道多主機I2C匯流排; ●串行、8位、雙向數據傳送,在標準模式下數據傳送速率可達100kb/s,在快速模式下可達400kb/s。17.I2S匯流排介面 ●1通道音頻I2S匯流排介面,可基於DMA方式操作; ●串行,每通道8/16位數據傳輸; 串行,每通道8/16位數據傳輸; ●發送和接收(Tx/Rx)具備128位元組FIFO(64位元組發送FIFO+64位元組接收FIFO); ●支持I2S格式和MSB-justified數據格式。18.USB主設備 ●2個USB主設介面; ●遵從OHCIRevl.0標準; ●相容USBVerl.1標準。19.USB從設備 ●1個USB從設介面; ●具備5個USB設備端口; ●相容USBVerl.1標準。20.SD主機介面 ●相容SD存儲卡協議1.0版; ●相容SDIO卡協議1.0版; 發送和接收採用位元組FIFO; ●基於DMA或中斷模式操作; ●相容MMC卡協議2.11版。21.SPI介面 ●相容2通道SPI協議2.11版; ●發送和接收採用2位元組的移位寄存器; ●基於DMA或中斷模式操作。22.工作電壓 ●內核電壓:1.8V,最高工作頻率200MHz(S3C2410A-20);2.0V,最高工作頻率266MHz(S3C2410A-26)。 ●記憶體和I/O電壓:3.3V。23.封裝 ●採用272-FBGA封裝。3.2S3C2410A記憶體控制器3.2.1S3C2410A的記憶體控制器特性

S3C2410A的記憶體控制器提供訪問外部記憶體所需要的記憶體控制信號,具有以下特性: ●支持小/大端(通過軟體選擇)。 ●地址空間:每個bank有128MB(總共有8個bank,共1GB)。 ●除bank0只能是16/32位寬之外,其他bank都具有可編程的訪問位寬(8/16/32位)。 ●總共有8個記憶體bank(bank0~bank7):一其中6個用於ROM,SRAM等; 一剩下2個用於ROM,SRAM,SDRAM等。 ●7個固定的記憶體bank(bank0~bank6)起始地址。 ●最後一個bank(bank7)的起始地址是可調整的。 ●最後兩個bank(bank6和bank7)的大小是可編程的。 ●所有記憶體bank的訪問週期都是可編程的。 ●匯流排訪問週期可以通過插入外部等待來擴展。 ●支持SDRAM的自刷新和掉電模式。3.2.1S3C2410A的記憶體映射

S3C2410A複位後,記憶體的映射情況如圖3.2.1所示,bank6和bank7對應不同大小記憶體時的地址範圍參見表3.2.1。[不使用NANDFlash作為啟動ROM][使用NANDFlash]作為啟動ROM]注意:①SROM表示是ROM或SRAM類型的記憶體②SFR指特殊功能寄存器。圖3.2.1S3C2410A複位後的記憶體映射表3.2.1bank6和bank7地址注:bank6和bank7必須具有相同的記憶體大小。3.3複位、時鐘和電源管理1.複位電路在系統中,複位電路主要完成系統的上電複位和系統在運行時用戶的按鍵複位功能。複位電路可由簡單的RC電路構成,也可以使用其他的相對較複雜,但功能更完善的電路。為了提供高效的電源監視性能,選取了專門的系統監視複位晶片IMP811S。該晶片性能優良,可以通過手動控制系統的複位,同時還可以即時監控系統的電源。一旦系統電源低於系統複位的閥值(2.9V),IMP811S將會對系統進行複位。系統複位電路如圖3.3.1所示。圖3.3.1系統複位電路

也可以採用如圖3.3.2所示較簡單的RC複位電路,經使用證明,其複位邏輯是可靠的。該複位電路的工作原理如下:在系統上電時,通過電阻R108向電容C162充電,當C162兩端的電壓未達到高電平的門限電壓時,RESET端輸出為高電平,系統處於複位狀態;當C162兩端的電壓達到高電平的門限電壓時,RESET端輸出為低電平,系統進入正常工作狀態。當用戶按下按鈕RESET時,C162兩端的電荷被放掉,RESET端輸出為高電平,系統進入複位狀態,再重複以上的充電過程,系統進入正常工作狀態。兩級非門電路用於按鈕去抖動和波形整形;nRESET端的輸出狀態與RESET端相反,用於低電平複位的器件;通過調整R108和C162的參數,可調整複位狀態的時間。圖3.3.2系統的複位電路2.PLL與時鐘電路

S3C2410A有兩個鎖相環-MPLL和UPLL。MPLL用於CPU及其他週邊器件,UPLL專用與USB設備(48MHz)。

通過MPLL會產生三個部分的時鐘頻率:FCLK、HCLK、PLCK。FCLK用於CPU核,HCLK用於AHB匯流排的設備(比如SDRAM),PCLK用於APB匯流排的設備(比如UART)。

時鐘控制邏輯可以在不需要PLL的情況下產生慢速時鐘,並且可以通過軟體來控制時鐘與每個週邊模組是連接還是斷開,從而降低功耗。FCLK:CPU時鐘,就是處理器的主頻。常說的S3C2410A能上200MHz,S3C2440A能上400MHz就是指它。例如用於ARM920T。HCLK:用於AHB匯流排週邊時鐘,例如用於ARM920T、記憶體控制器、中斷控制器、LCD控制器、DMA和USBHost。PCLK:用於APB匯流排週邊時鐘,例如用於WDT,I2S,I2C,PWMtimer,MMC介面,ADC,UART,GPIO,RTC和SPI等片內外圍設備。

如下圖所示時鐘結構模組圖。主時鐘源來自外部晶振(XTIPLL)或者是外部時鐘(EXTCLK).時鐘生成器包含了一個振盪器(振盪放大器),其連接外部晶振,並且還有2個PLL,可以產生滿足S3C2410所需的高頻時鐘。

2410支持FCLK,HCLK,PCLK分頻比的選擇。比例由CLKDIVN控制寄存器中的HDIVN,PDIVN位確定。注:CLKDIVN的值設置在PLL鎖定期後有效。

1、上電幾毫秒後,晶振輸出穩定,FCLK=晶振頻率,nRESET信號恢復高電平後,CPU開始執行指令。2、我們可以在程式開頭啟動MPLL,在設置MPLL的幾個寄存器後,需要等待一段時間(LockTime),MPLL的輸出才穩定。在這段時間(LockTime)內,FCLK停振,CPU停止工作。LockTime的長短由寄存器LOCKTIME設定。3、LockTime之後,MPLL輸出正常,CPU工作在新的FCLK下。

S3C2410A微處理器的主時鐘可以由外部時鐘源提供,也可以由外部振盪器提供,如圖3.3.3所示,採用哪種方式通過引腳OM[3:2]來進行選擇。OM[3:2]=00時,MPLL和UPLL的時鐘均選擇外部晶體振盪器;OM[3:2]=0l時,MPLL的時鐘選擇外部晶體振盪器;UPLL選擇外部時鐘源;OM[3:2]=10時,MPLL的時鐘選擇外部時鐘源;UPLL選擇外部晶體振盪器;OM[3:2]=11時,MPLL和UPLL的時鐘均選擇外部時鐘源。

在系統中選擇OM[3:2]均接地的方式,即採用外部振盪器提供系統時鐘。系統時鐘源直接採用外部晶振,內部PLL電路可以調整系統時鐘,使系統運行速度更快。S3C2410的系統時鐘電路見圖3.3.3,其外部振盪器由12MHz晶振和2個15pF的微調電容組成。振盪電路輸出接到S3C2410X微處理器的XTIPLL腳,輸入由XTOPLL提供。由於片內的PLL電路兼有頻率放大和信號提純的功能,因此,系統可以以較低的外部時鐘信號獲得較高的工作頻率,從而降低因高速開關時鐘所造成的高頻雜訊。圖3.3.3S3C2410A微處理器外部時鐘電路3.電源電路在S3C2410A中的電源管理模組具有正常模式、慢速模式、空閒模式和掉電模式4種有效模式。在正常模式,電源管理模組為CPU和S3C2410A中的所有週邊設備提供時鐘。在這個模式,由於所有週邊設備都處於開啟狀態,因此功耗達到最大。用戶可以通過軟體來控制週邊設備的操作。例如,如果不需要定時器,那麼用戶可以斷開定時器的時鐘,以降低功耗。慢速模式又稱無PLL模式。與正常模式不同,在慢速模式不使用PLL,而使用外部時鐘(XTIPLL或EXTCLK)直接作為S3C2410A中的FCLK。在這種模式下,功耗大小僅取決外部時鐘的頻率,功耗與PLL無關。在空閒模式下,電源管理模組只斷開CPU內核的時鐘(FCLK),但仍為所有其他週邊設備提供時鐘。空閒模式降低了由CPU內核產生的功耗。任何中斷請求可以從空閒模式喚醒CPU。

在掉電模式,電源管理模組斷開內部電源。因此,除喚醒邏輯以外,CPU和內部邏輯都不會產生功耗。在設計系統電源電路之前對S3C2410A的電源引腳進行分析:VDDalive引腳給處理器複位模組和端口寄存器提供1.8V電壓;VDDi和VDDiarm為處理器內核提供1.8V電壓;VDDi_MPLL為MPLL提供1.8V模擬電源和數字電源;VDDi_UPLL為UPLL提供1.8V模擬電源和數字電源;VDDOP和VDDMOP分別為處理器端口和處理器記憶體端口提供3.3V電壓;VDD_ADC為處理器內的ADC系統提供3.3V電壓;VDDRTC為時鐘電路提供1.8V電壓,該電壓在系統掉電後仍需要維持。系統需要使用3.3V和1.8V的直流穩壓電源。為簡化系統電源電路的設計,要求整個系統的輸入電壓為高質量的5V直流穩壓電源。VDD3.3V提供給VDDMOP,VDDIO,VDDADC和VCC引腳,VDD1.8V提供給VDDi_X。5V輸入電壓經過DC-DC轉換器可完成5V到3.3V和1.8V的電壓轉換。系統中RTC所需電壓由1.8V電源和後備電源共同提供,在系統工作時1.8V電壓有效,系統掉電時後備電池開始工作,以供RTC電路所需的電源,同時使用發光二極體指示電源狀態。S3C2410A電源電路如圖3.3.4所示。(a)3.3V電源電路(b)1.8V電源電路(電阻R203=100K,R204=47.5K,阻值需要修改)圖3.3.4電源電路當R14=2.2K時,Vout=1.823V;當R14=1.69K時,Vout=1.995V3.4S3C2410A的中斷控制3.4.1ARM系統的中斷處理

ARM9內核具有兩種中斷輸入,分別為IRQ中斷和FIQ中斷。但是晶片內部有許多中斷源,最多可以有56個中斷輸入請求。中斷控制的作用就是允許哪些中斷源可以產生中斷、可以產生哪類中斷、產生中斷後執行哪段中斷服務程式。在ARM系統中,一旦有中斷發生,正在執行的程式都會停下來,通常都會執行如下的中斷步驟:

(1)保存現場。保存當前的PC值到R14,保存當前的程式運行狀態到SPSR。

(2)模式切換。根據發生的中斷類型,進入IRQ模式或FIQ模式。

(3)獲取中斷服務副程式地址。PC指針跳到異常向量表所保存的IRQ或FIQ地址處,IRQ或FIQ的異常向量地址處一般保存的是中斷服務副程式的地址,PC指針跳入到中斷服務副程式,進行中斷處理。(4)多個中斷請求處理。在ARM系統中,可以存在多個中斷請求源,比如串口中斷、AD中斷、外部中斷、定時器中斷及DMA中斷等,所以可能出現多個中斷源同時請求中斷的情況。為了更好地區分各個中斷源,通常為這些中斷定義不同的優先順序別,並為每一個中斷設置一個中斷標誌位。當發生中斷時,通過判斷中斷優先順序以及訪問中斷標誌位的狀態來識別哪一個中斷發生了,進而調用相應的函數進行中斷處理。(5)中斷返回,恢復現場。當完成中斷服務副程式後,將SPSR中保存的程式運行狀態恢復到CPSR中,R14中保存的被中斷程式的地址恢復到PC中,繼續執行被中斷的程式。

中斷控制器的任務是在片內外設和外部中斷源組成的多重中斷發生時,選擇其中一個中斷,通過FIQ或IRQ向CPU內核發出中斷請求。實際上最初CPU內核只有FIQ和IRQ兩種中斷,其他中斷都是各個晶片廠家在設計晶片時,通過一個中斷控制器來擴展定義的。這些中斷根據中斷優先順序的高低來進行處理,更符合實際應用系統中要求提供多個中斷源的請求。3.4.2S3C2410A的中斷控制器中斷源掛起寄存器(SRCPND)--確定中斷源是否發出中斷請求中斷模式寄存器(INTMOD)--確定中斷源的工作模式中斷狀態指示寄存器(INTPND)中斷遮罩寄存器(INTMSK)—確定中斷源是否被遮罩優先順序寄存器(PRIORITY)—確定中斷源的優先順序中斷偏移寄存器(INTOFFSET)外部中斷控制寄存器(EXTINTn)外部中斷遮罩寄存器(EINTMASK)

表3.4.1S3C2410A的中斷源中斷源描述仲裁器分組INT_ADCADCEOC和觸摸中斷(INT_ADC/INT_TC)ARB5INT_RTCRTC報警中斷ARB5INT_SPI1SPI1中斷ARB5INT_UART0UART0中斷(故障、接收和發送)ARB5INT_IICI2C中斷ARB4VINT_USBHUSB主設備中斷ARB4INT_USBUSB從設備中斷ARB4保留保留ARB4INT_UART1UART1中斷(故障、接收和發送)ARB4INT_SPI0SPI0中斷ARB4INT_SDISDI中斷ARB3INT_DMA3DMA通道3中斷ARB3INT_DMA2DMA通道2中斷ARB3INT_DMA1DMA通道1中斷ARB3INT_DMA0DMA通道0中斷ARB3INT_LCDLCD中斷ARB3INT_UART2UART2中斷(故障、接收和發送)ARB2INT_TIMER4定時器4中斷ARB2INT_TIMERS定時器3中斷ARB2INT_TIMER2定時器2中斷ARB2INT_TIMER1定時器1中斷ARB2INT_TIMER0定時器0中斷ARB2INT_WDT看門狗定時器中斷ARB1INT_TICKRTC時鐘滴答中斷ARB1nBATT_FLT電源故障中斷ARB1保留保留ARB1EINT8_23外部中斷8~23ARB1EINT4_7外部中斷4~7ARB1EINT3外部中斷3ARB0EINT2外部中斷2ARB0EINTI外部中斷1ARB0EINT0外部中斷0ARB0寄存器地址R/W描述複位值SRCPND0X4A000000R/W中斷源掛起寄存器,為0時,無中斷請求;當有中斷產生,相應位置1。所有來自中斷源的中斷請求首先被登記到中斷源掛起寄存器中0x00000000INTMOD0X4A000004R/W中斷模式寄存器:0=IRQ模式,1=FIQ模式。多個IRQ中斷的仲裁過程在優先順序寄存器進行。0x00000000INTMSK0X4A000008R/W中斷遮罩寄存器:0=允許中斷,1=遮罩中斷。中斷遮罩寄存器的主要功能是遮罩相應中斷的請求,即使中斷掛起寄存器的相應位已經置1,也就是說已經有相應的中斷請求發生了;但是如果此時中斷遮罩寄存器的相應位置1,則中斷控制器將遮罩該中斷請求CPU不會回應該中斷0xFFFFFFFFS3C2410A中斷控制器的特殊寄存器如表3.4.2所示,中斷控制需要正確的設置這些寄存器,寄存器中每一位的含義請參閱S3C2410A數據手冊。表3.4.2中斷控制器的特殊寄存器PRIORITY0x4A00000CR/WIRQ中斷優先順序控制寄存器0x7FINTPND0X4A000010R/W中斷狀態指示寄存器:0=該中斷沒有請求,1=該中斷源發出中斷請求0x00000000INTOFFSET0X4A000014R中斷偏移寄存器,指示IRQ中斷源0x00000000SUBSRCPND0X4A000018R/W子中斷源狀態寄存器,指示中斷請求的狀態。0=該中斷沒有請求,1=該中斷源發出中斷請求0x00000000INTSUBMSK0X4A00001CR/W定義哪幾個中斷源遮罩。0=中斷服務允許,1=中斷服務遮罩0x7FF

對於S3C2410A的眾多中斷源,通過設置INTMOD寄存器可將它們分為IRQ中斷或FIQ中斷,一般只設置一個中斷源為FIQ中斷。對於多個IRQ中斷,通過PRIORITY

寄存器可以設置中斷的優先順序,一般將其設置為0使用默認固定的優先順序即可。設置INTMSK寄存器使能某個中斷源的中斷允許,有些中斷源還需要設置SUBMASK寄存器使能(比如UART的發送中斷和接收中斷)。對於外部中斷EINT4~EINT23,由於它們在S3C2410A的中斷控制器中不是獨立中斷源(EINT4~EINT7共用一個中斷源,EINT8~EINT23共用另一個中斷源),所以還需要設置EINTMASK寄存器來使能某一個外部中斷。

由於S3C2410A的中斷控制器不是向量中斷控制器,即處理器硬體不能自動獲取對應於中斷源的中斷服務程式地址,所以在IRQ中斷服務程式中要通過中斷標誌寄存器INTPND來獲得對應的中斷服務程式地址。在中斷服務程式中,退出中斷之前要清除中斷標誌,即對SRCPND和INTPND寄存器相應位寫1,先清除SRCPND寄存器,再清除INTPND寄存器。對於外部中斷EINT4~EINT23中斷,要最先清除EINTPEND寄存器中的中斷標誌。3.4.3S3C2410A的中斷編程實例

本小節介紹一個通過定時器1控制一個led燈每1秒鐘改變一次狀態,需要完成的主要工作如下。(1)對定時器1初始化,並設定定時器的中斷時間為1。

voidTimerl_init(void){ rGPBCON=rGPBCON&0x00000001|0xfffffffc; rTCFG0=250;

rTCFG1=1;

rTCNTB1=50000;//在pclk=50MHz下,1s的記數值rTCNTB1=50000000/4/250=50000;

rTCMPB1=0x00;

rTCON

=(1<<11)|(1<<9)|(0<<8);//禁用定時器1,手動加載

rTCON

=(1<<11)|(0<<9)|(1<<8);//啟動定時器1,自動裝載

}(2)為了使CPU回應中斷,在中斷服務副程式執行之前,必須打開ARM920T的CPSR中的I位,以及相應的中斷遮罩寄存器中的位。打開相應的中斷遮罩寄存器中的位,是在TimerlINTInit()函數中實現的,具體代碼如下。

voidTimerlINT_Init(void)//定時器介面使能{

if((rINTPND&BIT_TIMERI))

{ rSRCPND|=BIT_TIMER1; }

pISR_TMER1=(int)Timerl_ISR;//寫入定時器1中斷服務副程式的入口地址

rINTMSK

&=~(BIT_TIMERI);//開中斷;}(3)等待定時

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论