




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章
基于S3C2440的硬件結(jié)構(gòu)與接口編程本章主要內(nèi)容嵌入式系統(tǒng)的硬件包括處理器、存儲器、外圍接口以及連接各種設(shè)備的總線系統(tǒng)。存儲器分為數(shù)據(jù)存儲器和程序存儲器。操作系統(tǒng)和應(yīng)用程序固化在Flash中。外圍接口一般有顯示(如點陣式LCD)、鍵盤(或觸摸屏)、Ethernet(以太網(wǎng)接口)、USB接口、音頻接口、VGA視頻接口、IIC接口、SPI接口、SD卡接口、現(xiàn)場總線接口、A/D接口、D/A接口、I/O接口(如RS-232C)、IrDA(紅外接口)等。本章只介紹S3C2440的常用接口。另外還要說明的是,本章給出的實例并不是完整的實例,一個完整的實例還需要比較多的其他代碼,包括硬件初始化,甚至MMU初始化,這會使讀者不能集中精力研究接口部分的編程。讀者需要在開發(fā)板上測試時,可以自己查找相關(guān)資料,比如mini2440開發(fā)板的光盤上就有裸機程序的完整代碼。本章主要內(nèi)容4.1S3C2440簡介4.2S3C2440A的存儲器接口4.3時鐘和電源管理4.4DMA4.5I/O端口4.6定時器4.7ARM中斷4.8LCD4.9A/D轉(zhuǎn)換器和觸摸屏4.10異步串口通信4.11SPI、IIC、IIS、SD卡總線接口4.12USBHost/Device控制器
思考與習(xí)題4.1S3C2440簡介
S3C2440是三星公司的16/32位精簡指令集(RISC)微處理器,為面向手持設(shè)備和普通應(yīng)用提供了低功耗和高性能的小型芯片微控制器的解決方案。S3C2440基于ARM920T核心,采用0.13μm的CMOS標準宏單元和存儲器單元,具有低功耗、簡單、精致、且全靜態(tài)設(shè)計等特點,特別適合于對成本和功率敏感型的應(yīng)用。此外,S2C2440采用了新的總線架構(gòu)如先進微控制總線構(gòu)架(AMBA)。ARM920T實現(xiàn)了MMU,AMBA總線和哈佛結(jié)構(gòu)高速緩沖體系結(jié)構(gòu),這一結(jié)構(gòu)具有獨立的16KB指令高速緩存和16KB數(shù)據(jù)高速緩存,每個都是由具有8字長的行(line)組成?;乇菊履夸?.1S3C2440簡介4.1.1S3C2440A片上主要功能4.1.2S3C2440A特點回本章目錄4.1S3C2440簡介4.1.1S3C2440A片上主要功能1.2V內(nèi)核供電,1.8V/2.5V/3.3V存儲器供電,3.3V外部I/O供電,具備16KB的指令緩存和16KB的數(shù)據(jù)緩存和MMU的微處理器;外部存儲控制器(SDRAM控制和片選邏輯);LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD專用DMA;4通道DMA并有外部請求引腳;3通道UART(IrDA1.0,64B發(fā)送FIFO和64B接收FIFO);2通道SPI;1通道IIC總線接口(支持多主機);1通道IIS總線音頻編碼器接口;AC’97編解碼器接口;回本節(jié)目錄4.1S3C2440簡介4.1.1S3C2440A片上主要功能(續(xù))兼容SD主接口協(xié)議1.0版和MMC卡協(xié)議2.11兼容版;2通道USB主機/1通道USB設(shè)備(1.1版);4通道PWM定時器和1通道內(nèi)部定時器/看門狗定時器;8通道10位ADC和觸摸屏接口;具有日歷功能的RTC;攝像頭接口(最大支持4096×4096像素輸入;2048×2048像素輸入支持縮放);130個通用I/O口和24通道外部中斷源;具有普通、慢速、空閑和掉電模式;具有PLL片上時鐘發(fā)生器。4.1S3C2440簡介4.1.1S3C2440A片上主要功能(續(xù))S3C2440A結(jié)構(gòu)如圖4.1S3C2440簡介4.1.2S3C2440A特點1)體系結(jié)構(gòu)手持設(shè)備的完整系統(tǒng)和普通嵌入式應(yīng)用;16/32位RISC體系架構(gòu)和ARM920TCPU核心的強大的指令集;增強型ARM架構(gòu)MMU以支持WinCE、EPOC32和Linux操作系統(tǒng);指令高速緩存,數(shù)據(jù)高速緩存,寫緩沖和物理地址TAGRAM以減少執(zhí)行主存儲器帶寬和延遲性能的影響;ARM920TCPU核支持ARM調(diào)試架構(gòu);內(nèi)部先進微控制器總線架構(gòu)(AMBA)(AMBA2.0,AHB/APB)。回本節(jié)目錄4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))2)系統(tǒng)管理支持大/小端;地址空間:每Bank有128MB(總共1GB);支持可編程的每Bank8/16/32位數(shù)據(jù)總線寬度;BANK0到BANK6固定Bank的起始地址;BANK7具有可編程Bank起始地址和大小;8個存儲器Bank:6個存儲器Bank為ROM、SRAM,其他兩個存儲器Bank為ROM/SRAM/SDRAM;所有存儲器具備完整可編程訪問周期;支持外部等待信號來擴展總線周期;支持SDRAM掉電時自刷新模式;支持從各種類型ROM啟動(NOR/NANDFlash,EEPROM或其他)。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))3)NANDFlash啟動引導(dǎo)(Bootloader)支持從NANDFlash啟動;4KB的啟動內(nèi)部緩沖區(qū);支持啟動后NANDFlash作為存儲器;支持先進NANDFlash。4)高速緩存存儲器64路指令緩存(16KB)和數(shù)據(jù)緩存(16KB)的組相聯(lián)高速緩存;每行8字長度,其中含一個有效位和兩個dirty位;偽隨機或循環(huán)robin置換算法;執(zhí)行直寫或回寫高速緩存刷新主存儲器;寫緩沖區(qū)可以保存16字的數(shù)據(jù)和4個地址。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))5)時鐘和電源管理片上MPLL和UPLL:UPLL產(chǎn)生時鐘運作USB主機/設(shè)備MPLL產(chǎn)生時鐘運作1.3V下最高400MHz的MCU;用軟件可以有選擇的提供時鐘給各功能模塊;電源模式:普通、慢速、空閑和睡眠模式; 普通模式:正常運行模式; 慢速模式:無PLL的低頻率時鐘; 空閑模式:只停止CPU的時鐘; 睡眠模式:關(guān)閉包括所有外設(shè)的核心電源;EINT[15:0]或RTC鬧鐘中斷觸發(fā)從睡眠模式中喚醒。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))6)中斷控制器59個中斷源(1個看門狗,5個定時器,9個UART,24個外部中斷,4個DMA,2個RTC,2個ADC,1個IIC,2個SPI,1個SDI,2個USB,1個LCD,1個電池故障,1個NAND,2個攝像頭,1個AC’97);外部中斷源中電平/邊沿模式;可編程邊沿和電平的極性;支持快速中斷請求(FIQ)給非常緊急的中斷請求。7)脈寬調(diào)制(PWM)定時器4通道16位具有PWM功能的定時器,1通道16位基于DMA或基于中斷運行的內(nèi)部定時器;可編程的占空比、頻率和極性;失效區(qū)發(fā)生器;支持外部時鐘源。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))8)RCT(實時時鐘)完整時鐘特性:毫秒、秒、分、時、星期、日、月和年;工作在32.768kHz時鐘頻率;鬧鐘中斷;時鐘節(jié)拍中斷。9)通用輸入/輸出端口24個外部中斷端口;130個復(fù)用輸入/輸出端口。10)DMA控制器4通道DMA控制器;支持存儲器到存儲器,IO到存儲器,存儲器到IO和IO到IO的傳輸;采用觸發(fā)傳輸模式來提高傳輸速率。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))11)UART3通道基于DMA或基于中斷運行的UART;支持5位、6位、7位、或8位串行數(shù)據(jù)發(fā)送/接收;支持UART運行在外部時鐘(UEXTCLK);可編程波特率;支持IrDA1.0;測試用回環(huán)模式;每個通道都包含內(nèi)部64位發(fā)送FIFO和64位接收FIFO。12)A/D轉(zhuǎn)換器和觸屏接口8通道多路復(fù)用ADC;最高500kbit/s和10位分辨率;內(nèi)置FET觸屏接口。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))13)IIC總線接口1通道多主機IIC總線;串行、8位、雙向數(shù)據(jù)傳輸,在標準模式下可達100kbit/s或快速模式下可達400kbit/s。14)LCD控制器STNLCD顯示特性支持3種類型STNLCD面板:4位雙掃描,4位單掃描和8位單掃描顯示類型;支持單色模式,4階灰度,16階灰度,256色和4096色的STNLCD;支持多種屏幕尺寸,實際屏幕尺寸典型值為640×480、320×240、160×160和其他。最大幀緩沖區(qū)大小為4MB,256色模式下最大實際屏幕尺寸為4096×1024、2048×2048、1024×4096和其他。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))15)TFT(薄膜晶體管)彩色顯示特性支持彩色TFT的1、2、4或8bpp(位/像素)調(diào)色顯示;支持彩色TFT的16,24bpp非調(diào)色真彩顯示;支持在24bpp模式下最大16M色的TFT;內(nèi)嵌LPC3600時序控制器,支持LTS350Q1-PD1/2(三星3.5寸豎屏/256K色/反光型a-SiTFTLCD);內(nèi)嵌LCC3600時序控制器,支持LTS350Q1-PE1/2(三星3.5寸豎屏/256K色/半透型a-SiTFTLCD);支持多種屏幕尺寸,實際屏幕尺寸典型值為640×480,320×240,160×160和其他,最大幀緩沖區(qū)大小為4MB,64K色模式下最大實際屏幕尺寸為2048×1024和其他。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))16)看門狗定時器16位看門狗定時器;中斷請求或系統(tǒng)復(fù)位超時。17)IIS總線接口1通道IIS總線,運行在基于DMA音頻接口;串行,8/16位每通道數(shù)據(jù)傳輸;發(fā)送/接收具備128B(64B+64B)FIFO;支持IIS格式和MSB-justified數(shù)據(jù)格式AC’97音頻編/解碼器接口;支持16位采樣;1通道立體聲PCM輸入,1通道立體聲PCM輸出和1通道MIC輸入。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))18)USB主機(Host)2個USB主機端口;遵從OHCIRev.1.0;兼容USB規(guī)格1.1版本。19)USB設(shè)備(Device)1個USB設(shè)備端口;5個USB設(shè)備端點;兼容USB規(guī)格1.1版本。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))20)SD主機接口正常、中斷和DMA數(shù)據(jù)傳輸模式(可按字節(jié),半字,字傳輸);支持DMAburst4訪問(只支持字傳輸);兼容SD記憶卡協(xié)議1.0版本;兼容SDIO卡協(xié)議1.0版本;發(fā)送/接收具備64B的FIFO;兼容MMC卡協(xié)議2.11版本。21)SPI接口兼容2通道SPI接口協(xié)議2.11版本;發(fā)送/接收具備2個8位移位寄存器;基于DMA或基于中斷運行。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))22)攝像頭接口支持ITU-RBT601/6568位模式;發(fā)送/接收具備2個8位移位寄存器;基于DMA或基于中斷運行;DZI(數(shù)字放大)能力;可編程視頻同步信號極性;最大支持4096×4096像素輸入(2048×2048像素輸入時支持縮放);圖像鏡像和旋轉(zhuǎn)(X軸鏡像,Y軸鏡像和180°旋轉(zhuǎn));格式化攝像頭輸出(RGB16/24位和YCbCr4:2:0/4:2:2格式)。4.1S3C2440簡介4.1.2S3C2440A特點(續(xù))23)工作電壓范圍核心電壓:300MHz下1.20V;400MHz下1.30V;存儲器電壓:1.8V/2.5V/3.0V/3.3V;I/O口電壓:3.3V。24)工作頻率Fclk最高400MHz;Hclk最高136MHz;Pclk最高68MHz。25)封裝封裝形式為289-FBGA。4.2S3C2440A的存儲器接口4.2.1S3C2440A存儲器控制器4.2.2NANDFlash控制器4.2.3SDRAM原理回本章目錄4.2S3C2440A的存儲器接口4.2.1S3C2440A存儲器控制器S3C2440A存儲器控制器為訪問外部存儲的需要器提供了存儲器控制信號。S3C2440A包含以下特性:大/小端(通過軟件選擇);地址空間:每個Bank有128MB(總共1GB/8個Bank);除了BANK0(16/32位)之外,其他全部BANK都可編程訪問寬度(8/16/32位);總共8個存儲器Bank,6個存儲器Bank為ROM,SRAM等,其余2個存儲器Bank為ROM、SRAM、SDRAM等;7個固定的存儲器Bank起始地址;1個可變的存儲器Bank起始地址并Bank大小可編程;所有存儲器Bank的訪問周期可編程;外部等待擴展總線周期;支持SDRAM自刷新和掉電模式?;乇竟?jié)目錄4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器NORFlash存儲器價格較高,而SDRAM和NANDFlash存儲器更經(jīng)濟,這樣促使了一些用戶在NANDFlash中執(zhí)行引導(dǎo)代碼,在SDRAM中執(zhí)行主代碼。S3C2440A引導(dǎo)代碼可以在外部NANDFlash存儲器上執(zhí)行。為了支持NANDFlash的BootLoader,S3C2440A配備了一個內(nèi)置的SRAM緩沖器,稱為Steppingstone。引導(dǎo)啟動時,NANDFlash存儲器的開始4KB將被加載到Steppingstone中并且執(zhí)行加載到Steppingstone的引導(dǎo)代碼。通常引導(dǎo)代碼會復(fù)制NANDFlash的內(nèi)容到SDRAM中。通過使用硬件ECC,有效地檢查NANDFlash數(shù)據(jù)。在復(fù)制完成的基礎(chǔ)上,將在SDRAM中執(zhí)行主程序?;乇竟?jié)目錄4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))Bank6/7地址范圍地址2MB4MB8MB16MB32MB64MB128MBBank6起始地址0x3000_00000x3000_00000x3000_00000x3000_00000x3000_00000x3000_00000x3000_0000結(jié)束地址0x301F_FFFF0x303F_FFFF0x307F_FFFF0x30FF_FFFF0x31FF_FFFF0x33FF_FFFF0x37FF_FFFFBank7起始地址0x3020_00000x3040_00000x3080_00000x3100_00000x3200_00000x3400_00000x3800_0000結(jié)束地址0x303F_FFFF0x307F_FFFF0x30FF_FFFF0x31FF_FFFF0x33FF_FFFF0x37FF_FFFF0x3FFF_FFFFBank6和Bank7必須為相同的存儲器大小4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))S3C2440A復(fù)位后的存儲器映射圖4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))1)NANDFlash控制器功能特性引導(dǎo)啟動:引導(dǎo)代碼在復(fù)位期間被傳送到4KB的Steppingstone;傳送后,引導(dǎo)代碼將在Steppingstone中執(zhí)行;NANDFlash存儲器接口:支持256字,512B,1K字和2KB頁;軟件模式:用戶可以直接訪問NANDFlash存儲器,例如此特性可用于NANDFlash存儲器的讀/擦除/編程;接口:8/16位NANDFlash存儲器接口總線;硬件ECC生成,檢測和指示(軟件糾錯);SFRI/F:支持小端模式是按字節(jié)/半字/字訪問數(shù)據(jù)和ECC數(shù)據(jù)寄存器,和按字訪問其他寄存器;SteppingStone接口:支持大/小端模式的按字節(jié)/半字/字訪問;SteppingStone4KB內(nèi)部SRAM緩沖器可以在NANDFlash引導(dǎo)啟動后用于其他用途。4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))NANDFlash控制器結(jié)構(gòu)圖。圖中,CLE為CommandLatchEnable,ALE為AddressLatchEnable,nFRE為FlashReadEnable,nFCE為FlashChipEnable,nFWE為FlashWriteEnable,F(xiàn)RnB:FlashReady/Busyoutput(FlashNand芯片狀態(tài),高電平表準備好,低電平表NandFlash忙)。4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))NANDFlash控制器BootLoader過程4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))2)軟件模式S3C2440A只支持軟件模式的訪問。使用該模式,用戶可以完整地訪問NANDFlash存儲器。NANDFlash控制器支持NANDFlash存儲器的直接訪問接口。①寫命令寄存器=NANDFlash存儲器命令周期。②寫地址寄存器=NANDFlash存儲器地址周期。③寫數(shù)據(jù)寄存器=寫入數(shù)據(jù)到NANDFlash存儲器(寫周期)。④讀數(shù)據(jù)寄存器=從NANDFlash存儲器讀取數(shù)據(jù)(讀周期)。⑤讀主ECC寄存器和備份ECC寄存器=從NANDFlash存儲器讀取數(shù)據(jù)。注意:在軟件模式下,必須用定時查詢或中斷來檢測RnB狀態(tài)輸入引腳。4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))3)NANDFlash存儲器時序CLE和ALE時序(TACLS=1,TWRPH0=0,TWRPH1=0)4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))3)NANDFlash存儲器時序nWE和nRE時序(TWRPH0=0,TWRPH1=0)4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))4)引腳配置OM[1:0]=00:使能NANDFlash存儲器引導(dǎo)啟動。NCON:NANDFlash存儲器選擇(普通/先進)。0:普通NANDFlash(256字或512B頁大小,3或4個地址周期)。1:先進NANDFlash(1K字或2KB頁大小,4或5個地址周期)。GPG13:NANDFlash存儲器頁容量選擇。0:頁=256字(NCON=0)或頁=1K字(NCON=1)。1:頁=512B(NCON=0)或頁=2KB(NCON=1)。GPG14:NANDFlash存儲器地址周期選擇。0:3個地址周期(NCON=0)或4個地址周期(NCON=1)。1:4個地址周期(NCON=0)或5個地址周期(NCON=1)。GPG15:NANDFlash存儲器總線寬度選擇。0:8位寬度。1:16位寬度。4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))4)引腳配置注意:配置引腳NCON,GPG[15:13]將在復(fù)位期間被取出(Fetched)。在正常狀態(tài)下,這些引腳必須設(shè)置為輸入,這是為了在由軟件或意外情況而進入睡眠模式時,這些引腳的狀態(tài)不被改變。4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))例4-1下面的程序用于2K/頁的NANDFlash的讀取,F(xiàn)lash型號為K9F2G08。#include"s3c2440.h"#defineCMD_READ1 0x00 /*頁讀命令周期1*/#defineCMD_READ2 0x30 /*頁讀命令周期2*/#defineCMD_RESET 0xff /*復(fù)位命令*/#defineNF_CMD(data){rNFCMD=(data);} /*傳輸命令*/#defineNF_ADDR(addr){rNFADDR=(addr);} /*傳輸?shù)刂?/#defineNF_RDDATA8() (rNFDATA8) /*讀8位數(shù)據(jù)*/#defineNF_WRDATA(data){rNFDATA=(data);} /*寫32位數(shù)據(jù)*/#defineNF_WRDATA8(data){rNFDATA8=(data);} /*寫8位數(shù)據(jù)*/#defineNF_CE_L() {rNFCONT&=~(1<<1);} /*片選使能*/#defineNF_CE_H(){rNFCONT|=(1<<1);} /*片選禁用*/#defineNF_WAITRB() {while(!(rNFSTAT&(1<<0)));} /*等待就緒*/#defineNF_CLEAR_RB() {rNFSTAT|=(1<<2);} /*清除RnB信號*/4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))#defineTACLS 1#defineTWRPH0 2#defineTWRPH1 1voidnand_init(void)/*nand初始化,主要用于配置nand的時鐘等*/{rNFCONF=(TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4);rNFCONT=(1<<4)|(1<<1)|(1<<0);}staticvoidnand_reset() /*復(fù)位nandFlash芯片*/{NF_CE_L(); /*使能片選*/NF_CLEAR_RB(); /*清除RnB信號*/NF_CMD(CMD_RESET); /*寫入復(fù)位命令*/NF_WAITRB(); /*等待就緒*/NF_CE_H(); /*關(guān)閉片選*/}4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))/**函數(shù)功能:讀取頁地址為page的頁,每頁為2048B*參數(shù):* page:第page個頁* buff:存放讀取到的數(shù)據(jù)的緩存區(qū)*/staticvoid__nand_read1page(constintpage,unsignedchar*constbuff){ inti; nand_reset(); NF_CE_L(); NF_CLEAR_RB(); NF_CMD(CMD_READ1); /*WriteCommand00*/ NF_ADDR(0x0);/*WriteColA0-A7,即頁起始地址0x000*/
4.2S3C2440A的存儲器接口4.2.2NANDFlash控制器(續(xù))
NF_ADDR(0x0); /*WriteColA8-A11*/ NF_ADDR(page&0xff); /*WriteRowA12-A19*/ NF_ADDR((page>>8)&0xff); /*WriteRowA20-A27*/ NF_ADDR((page>>16)&0xff);/*WriteRowA28*/ NF_CMD(CMD_READ2); /*WriteCommand30*/ NF_WAITRB(); /*等待就緒*/ for(i=0;i<2048;i++) /*連續(xù)讀一頁*/ buff[i]=NF_RDDATA8();/*連續(xù)讀數(shù)據(jù)*/ NF_CE_H(); /*關(guān)閉片選*/}4.2S3C2440A的存儲器接口4.2.3SDRAM原理1)SDRAM內(nèi)存模組于基本結(jié)構(gòu)SDRAM內(nèi)存模組如圖4-7所示。(1)物理Bank。內(nèi)存與CPU之間數(shù)據(jù)交換的北橋芯片的數(shù)據(jù)寬度稱為物理Bank。(2)芯片位寬。芯片的位寬常見的有8bit和16bit的。2)SDRAM內(nèi)存芯片的內(nèi)部結(jié)構(gòu)回本節(jié)目錄4.2S3C2440A的存儲器接口4.2.3SDRAM原理(續(xù))2)SDRAM內(nèi)存芯片的內(nèi)部結(jié)構(gòu)(1)邏輯Bank(LogicalBank,L-Bank)。SDRAM的內(nèi)部是一個存儲陣列,陣列如同一張表格有行(Row),有列(Column)。這個存儲陣列就是邏輯Bank。SDRAM內(nèi)存一次傳輸?shù)臄?shù)據(jù)量就是芯片的位寬。那么這個存儲單元的容量就是芯片的位寬(也就是L-Bank的位寬)。但是要注意,這種關(guān)系只是對SDRAM有效。(2)突發(fā)長度(BurstLengths,BL)。突發(fā)(Burst)是指在同一行中相鄰的存儲單元連續(xù)進行數(shù)據(jù)傳輸?shù)姆绞剑B續(xù)傳輸所涉及到存儲單元(列)的數(shù)量就是突發(fā)長度。在突發(fā)長度內(nèi)讀寫數(shù)據(jù),只要給出列起始地址和突發(fā)長度,內(nèi)存就會依次自動地對后面相應(yīng)數(shù)量的存儲單元進行讀寫操作,在突發(fā)長度內(nèi)而不再需要控制器提供列地址。這樣就可加快讀寫速度。4.2S3C2440A的存儲器接口4.2.3SDRAM原理(續(xù))3)SDRAM內(nèi)存接口信號4.2S3C2440A的存儲器接口4.2.3SDRAM原理(續(xù))4)SDRAM芯片初始化在SDRAM芯片內(nèi)部有一個邏輯控制單元,有一個模式寄存器(ModeRegister,MR)為其提供控制參數(shù)。因此,每次開機時SDRAM都要對這個控制邏輯核心進行初始化,該初始化工作由BIOS完成。SDRAM還有預(yù)充電和刷新的概念,這里不再敘述,請讀者參考有關(guān)SDRAM原理的資料。在SDRAM中,行地址線與列地址線是共用的,用RAS#和CAS#分別指示行地址有效和列地址有效。4.3時鐘和電源管理回本章目錄時鐘和電源管理模塊由三部分組成:時鐘控制、USB控制和電源控制。S3C2440A中的時鐘控制邏輯可以產(chǎn)生必須的時鐘信號,包括CPU的FCLK,AHB總線外設(shè)的HCLK,以及APB總線外設(shè)的PCLK。S3C2440A包含兩個鎖相環(huán)(PLL):一個提供給FCLK、HCLK和PCLK,另一個專用于USB模塊(48MHz)。時鐘控制邏輯可以不使用PLL來減慢時鐘,并且可以由軟件鏈接或斷開各外設(shè)模塊的時鐘,以降低功耗。關(guān)于電源控制邏輯,S3C2440A包含了各種電源管理方案來保證對給定任務(wù)的最佳功耗。S3C2440A中的電源管理模塊可以激活成四種模式:正常(NORMAL)模式、慢速(SLOW)模式、空閑(IDLE)模式和睡眠(SLEEP)模式。4.3時鐘和電源管理
正常(NORMAL)模式:這個模式提供時鐘給CPU,也提供給所有S3C2440A的外設(shè)。在此模式中,當所有外設(shè)都開啟時功耗將達到最大,它允許用戶用軟件控制外設(shè)的運行。例如,如果一個定時器不是必須的,用戶可以斷開連接到定時器的時鐘(CLKCON寄存器),以降低功耗。慢速(SLOW)模式:無PLL模式。不像普通模式,慢速模式使用一個外部時鐘(XTIpll或EXTCLK)直接作為FCLK給S3C2440A,而沒有使用PLL。在此模式中,功耗只取決于外部時鐘的頻率,排除了因PLL而產(chǎn)生的功耗。4.3時鐘和電源管理空閑(IDLE)模式:這個模塊只斷開了CPU內(nèi)核的時鐘(FCLK),但它提供時鐘給所有其他外設(shè)??臻e模式產(chǎn)生了因CPU內(nèi)核而產(chǎn)生的功耗減少的結(jié)果。任何中斷請求給CPU都可以使其從空閑模式中喚醒。睡眠(SLEEP)模式:這個模塊與內(nèi)部供電是分離的,因此在此模式中發(fā)生了沒有因CPU和除喚醒邏輯以外的內(nèi)部邏輯的功耗。要激活睡眠模式需要兩個獨立的供電電源,兩個電源之一提供電源給喚醒邏輯,另一個提供電源給包括CPU在內(nèi)的其他內(nèi)部邏輯,而且應(yīng)當能夠控制供電的開和關(guān)。在睡眠模式中,第二個為CPU和內(nèi)部邏輯供電電源將被關(guān)閉??梢杂蒃INT[15:0]或RTC鬧鈴中斷產(chǎn)生從睡眠模式中喚醒。4.4DMAS3C2440A支持4通道處于系統(tǒng)總線和外設(shè)總線間的DMA控制器。DMA控制器的每個通道都可以無限制地執(zhí)行系統(tǒng)總線與/或外設(shè)總線之間設(shè)備的數(shù)據(jù)移動。換句話說,每個通道都可以處理以下4種情況:源和目標都在系統(tǒng)總線上;當目標在外設(shè)總線上時源在系統(tǒng)總線上;當目標在系統(tǒng)總線上時源在外設(shè)總線上;源和目標都在外設(shè)總線上。DMA的主要優(yōu)點是在無CPU干預(yù)的情況下能進行數(shù)據(jù)傳輸。DMA的運行可以由軟件開始,也可以來自內(nèi)部外設(shè)或外部請求引腳的請求。回本章目錄4.4DMA4.4.1DMA請求源4.4.2DMA工作過程4.4.3基本DMA時序4.4.4DMA傳輸大小4.4.5DMA專用寄存器回本章目錄4.4DMA4.4.1DMA請求源如果由DCON寄存器選擇了硬件DMA請求模式,則DMA控制器的每個通道都可以在4個DMA源中選擇DMA請求源的其中之一(注意如果選擇了軟件請求模式,此DMA請求源沒有一點意義)。Source0Source1Source2Source3Source4Source5Source6Ch-0nXDREQ0UART0SDITimerUSBdeviceEP1I2SSDOPCMINCh-1nXDREQ1UART1I2SSDISPI0USBdeviceEP2PCMOUTSDICh-2I2SSDOI2SSDISDITimerUSBdeviceEP3PUMINMICINCh-3UART2SDISPI1TimerUSBdeviceEP4MICINPCMOUT此處的nXDREQ0和nXDREQ1代表兩個外部源(外部設(shè)備),IISSDO和IISSDI分別代表IIS的發(fā)送和接收?;乇竟?jié)目錄4.4DMA4.4.2DMA工作過程DMA為其運行使用三態(tài)FSM(有限狀態(tài)機),相關(guān)描述如下。狀態(tài)1:初始狀態(tài),DMA等待DMA請求。一旦請求到達則跳到狀態(tài)2。在此狀態(tài)下DMAACK和INTREQ為0。狀態(tài)2:在此狀態(tài),DMAACK變?yōu)?而且計數(shù)器(CURR_TC)從DCON[19:0]寄存器中加載。注意:DMAACK保持為1直到之后將其清除。狀態(tài)3:在此狀態(tài),處理DMA的原子操作的sub-FSM啟動。sub-FSM從源地址讀取數(shù)據(jù),接著寫入目標地址。在此操作中考慮數(shù)據(jù)大小和傳輸大?。▎未位蛲话l(fā))。此操作在全服務(wù)模式中一直重復(fù)直到計數(shù)器(CURR_TC)變?yōu)?,在單服務(wù)模式只執(zhí)行一次。當sub-FSM完成了每個原子操作時,主FSM(此FSM)倒計數(shù)CURR_TC。此外,當CURR_TC變?yōu)?并且DCON[29]寄存器的中斷設(shè)置置位為1時,主FSM發(fā)出INTREQ信號。另外,如果遇到以下狀況之一則清除了DMAACK?;乇竟?jié)目錄4.4DMA4.4.2DMA工作過程(續(xù))在全服務(wù)模式中CURR_TC變?yōu)?;在單服務(wù)模式中完成原子操作。注意:在單服務(wù)模式中有三個主FSM的狀態(tài)要執(zhí)行并且接著要停止和等待其他DMAREQ。如果DMAREQ出現(xiàn)了要重復(fù)所有的三個狀態(tài),則發(fā)出DMAACK并接著取消原子傳輸。與之對比,在全服務(wù)模式中,主FSM在狀態(tài)3中等待直到CURR_TC變?yōu)?。所以在所有傳輸期間發(fā)出DMAACK并接著在當TC到達0時取消。總之,當且僅當在CURR_TC變?yōu)?時才發(fā)出INTREQ,與服務(wù)模式(單顧服務(wù)模式或全顧服務(wù)模式)無關(guān)。4.4DMA4.4.3基本DMA時序DMA服務(wù)意味著在DMA運行期間執(zhí)行成對的讀取和寫入周期,形成單次DMA操作。XnXDREQ和XnXDACK的建立時間和延遲時間在所有模式中都相同;如果XnXDREQ的完成遇到其建立時間,它將同步兩次并接著發(fā)出XnXDACK;發(fā)出XnXDACK后,DMA請求總線并且其如果得到總線將執(zhí)行其的操作?;乇竟?jié)目錄4.4DMA4.4.3基本DMA時序(續(xù))查詢/握手模式:查詢和握手模式是描述XnXDREQ和XnXDACK之間的協(xié)議。一次傳輸(單次/突發(fā)傳輸)的最后,DMA將檢查雙同步XnXDREQ的狀態(tài)。查詢模式:如果保持XnXDREQ的發(fā)出,立即開始下次的傳輸;否則等待XnXDREQ的發(fā)出。握手模式:如果發(fā)出XnXDREQ,DMA在2個周期內(nèi)取消XnXDACK;否則在取消XnXDREQ前一直等待。在取消XnXDACK(高電平)后就必須發(fā)出XnXDREQ(低電平)。4.4DMA4.4.4DMA傳輸大小DMA有兩種不同的傳輸大?。簡卧║nit)和突發(fā)4(Burst4)。DMA在大塊數(shù)據(jù)傳輸期間將牢牢的掌握總線,因此其他總線主機不能得到總線。單元(Unit)傳輸大?。阂淮巫x操作和一次寫操作被執(zhí)行。突發(fā)4傳輸大?。涸谕话l(fā)4傳輸中分別可以執(zhí)行4種連續(xù)讀取和寫入?;乇竟?jié)目錄4.4DMA4.4.5DMA專用寄存器每個DMA通道都有9個控制寄存器(總計36個,因為DMA控制器有4個通道),其中6個控制寄存器控制DMA的傳輸,另外3個監(jiān)視DMA控制器的狀態(tài)。這些寄存器的詳情如下。
1.DMA初始源地址寄存器DMA初始源地址寄存器DISRC0~3分別對應(yīng)DMA的4個通道,用于存放要傳輸?shù)脑磾?shù)據(jù)起始地址DMA初始源地址寄存器(DISRC)寄存器地址讀/寫描述復(fù)位值DISRC00x4B000000讀/寫DMA0初始源地址寄存器0x00000000DISRC10x4B000040DMA1初始源地址寄存器DISRC20x4B000080DMA2初始源地址寄存器DISRC30x4B0000C0DMA3初始源地址寄存器回本節(jié)目錄4.4DMA4.4.5DMA專用寄存器(續(xù))
1.DMA初始源地址寄存器DMA初始源地址寄存器(DISRC)的位描述DISRCn位描
述初始狀態(tài)S_ADDR[30:0]要傳輸?shù)脑磾?shù)據(jù)基本地址(開始地址)。當且僅當CURR_SRC為0并且DMAACK為1時將此位的值鎖存到CURR_SRC中0x000000004.4DMA4.4.5DMA專用寄存器(續(xù))2.DMA初始源控制(DISRCC)寄存器DMA初始源控制(DISRCC)寄存器用于選擇源數(shù)據(jù)位于系統(tǒng)總線(AHB)上,還是位于外總線(APB)上,以及源地址的增量方式。DMA初始源控制寄存器(DISRCC)寄存器地址讀/寫描述復(fù)位值DISRCC00x4B000004讀/寫DMA0初始源控制寄存器0x00000000DISRCC10x4B000044DMA1初始源控制寄存器DISRCC20x4B000084DMA2初始源控制寄存器DISRCC30x4B0000C4DMA3初始源控制寄存器4.4DMA4.4.5DMA專用寄存器(續(xù))2.DMA初始源控制(DISRCC)寄存器DMA初始源控制寄存器(DISRCC)的位描述DISRCCn位描
述初始狀態(tài)LOC[1]bit[1]是用于源位置的選擇。0:源在系統(tǒng)總線(AHB)上;1:源在外設(shè)總線(APB)上0INC[0]位[0]是用于地址增加的選擇,0:增加;1:固定。如果為0,地址將根據(jù)單次和突發(fā)模式中每次傳輸后其數(shù)據(jù)大小而增加;如果為1,在傳輸后地址不改變(突發(fā)模式中,地址只在突發(fā)傳輸期間增加,但在傳輸后又回到其第一個值)04.4DMA4.4.5DMA專用寄存器(續(xù))3.DMA初始目標(DIDST)寄存器DMA初始目標寄存器DIDST0~3分別對應(yīng)DMA的4個通道的初始目標地址,用于存放要傳輸?shù)哪繕藬?shù)據(jù)地址。DMA初始目標地址寄存器(DIDST)寄存器地址讀/寫描述復(fù)位值DIDST00x4B000008讀/寫DMA0初始目標地址寄存器0x00000000DIDST10x4B000048DMA1初始目標地址寄存器DIDST20x4B000088DMA2初始目標地址寄存器DIDST30x4B0000C8DMA3初始目標地址寄存器4.4DMA4.4.5DMA專用寄存器(續(xù))3.DMA初始目標(DIDST)寄存器DMA初始源地址寄存器(DIDST)的位描述DIDSTn位描
述初始狀態(tài)D_ADDR[30:0]要傳輸?shù)哪繕藬?shù)據(jù)基本地址(開始地址)。當且僅當CURR_DST為0并且DMAACK為1時將此位的值鎖存到CURR_DST中0x000000004.4DMA4.4.5DMA專用寄存器(續(xù))4.DMA初始目標控制(DIDSTC)寄存器DMA初始目標控制寄存器(DIDSTC)寄存器地址讀/寫描述復(fù)位值DIDSTC00x4B00000C讀/寫DMA0初始目標控制寄存器0x00000000DIDSTC10x4B00004CDMA1初始目標控制寄存器DIDSTC20x4B00008CDMA2初始目標控制寄存器DIDSTC30x4B0000CCDMA3初始目標控制寄存器4.4DMA4.4.5DMA專用寄存器(續(xù))4.DMA初始目標控制(DIDSTC)寄存器DMA初始源控制寄存器(DIDSTC)的位描述DIDSTCn位描
述初始狀態(tài)CHK_INT[2]當設(shè)置了自動再加載時發(fā)生中斷的時間選擇。0:在TC到達0時發(fā)生中斷;1:在執(zhí)行完自動再加載后發(fā)生中斷0LOC[1]bit[1]是用于目標位置的選擇。0:目標在系統(tǒng)總線(AHB)上;1:目標在外設(shè)總線(APB)上0INC[0]位[0]是用于地址增加的選擇。0:增加;1:固定。如果為0,地址將根據(jù)單次和突發(fā)模式中每次傳輸后其數(shù)據(jù)大小而增加;如果為1,在傳輸后地址不改變(突發(fā)模式中,地址只在突發(fā)傳輸期間增加,但在傳輸后又回到其第一個值)04.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)寄存器地址讀/寫描述復(fù)位值DCON00x4B000010讀/寫DMA0控制寄存器0x00000000DCON10x4B000050DMA1控制寄存器DCON20x4B000090DMA2控制寄存器DCON30x4B0000D0DMA3控制寄存器4.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始狀態(tài)DMD_HS[31]查詢模式和握手模式之間選擇其中之一,0:選擇查詢模式;1:選擇握手模式。在兩種模式下,DMA控制器開始其傳輸并為發(fā)出的DREQ而發(fā)出DACK。兩種模式之間的差異為:是否需要等待取消DACK。握手模式中,DMA控制器在開始新的傳輸前等待取消DREQ。如果其發(fā)現(xiàn)了取消DREQ,則取消DACK并等待另一個DREQ的發(fā)出。與之對比,在查詢模式中,DMA控制器不等待直到取消DREQ,其只是取消DACK并且如果發(fā)出DACK接著開始另一個傳輸。我們建議外部DMA請求源使用握手模式以預(yù)防新傳輸?shù)姆穷A(yù)定開始04.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始狀態(tài)SYNC[30]DREQ/DACK的同步化選擇,0:DREQ和DACK同步于PCLK(APB時鐘);1:DREQ和DACK同步于HCLK(AHB時鐘)。因此,如果有設(shè)備附加在AHB系統(tǒng)總線上時必須將此位設(shè)置為1,當這些設(shè)備附加在APB系統(tǒng)上它將被設(shè)置為0。設(shè)備附加在外部系統(tǒng)時用戶應(yīng)當按外部系統(tǒng)是同步于AHB系統(tǒng)還是APB系統(tǒng)來選擇此位0INT[29]CURR_TC(終點計數(shù))的中斷使能/禁止設(shè)置,0:禁止CURR_TC中斷,用戶必須觀察狀態(tài)寄存器的傳輸計數(shù)(即定時查詢);1:當所有傳輸完成產(chǎn)生中斷請求(即CURR_TC變?yōu)?)04.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始狀態(tài)TSZ[28]一個原子傳輸?shù)膫鬏敶笮∵x擇(即釋放總線前每次DMA擁有總線執(zhí)行傳輸),0:執(zhí)行一個單元傳輸;1:執(zhí)行一個長度為4的突發(fā)傳輸0SERVMODE[27]單服務(wù)模式和全服務(wù)模式之間的服務(wù)模式選擇,0:選擇每次原子傳輸(單次或突發(fā)4)后DMA停止和等待其他DMA請求的單服務(wù)模式;1:選擇傳輸計數(shù)達到0前重復(fù)請求得到原子傳輸?shù)娜?wù)模式。此模式不需要額外請求。注意:即使在全服務(wù)模式中,在每個原子傳輸后DMA釋放總線并且為了預(yù)防其他總線主機的渴望得到總線而接著試圖重新得到總線04.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始HWSRCSEL[26:24]每個DMA的DMA請求源的選擇000DCON0:000:nXDREQ0;001:UART0;010:SDI;011:Timer100:USBdeviceEP1;101:IISSDO;110:PCMINDCON1:000:nXDREQ1;001:UART1;010:IISSDI;011:SPI100:USBdeviceEP2;101:PCMOUT;110:SDIDCON2:000:IISSDO;001:IISSDI;010:SDI;011:Timer100:USBdeviceEP3;101:PCMIN;110:MICINDCON3:000:UART2;001:SDI;010:SPI;011:Timer100:USBdeviceEP4;101:MICIN;110:PCMOUT這些位控制4選1多路選擇器(4-1MUX),選擇每個DMA的DMA請求源。當且僅當由DCONn[23]選擇了硬件請求模式時這些位才有意義4.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始SWHW_SEL[23]DMA源為軟件(軟件請求模式)或硬件(硬件請求模式)選擇。0:選擇軟件請求模式并且DMA由DMASKTRIG控制寄存器的SW_TRIG位的置位觸發(fā);1:由位[26:24]選擇DMA源觸發(fā)DMA操作04.4DMA4.4.5DMA專用寄存器(續(xù))5.DMA控制(DCON)寄存器DMA控制寄存器(DCON)的位描述DCONn位描述初始狀態(tài)RELOAD[22]設(shè)置再加載開/關(guān)選項。0:當傳輸計數(shù)的當前值變?yōu)?時(即執(zhí)行了所有請求的傳輸)執(zhí)行自動再加載;1:當傳輸計數(shù)的當前值變?yōu)?時DMA通道(DMAREQ)關(guān)閉。設(shè)置通道開/關(guān)位(DMASKTRIGn[1])為0(DREQ關(guān)閉)來預(yù)防非預(yù)定的新DMA操作的進一步開始0DSZ[21:20]要傳輸?shù)臄?shù)據(jù)大小,00=字節(jié);01=半字;10=字;11=保留00TC[19:0]初始傳輸計數(shù)(或傳輸節(jié)拍)。注意:其實際傳輸?shù)淖止?jié)數(shù)由DSZ×TSZ×TC得到。此處DSZ、TSZ(1或4)和TC分別代表數(shù)據(jù)大小DCONn[21:20],傳輸大小DCONn[28]和初始傳輸計數(shù)。當且僅當CURR_TC為0并且DMAACK為1時該值將被加載到CURR_TC0x000004.4DMA4.4.5DMA專用寄存器(續(xù))例4-2下面給出使用DMA將內(nèi)存中的一塊數(shù)據(jù)復(fù)制到另一個地址的程序示例#include"s3c2440.h"#include"interrupt.h"volatilestaticintflag=0;/*標志是否傳輸完所有的塊數(shù)*/volatilestaticintfinish=0;/*標志DMA傳輸是否完成*/volatilestaticintblocks=0;/*記錄還需要傳輸?shù)膲K數(shù)*/volatilestaticintremainder=0;/*記錄剩余的不足一塊的字數(shù)*//*DMA中斷處理程序,主要用于判斷是否傳輸完成,若未完成,則啟動下一次DMA傳輸*/voiddma_irp(){rSRCPND|=1<<INT_DMA2; /*清源掛起相應(yīng)位*/rINTPND|=1<<INT_DMA2; /*清中斷掛起相應(yīng)位*/
4.4DMA4.4.5DMA專用寄存器(續(xù))
if(flag==0){/*塊傳送完標志*/finish=1; /*置DMA傳送完標志*/rDMASKTRIG2=1<<2; /*停止DMA*/}else{/*未傳送完*/blocks--;rDISRC2+=0xFFFFF<<2; /*按字傳輸,故增加的值為字的個數(shù)*/rDIDST2+=0xFFFFF<<2;if(blocks==0){rDCON2=(rDCON2&~0xFFFFF)|remainder;
4.4DMA4.4.5DMA專用寄存器(續(xù))
flag=0;}rDMASKTRIG2=(1<<1)|1;}}/*dma初始化,主要用于配置dma中斷,以及對一些標志的初始化*/voiddma_init(){rSRCPND|=1<<INT_DMA2; /*清源掛起相應(yīng)位*/rINTPND|=1<<INT_DMA2; /*清中斷掛起相應(yīng)位*/rINTMSK&=~(1<<INT_DMA2); /*開啟相應(yīng)位中斷*/isr_handle_array[INT_DMA2]=dma_irp;/*填寫中斷矢量*/flag=1;finish=0;}4.4DMA4.4.5DMA專用寄存器(續(xù))/*將內(nèi)存的一塊復(fù)制到另一塊,按字傳輸,size為字數(shù)*/voiddma_m2m(unsignedint*src,unsignedint*dst,unsignedintsize){remainder=size%0xFFFFF;blocks=size/0xFFFFF;rDISRC2=(unsignedint)src;rDISRCC2=0;rDIDST2=(unsignedint)dst;rDIDSTC2=0;if(blocks==0){flag=0;rDCON2=(0x7<<29)|(1<<27)|(1<<22)|(2<<20)|remainder;}
4.4DMA4.4.5DMA專用寄存器(續(xù))
else{flag=1;rDCON2=(0x7<<29)|(1<<27)|(1<<22)|(2<<20)|0xFFFFF;}rDMASKTRIG2=(1<<1)|1;}4.5I/O端口回本章目錄S3C2440A包含了130個多功能輸入/輸出口引腳并且它們?yōu)槿缦嘛@示的9個端口。●端口A(GPA):22位輸出端口;●端口B(GPB):11位輸入/輸出端口;●端口C(GPC):16位輸入/輸出端口;●端口D(GPD):16位輸入/輸出端口;●端口E(GPE):16位輸入/輸出端口;●端口F(GPF):8位輸入/輸出端口;●端口G(GPG):16位輸入/輸出端口;●端口H(GPH):9位輸入/輸出端口;●端口J(GPJ):13位輸入/輸出端口。每個端口都可以簡單地由軟件配置為各種系統(tǒng)配置和設(shè)計要求。在開始主程序前定義使用的每個引腳的功能,如果沒有使用某個引腳的復(fù)用功能,這個引腳可以配置為I/O口。4.5I/O端口
在S3C2440A中,大多數(shù)端口為復(fù)用引腳,因此要決定每個引腳選擇哪項功能。配置這些端口,要通過設(shè)置一系列寄存器來實現(xiàn)。與I/O端口配置相關(guān)的寄存器包括端口控制寄存器、端口數(shù)據(jù)寄存器、端口上拉電阻寄存器、外部中斷控制寄存器、雜項控制寄存器。端口控制寄存器(GPnCON):決定了每個引腳使用哪項功能。如果在掉電模式中PE0至PE7用于喚醒信號,這些端口必須配置為輸入模式。端口數(shù)據(jù)寄存器(GPADAT至GPJDAT):如果端口配置為輸出端口,可以寫入數(shù)據(jù)到GPnDAT的相應(yīng)位。如果端口配置為輸入端口,可以從GPnDAT的相應(yīng)位讀取數(shù)據(jù)。端口上拉寄存器(GPBUP至GPJUP):端口上拉寄存器控制每個端口組的使能/禁止上拉電阻。當相應(yīng)位為0時使能引腳的上拉電阻。當為1時禁止上拉電阻。如果使能了上拉電阻,那么上拉電阻與引腳的功能設(shè)置無關(guān)(輸入、輸出、DATAn、EINTn等)。雜項控制寄存器:此寄存器控制睡眠模式,USB引腳和CLKOUT選擇的數(shù)據(jù)端口上拉電阻。4.5I/O端口外部中斷控制寄存器:24個外部中斷由各種信號方式觸發(fā)。EXTINT寄存器為外部中斷請求配置信號觸發(fā)方式為低電平觸發(fā)、高電平觸發(fā)、下降沿觸發(fā)、上升沿觸發(fā)或雙邊沿觸發(fā)。由于每個外部中斷引腳包含一個數(shù)字濾波器,中斷控制可以確認請求信號是否長于3個時鐘。EINT[15:0]用于喚醒源。1)端口控制寄存器端口控制寄存器見表4-14所示。端口A每個引腳與端口A控制寄存器的1位對應(yīng)。端口B~J的每個引腳與端口B~J控制寄存器的2位對應(yīng)。4.5I/O端口相關(guān)寄存器地址讀/寫描述復(fù)位值GPACON0x56000000讀/寫端口A控制寄存器,使用位[22:0],0:輸出引腳;1:功能引腳0xFFFFFFGPBCON0x56000010端口B控制寄存器,使用位[21:0]00:輸入01:輸出10:功能1引腳11:功能2或保留0x0GPCCON0x56000020端口C控制寄存器,使用位[31:0]GPDCON0x56000030端口D控制寄存器,使用位[31:0]GPECON0x56000040端口E控制寄存器,使用位[31:0]GPFCON0x56000050端口F控制寄存器,使用位[15:0]GPGCON0x56000060端口G控制寄存器,使用位[31:0]GPHCON0x56000070端口H控制寄存器,使用位[21:0]GPJCON0x560000D0端口J控制寄存器,使用位[25:0]4.5I/O端口2)端口數(shù)據(jù)寄存器端口A~J的每個引腳與對應(yīng)的數(shù)據(jù)寄存器中的1位對應(yīng)。相關(guān)寄存器地址讀/寫描述復(fù)位值GPADAT0x56000004讀/寫端口A數(shù)據(jù)寄存器,使用位[22:0]–GPBDAT0x56000014端口B數(shù)據(jù)寄存器,使用位[10:0]–GPCDAT0x56000024端口C數(shù)據(jù)寄存器,使用位[15:0]–GPDDAT0x56000034端口D數(shù)據(jù)寄存器,使用位[15:0]–GPEDAT0x56000044端口E數(shù)據(jù)寄存器,使用位[15:0]–GPFDAT0x56000054端口F數(shù)據(jù)寄存器,使用位[7:0]–GPGDAT0x56000064端口G數(shù)據(jù)寄存器,使用位[15:0]–GPHDAT0x56000074端口H數(shù)據(jù)寄存器,使用位[10:0]–GPJDAT0x560000D4端口J數(shù)據(jù)寄存器,使用位[12:0]–4.5I/O端口3)端口上拉寄存器端口B~J的每個引腳與對應(yīng)的上拉寄存器中的1位對應(yīng)。相關(guān)寄存器地址讀/寫描述復(fù)位值GPBUP0x56000018讀/寫端口B上拉寄存器,使用位[10:0]0:對應(yīng)引腳設(shè)置上拉1:無上拉功能0x0GPCUP0x56000028端口C上拉寄存器,使用位[15:0]GPDUP0x56000038端口D上拉寄存器,使用位[15:0]0xF000GPEUP0x56000048端口E上拉寄存器,使用位[15:0]0x0GPFUP0x56000058讀/寫端口F上拉寄存器,使用位[7:0]0:對應(yīng)引腳設(shè)置上拉1:無上拉功能0x0GPGUP0x56000068端口G上拉寄存器,使用位[15:0]0xFC00GPHUP0x56000078端口H上拉寄存器,使用位[10:0]0x0GPJUP0x560000D8端口J上拉寄存器,使用位[12:0]0x04.6定時器回本章目錄S3C2440A有5個16位定時器,其中定時器0、1、2和3具有脈寬調(diào)制(PWM)功能。定時器4是一個無輸出引腳的內(nèi)部定時器。定時器0還包含用于大電流驅(qū)動的死區(qū)發(fā)生器。定時器0和1共用一個8位預(yù)分頻器,定時器2、3和4共用另外的8位預(yù)分頻器。每個定時器都有一個可以生成5種不同分頻信號(1/2、1/4、1/8、1/16和TCLK)的時鐘分頻器,從相應(yīng)8位預(yù)分頻器得到時鐘的時鐘分頻器中得到其自己的時鐘信號。8位預(yù)分頻器是可編程的,并且按存儲在TCFG0和TCFG1寄存器中的加載值來分頻PCLK。定時計數(shù)緩沖寄存器(TCNTBn)包含了一個當使能了定時器時的被加載到遞減計數(shù)器中的初始值,定時比較緩沖寄存器(TCMPBn)包含了一個被加載到比較寄存器中的與遞減計數(shù)器相比較的初始值。這種TCNTBn和TCMPBn的雙緩沖特征保證了改變頻率和占空比時定時器產(chǎn)生穩(wěn)定的輸出。4.6定時器每個定時器有它自己的由定時器時鐘驅(qū)動的16位遞減計數(shù)器。當遞減計數(shù)器到達0時,產(chǎn)生定時器中斷請求通知CPU定時器操作已經(jīng)完成。當定時器計數(shù)器到達0時,相應(yīng)的TCNTBn的值將被自動加載到遞減計數(shù)器以繼續(xù)下一次操作。然而,如果定時器停止了,TCNTBn的值將不會被重新加載到計數(shù)器中。TCMPBn的值是用于脈寬調(diào)制(PWM)。當遞減計數(shù)器的值與定時器控制邏輯中的比較寄存器的值相匹配時定時器控制邏輯改變輸出電平。因此,比較寄存器決定PWM輸出的開啟時間(或關(guān)閉時間)。S3C2440A定時器的主要特性有●五個16位定時器;●兩個8位預(yù)分頻器和兩個4位分頻器;●可編程輸出波形的占空比控制(PWM);●自動重載模式或單穩(wěn)脈沖模式;●死區(qū)發(fā)生。4.6定時器S3C2440A的16位的PWM定時方塊如圖4-12所示。4.6定時器例4-3下面給出使用定時器延遲毫秒的程序示例/*使用循環(huán)的不精確延時*/voiddelay(unsignedinti){
while(i--);}/*延時毫秒的函數(shù),參數(shù)ms表示要延時多少個毫秒*/voidmdelay(volatileu32ms){
/*Timer4:f=50000000/250/4=50000Hz,即節(jié)拍周期為1/50000=20ms*/
rTCFG0=~(0xFF<<8);
rTCFG0|=249<<8; /*預(yù)分頻值249*/
rTCFG1&=~(0xF<<16);
rTCFG1|=0x1<<16; /*分頻值4*/
4.6定時器例4-3下面給出使用定時器延遲毫秒的程序示例while(ms--){rTCNTB4=50;rTCON&=~(7<<20);rTCON|=7<<20;rTCON&=~(1<<21);rTCON&=~(1<<22);delay(100);while(rTCNTO4)delay(1);}}
4.7ARM中斷回本章目錄在S3C2440A中的中斷控制器接收來自60個中斷源的請求。提供這些中斷源的是內(nèi)部外設(shè),如DMA控制器、UART、IIC等。在這些中斷源中,UARTn、AC97和EINTn中斷對于中斷控制器而言是“或”關(guān)系,它們共享一條中斷請求線,但LCD中斷特性與此不同。當從內(nèi)部外設(shè)和外部中斷請求引腳收到多個中斷請求時,中斷控制器在仲裁步驟后請求ARM920T內(nèi)核的FIQ或IRQ。4.7ARM中斷1.中斷運行控制仲裁步驟由硬件優(yōu)先級邏輯決定并且寫入結(jié)果到幫助用戶通告是各種中斷源中的哪個中斷發(fā)生了的中斷掛起寄存器中。中斷處理框圖如圖4-13所示。如果ARM920TCPU中的PSR的F位被置位為1,CPU不會接收來自中斷控制器的快中斷請求(FIQ)。同樣的如果PSR的I位被置位為1,CPU不會接收來自中斷控制器的中斷請求(IRQ)。因此,中斷控制器可以通過清除PSR的F位和I位為0并且設(shè)置INTMSK的相應(yīng)位為0來接收中斷。ARM920T有兩種中斷模式的類型:FIQ或IRQ,所有中斷源在中斷請求時決定使用哪種類型。4.7ARM中斷1.中斷運行控制中斷處理框圖4.7ARM中斷2.中斷掛起寄存器S3C2440A有兩個中斷掛起寄存器:源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND),這些掛起寄存器表明一個中斷請求是否為掛起。當中斷源請求中斷服務(wù),SRCPND寄存器的相應(yīng)位被置位為1,并且同時在仲裁步驟后INTPND寄存器僅有1位自動置位為1。如果屏蔽了中斷,則SRCPND寄存器的相應(yīng)位被置位為1,這并不會引起INTPND寄存器的位的改變。當INTPND寄存器的掛起位為置位,每當I標志或F標志被清除為0,中斷服務(wù)程序?qū)㈤_始。SRCPND和INTPND寄存器可以被讀取和寫入,因此服務(wù)程序必須首先通過寫1到SRCPND寄存器的相應(yīng)位來清除掛起狀態(tài),并且通過相同方法來清除INTPND寄存器中掛起狀態(tài)。4.7ARM中斷3.中斷屏蔽寄存器此寄存器表明如果中斷相應(yīng)的屏蔽位被置位為1則禁止該中斷。如果某個INTMSK的中斷屏蔽位為0,將正常服務(wù)中斷。如果INTMSK的中斷屏蔽位為1并且產(chǎn)生了中斷,將置位源掛起位。4.中斷源S3C2440A中斷源如表4-17和表4-18所示,支持多達60個中斷源。次級中斷源與(主)中斷源共享一條中斷線。多個中斷源共享一條中斷線的需要在中斷服務(wù)子程序中判斷是哪一個中斷源發(fā)出的中斷。4.7ARM中斷5.中斷優(yōu)先級產(chǎn)生模塊(見圖4-14)每個仲裁器可以處理基于1位仲裁器模式控制(ARB_MODE)和選擇控制信號(ARB_SEL)的兩位的6個中斷請求。如果ARB_SEL位為00b,優(yōu)先級順序為REQ0、REQ1、REQ2、REQ3、REQ4和REQ5;如果ARB_SEL位為01b,優(yōu)先級順序為REQ0、REQ2、REQ3、REQ4、REQ1和REQ5;如果ARB_SEL位為10b,優(yōu)先級順序為REQ0、REQ3、REQ4、REQ1、REQ2和REQ5;如果ARB_SEL位為11b,優(yōu)先級順序為REQ0、REQ4、REQ1、REQ2、REQ3和REQ5。注意:仲裁器的REQ0的優(yōu)先級總是最高并且REQ5的優(yōu)先級總是最低。通過改變ARB_SEL位,可以輪換REQ1到REQ4的順序。4.7ARM中斷5.中斷優(yōu)先級產(chǎn)生模塊(見圖4-14)中斷優(yōu)先級模塊4.7ARM中斷5.中斷優(yōu)先級產(chǎn)生模塊(見圖4-14)此外,如果ARB_MODE位被設(shè)置為0,ARB_SEL位不能自動改變,這使得仲裁器操作在固定優(yōu)先級模式中(注意:即使在此模式中,也不能通過手動改變ARB_SEL位來重新配制優(yōu)先級)。另一方面,如果ARB_MODE為1,ARB_SEL位會被輪換方式而改變。例如,如果REQ1被服務(wù),ARB_SEL位被自動改為01b以便REQ1進入到最低的優(yōu)先級。ARB_SEL改變的詳細結(jié)果如下:如果REQ0或REQ5被服務(wù),ARB_SEL位不會改變;如果REQ1被服務(wù),ARB_SEL位被改為01b;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職數(shù)據(jù)庫試題及答案
- 5年級下冊英語第1第2單元單詞跟讀
- 5年級上冊第5單元摘抄
- 燈泡溫度與電阻的關(guān)系式
- 地下車庫 行政復(fù)議申請
- 機械合同的施工方案
- 2025年合肥信息技術(shù)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫學(xué)生專用
- 2025年石家莊工商職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫一套
- 公共安全領(lǐng)域應(yīng)急救援與預(yù)防體系建設(shè)方案
- 三農(nóng)村電商稅收籌劃與風(fēng)險管理方案
- 拼音瘋狂背古詩(6個單元120首)
- 閱讀讓我們更聰明
- 牙周病科普講座課件
- 實驗室安全專項培訓(xùn)
- 工業(yè)地產(chǎn)營銷推廣方案
- 2024年貴州能源集團電力投資有限公司招聘筆試參考題庫附帶答案詳解
- 電子產(chǎn)品設(shè)計案例教程(微課版)-基于嘉立創(chuàng)EDA(專業(yè)版) 課件 第3章 多諧振蕩器的PCB設(shè)計
- 鐵路軌道與修理
- 紡織行業(yè)清潔生產(chǎn)評價指標體系色紗
- 管理能力測試題大全
- 《風(fēng)景談》新教學(xué)課件
評論
0/150
提交評論