官术网_书友最值得收藏!

2.4 S3C2410處理器概述

S3C2410處理器是韓國Samsung公司基于ARM公司的ARM920T處理器核,開發的32位RISC微處理器,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨立的16KB指令Cache和16KB數據Cache, MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer, I/O口,RTC,8路10位ADC, Touch Screen接口,IIC-BUS接口,IIS-BUS接口,2個USB主機,1個USB設備,SD主機和MMC接口,2路SPI。S3C2410處理器最高可運行在203MHz。

核心板的尺寸僅相當于名片的2/3大小,開發商可以充分發揮想象力,設計制造出小體積,高性能的嵌入式應用產品。

2.4.1 S3C2410芯片的功能單元

S3C2410芯片集成了大量的功能單元,包括:

● 內部1.8V,存儲器3.3V,外部I/O3.3V,16KB數據Cache,16KB指令Cache, MMU。

● 內置外部存儲器控制器(SDRAM控制和芯片選擇邏輯)。

● LCD控制器,一個LCD專業DMA。

● 4個帶外部請求線的DMA。

● 3個通用異步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPI。

● 一個多主IIC總線,一個IIS總線控制器。

● SD主接口版本1.0和多媒體卡協議版本2.11兼容。

● 兩個USB HOST,一個USB DEVICE(VER1.1)。

● 4個PWM定時器和一個內部定時器。

● 看門狗定時器。

● 117個通用I/O。

● 56個中斷源。

● 24個外部中斷。

● 電源控制模式:標準、慢速、休眠、掉電。

● 8通道10位ADC和觸摸屏接口。

● 帶日歷功能的實時時鐘。

● 芯片內置PLL。

● 設計用于手持設備和通用嵌入式系統。

● 16/32位RISC體系結構,使用ARM920T CPU核的強大指令集。

● 帶MMU的先進的體系結構支持WinCE、EPOC32、Linux。

● 指令緩存(Cache)、數據緩存、寫緩存和物理地址TAG RAM,減小了對主存儲器帶寬和性能的影響。

● ARM920T CPU核支持ARM調試的體系結構。

● 內部先進的位控制器總線(AMBA)(AMBA2.0, AHB/APB)。

2.4.2 S3C2410芯片的系統管理

● 小端/大端支持

● 地址空間:每個BANK為128MB(全部為1GB)。

● 每個BANK可編程為8/16/32位數據總線。

● BANK0到BANK6為固定起始地址。

● BANK7可編程BANK起始地址和大小。

● 一共8個存儲器BANK。

● 前6個存儲器BANK用于ROM、SRAM和其他。

● 兩個存儲器BANK用于ROM、SRAM和SDRAM(同步隨機存儲器)。

● 支持等待信號用以擴展總線周期。

● 支持SDRAM掉電模式下的自刷新。

● 支持不同類型的ROM用于啟動(NOR/NAND FLASH、EEPROM和其他)。

在時鐘方面S3C2410也有突出的特點,該芯片集成了一個具有日歷功能的RTC和具有PLL(MPLL和UPLL)的芯片時鐘發生器。MPLL產生主時鐘,能夠使處理器工作頻率最高達到203MHz。這個工作頻率能夠使處理器輕松運行于Windows CE, Linux等操作系統以及進行較為復雜的信息處理。UPLL產生實現主從USB功能的時鐘。

S3C2410將系統的存儲空間分成8組(Bank),每組大小是128MB,共1G。Bank0到Bank5的開始地址是固定的,用于ROM和SRAM。Bank6和Bank7用于ROM, SRAM或SDRAM,這兩個組可編程且大小相同。Bank7的開始地址是Bank6的結束地址,靈活可變。所有內存塊的訪問周期都可編程。S3C2410采用nGCS [7:0]8個通用片選信號選擇這些組。

2.4.3 S3C2410芯片的啟動模式

S3C2410支持從NAND FLASH啟動,NAND FLASH具有容量大,比NOR FLASH價格低等特點。系統采用NAND FLASH與SDRAM組合,可以獲得非常高的性價比。S3C2410具有三種啟動方式,可通過OM [1:0]管腳通過復位期間上拉下拉電阻的電平邏輯進行選擇,當:

OM[1:0]=00時,處理器通過NAND FLASH啟動;

OM[1:0]=01時,處理器通過16位寬的ROM啟動;

OM[1:0]=10時,處理器通過32位寬的ROM啟動;

OM[1:0]=11時,處理器處于測試模式。

當處理器從NAND FLASH啟動時,內置的NAND FLASH將訪問控制接口,并將代碼自動加載到容量為4KB的內部SRAM中并且運行,SRAM的起始地址空間為0x00000000,然后SRAM中的引導程序將操作系統鏡像加載到SDRAM中,操作系統就在SDRAM中運行。

2.4.4 S3C2410系統結構

S3C2410系統結構主要由兩大部分構成: ARM920T內核及片內外設。

ARM920T內核包括三部分:ARM9內核ARM9TDMI、32KB的Cache、MMU,如圖2.8所示。片內外設分為高速外設和低速外設,分別用AHB總線和APB總線。

圖2.8 S3C2410的結構

2.4.5 S3C2410的引腳分布及信號描述

S3C2410引腳圖如圖2.9所示,在圖中畫實心的引腳標記為M8,因此引腳處于M行,第8列,各引腳的功能分布可查閱相關資料。

圖2.9 S3C2410引腳

S3C2410芯片上有117個多功能I/O引腳.分別是:

端口A(GPA):23個輸出端口;

端口B(GPB):11個輸入/輸出端口;

端口C(GPC):16個輸入/輸出端口;

端口D(GPD):16個輸入/輸出端口;

端口E(GPE):16個輸入/輸出端口;

端口F(GPF):8個輸入/輸出端口;

端口G(GPG):16個輸入/輸出端口;

端口H(GPH):11個輸入/輸出端口。

每個端口都可以通過軟件配置寄存器來滿足不同系統和設計的需要。在運行主程序之前,必須先對每一個用到的引腳的功能進行設置。如果某些引腳的復用功能沒有使用,那么可以先將該引腳設置為I/O口。

2.4.6 S3C2410芯片與端口相關的寄存器

(1)端口控制寄存器(GPACON—GPHCON):在S3C2410芯片中,大部分引腳是多路復用的,所以要確定每個引腳的功能。PnCON(端口控制寄存器)能夠定義引腳功能。如果GPF0—GPF7和GPG0—GPG7被用作掉電模式下的喚醒信號,那么這些端口必須配置成中斷模式。

(2)端口數據寄存器(GPADAT—GPHDAT):如果端口定義為輸出口,那么輸出數據可以寫入PDATn中的相應位;如果端口定義為輸入口,那么輸入數據可以從PDATn相應的位中讀入。

(3)端口上拉寄存器(GPBUP—GPHUP):通過配置端口上拉寄存器,可以使該組端口與上拉電阻連接或斷開。當寄存器中相應的位配置為0時,該引腳接上拉電阻;當寄存器中相應的位配置為1時,該引腳不接上拉電阻。

(4)外部中斷控制寄存器(EXTINTn):通過不同的信號方式可以使24個外部中斷被請求。EXTINTn寄存器可以根據外部中斷的需要,將中斷觸發信號配置為低電平觸發,高電平觸發,下降沿觸發,上升沿觸發和邊沿觸發幾種方式。

2.4.7 端口A引腳定義及功能設置

端口A(GPA)共有23個輸出引腳,其引腳功能如表2.2所示。

表2.2 端口A引腳定義

在端口A中控制寄存器GPACON地址是0x56000000,數據寄存器GPADAT地址是0x56000004, GPACON復位默認值是0x7FFFFF。

端口A與端口B—H在功能選擇方面有所不同,GPACON中每一位對應一根引腳,共23根引腳。當某位設為0時,相應引腳設置為輸出引腳,此時可以在GPADAT中相應位寫入0或1,讓此引腳輸出低電平或高電平;當GPACON某位設為1時,相應引腳為地址線或用于地址控制,此時GPADAT無用。一般而言GPACON通常設為全1,以便訪問外部存儲器件。

2.4.8 端口B-H引腳定義及功能設置

端口B—H在寄存器操作方面完全相同。如果用x表示B—H中的一個字符,即GPxCON中每兩位控制一根引腳:00表示輸入、01表示輸出、10表示特殊功能、11保留不用。GPxDAT用于讀/寫引腳:當引腳設為輸入時,讀此寄存器可知相應引腳的狀態是高是低;當引腳設為輸出時,寫此寄存器相應位可令此引腳輸出低電平或高電平。GPxUP:某位為0時,相應引腳無內部上拉;為1時,相應引腳使用內部上拉,端口B—H引腳定義如表2.3-2.9所示。

表2.3 端口B引腳定義

在端口B中控制寄存器GPBCON地址是0x56000010,數據寄存器GPBDAT地址是0x56000014,上拉電阻寄存器GPBUP地址為0x56000018, GPBCON復位默認值為0x0, GPBUP復位默認值為0x0。

例如:通過內存映射把GPBCON寄存器地址0x56000010映射到標識符GPBCON上,把GPBDAT寄存器地址0x56000014映射到標識符GPBDAT上,并設置GPB7為輸出口,輸出為0,用C語言的語句可表示為:

        #define GPBCON (*(volatile unsigned long *)0x56000010)
        #define GPBDAT (*(volatile unsigned long *)0x56000014)
        GPBCON=0x00004000; //設置GPB7為輸出口,兩個位控制1個引腳,00輸入、01輸出
        GPBDAT=0x00000000; //令GPB7輸出0

如果使用端口映射,就必須用匯編語言完成對設備的控制,上述C程序可以改寫為:

        LDR R0, =0x56000010; R0設為GPBCON寄存器,用于選擇端口B引腳
        MOV R1, #0x00004000
        STR R1, [R0];設置GPB7為輸出口
        LDR R0, =0x56000014; R0設為GPBDAT寄存器,此寄存器用于讀/寫端口B各引腳的數據
        MOV R1, #0x00000000;此值改為0x00000080,可讓LED1熄滅
        STR R1, [R0]; GPB7輸出0, LED1點亮

表2.4 端口C引腳定義

在端口C中控制寄存器GPCCON地址是0x56000020,數據寄存器GPCDAT地址是0x56000024,上拉電阻寄存器GPCUP地址為0x56000028, GPCCON復位默認值為0x0, GPCUP復位默認值為0x0。

例如:

        #define rGPCCON  (*(volatile unsigned*)0x56000020)   //Port C控制寄存器
        #define rGPCDAT  (*(volatile unsigned*)0x56000024)   //Port C數據寄存器
        #define rGPCUP   (*(volatile unsigned*)0x56000028)   //Port C上拉電阻禁止寄
    存器

表2.5 端口B引腳定義

在端口D中控制寄存器GPDCON地址是0x56000030,數據寄存器GPDDAT地址是0x56000034,上拉電阻寄存器GPDUP地址為0x56000038, GPDCON復位默認值為0x0, GPDUP復位默認值為0xF000。

表2.6 端口E引腳定義

在端口E中控制寄存器GPECON地址是0x56000040,數據寄存器GPEDAT地址是0x56000044,上拉電阻寄存器GPEUP地址為0x56000048, GPECON復位默認值為0x0, GPEUP復位默認值為0x0。

表2.7 端口F引腳定義

在端口F中控制寄存器GPFCON地址是0x56000050,數據寄存器GPFDAT地址是0x56000054,上拉電阻寄存器GPFUP地址為0x56000058, GPFCON復位默認值為0x0, GPFUP復位默認值為0x0。

表2.8 端口G引腳定義

在端口G中控制寄存器GPGCON地址是0x56000060,數據寄存器GPGDAT地址是0x56000064,上拉電阻寄存器GPGUP地址為0x56000068, GPGCON復位默認值為0x0, GPFUP復位默認值為0xF800。

表2.9 端口H引腳定義

在端口H中控制寄存器GPHCON地址是0x56000070,數據寄存器GPHDAT地址是0x56000074,上拉電阻寄存器GPHUP地址為0x56000078, GPHCON復位默認值為0x0, GPHUP復位默認值為0x0。

例如:

設有LED1, LED2分別接GPE11, GPE12兩腳,如圖2.10所示,如何控制GPE11, GPE12兩腳的輸出,讓LED燈各閃爍10次。

圖2.10 LED與S3C2410

    void LED_DispOn(void)
    {
     rGPEDAT=rGPEDAT | (0x03 << 11);
    }
    void LED_DispOff(void)
    {
     rGPEDAT=rGPEDAT & (~ (0x03 << 11));
    }
    int main( void)
    {
      int  i ;
      rGPECON= ( rGPECON & (~(0x0F<<22))) | (0x05<<22) ;
      //// rGPECON[25:22]=0101b,設置GPE11,12兩腳為GPIO輸入模式
      for(i=0; i<10; i++)
      {
          LED_DispOff( ) ;
          Delay(5);   /////表示延遲5s
          LED_DispOn(  ) ;
          Delay(5);
          …………
        }

    }
    思考:
    閱讀下列程序,請分析程序的功能
    #define GPBCON  (*(volatile unsigned long *)0x56000010)
    #define GPBDAT  (*(volatile unsigned long *)0x56000014)
    #define GPFCON  (*(volatile unsigned long *)0x56000050)
    #define GPFDAT  (*(volatile unsigned long *)0x56000054)
    /* 設根據硬件特性LED1—LED4 對應GPB7—GPB10 */
    #define GPB7_out  (1<<(7*2))
    #define GPB8_out  (1<<(8*2))
    #define GPB9_out  (1<<(9*2))
    #define GPB10_out (1<<(10*2))
    /* 設根據硬件特性鍵盤K1—K3對應GPF1—GPF3, K4對應GPF7 */
    #define GPF1_in   ~(3<<(1*2))
    #define GPF2_in   ~(3<<(2*2))
    #define GPF3_in   ~(3<<(3*2))
    #define GPF7_in   ~(3<<(4*2))
    int main()
    {
      //LED1—LED4對應的4根引腳設為輸出
      GPBCON=GPB7_out | GPB8_out | GPB9_out | GPB10_out ;
      //K1—K4 對應的4根引腳設為輸入
      GPFCON &= GPF1_in & GPF2_in & GPF3_in & GPF7_in ;
      while(1)
        {
        //若Kn為0(表示按下),則令LEDn為0(表示點亮) ,11110000000
        GPBDAT = ((GPFDAT & 0x0e)<<6) | ((GPFDAT & 0x80)<<3);
        }
      return 0;
    }

2.5 嵌入式開發板

目前有很多公司研發自己的S3C2410開發板,雖然從功能上講有些差異,但原理基本一致。S3C2410開發板外圍電路接口非常豐富,功能強大,適用于各種手持設備、消費電子和工業控制設備的開發。如圖2.11所示的是某企業生產的S3C2410開發板的實物圖。

圖2.11 某企業生產的S3C2410開發板

在圖2.12中的S3C2410開發板器件布局圖,數模轉換芯片接口中芯片內部集成8通道10bitADC,有電位器調節的電壓輸入、溫度傳感器輸入、D/A輸出引腳經隔離后的輸入;可以外接SPI接口的鍵盤控制芯片ZLG7289;雙Ethernet以太網接口可以用CS8900擴展的10M以太網接口或DM9000擴展的10M/100M以太網接口;系統帶有三部分的LED顯示。通過ZLG7290驅動的8位8段數碼管,顯示數字信息,通過總線驅動的8×8數碼管點陣,顯示點陣信息;VIDEO擴展接口,通過專用視頻編碼芯片CH7004輸出如下形式的視頻信號:VGA信號,可以直接連接顯示器;電視機接口(S端子)直接連接電視機;視頻口(AV端子)直接連接電視機。

圖2.12 某企業生產的S3C2410開發板器件布局

IIS音頻擴展接口,通過音頻擴展芯片支持MIC輸入及耳機音頻輸出;為了方便視聽,板載音頻功放和兩個1W的喇叭,左右聲道經功放驅動后直接由板載喇叭發聲,當然也可以通過板上跳線關閉這個在線播放的功能IDE接口,通過板載的IDE接口還可以直接連接筆記本的IDE硬盤,支持DMA方式。

擴展總線接口,總線接口通過兩個96P×2的歐式座擴展出來,不僅引出了總線的信號,而且通過板載的CPLD擴展了多個I/O口,方便了用戶的使用;而且,結實耐用的歐式座適用用戶的不斷插拔;通過擴展總線可以擴展如下擴展模塊:

FPGA(Altera Cyclone)設計擴展模塊:實現MCU+FPGA架構的綜合設計;

DSP(TI 5402)擴展模塊:實現MCU+DSP架構的綜合設計;

GPS擴展模塊:實現地理信息相關的綜合設計;

GPRS擴展模塊:實現遠程無線通信的綜合設計;

電機擴展模塊:包括步進、直流、交流電機模塊,實現電機相關的綜合控制設計;

指紋傳感器(ATMEL FCD4B14)擴展模塊:實現信號處理的綜合設計。

主站蜘蛛池模板: 嫩江县| 葵青区| 绿春县| 咸阳市| 梅河口市| 沙洋县| 洪湖市| 伊春市| 韩城市| 延安市| 历史| 鄱阳县| 榆林市| 平舆县| 兴城市| 高唐县| 赤峰市| 长沙市| 乌什县| 鄂州市| 讷河市| 盱眙县| 吕梁市| 深圳市| 天气| 蒙阴县| 元谋县| 三河市| 湖口县| 吉安县| 武城县| 镇雄县| 定日县| 台湾省| 伊川县| 祁门县| 新化县| 洞头县| 万州区| 阳西县| 台东市|