在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            S3C2440 clock 工作原理

            作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
            OSC是用無源晶振,EXT是用有源晶振或外部時鐘2440的12M是Oscillator 是有源的呀!

            2440的12M是Oscillator

            本文引用地址:http://www.biyoush.com/article/201611/319127.htm
            Crystal 無源晶體
            Oscillator 有源晶體(里面有有源器件)
            無源晶振內(nèi)只有一片按一定軸向切割的石英晶體薄片,供接入運放(或微處理器的XTAL端)以形成振蕩.有源晶振內(nèi)帶運放,工作在最佳狀態(tài),電源后,可直接輸出一定頻率的等幅正弦波,一般至少有4引腳,體積稍大.

            準(zhǔn)備先不跑系統(tǒng),把S3C2440和周邊硬件熟悉一下再說。

            對于任何一個單片機,要使用它首先就要弄明白他的時鐘系統(tǒng),MCU的時鐘就像人的心臟,跳動的快慢,決定著系統(tǒng)的工作速度。S3C2440的datesheet上說,可以達到400M,但是也不是說,必須在400M的頻率下工作,主時鐘晶振來自于外部晶振(XTIPLL)或者是外部時鐘(EXTCLK)。時鐘生成器包含了一個振蕩器(振蕩放大器),其連接外部晶振,并且還有2個PLL,可以產(chǎn)生需要的高頻。

            通過引腳OM[3:2]來決定時鐘源是Crystal還是EXTCLK,不過我用的開發(fā)板將OM[3:2]固定接地了,都是用外部晶振。有一點值得注意,在對MPLLCON寫入有效值之前,系統(tǒng)使用外部晶振或外部時鐘源的時鐘。即使用戶不準(zhǔn)備改變MPLLCON的值,也應(yīng)當(dāng)重新寫一次。

            簡單說一下,S3C2440的時鐘構(gòu)成。

            S3C2440具有2個PLL(Phase Locked Loop:用來產(chǎn)生高頻的電路),一個是MPLL, 用于產(chǎn)生FCLK, HCLK, PCLK三種頻率, 這三種頻率分別有不同的用途:

            FCLK是CPU提供的時鐘信號,如果提到CPU的主頻是400MHz,就是指的這個時鐘信號。

            HCLK是為AHB總線提供的時鐘信號, Advanced High-performance Bus,主要用于高速外設(shè),比如內(nèi)存控制器,中斷控制器,LCD控制器, DMA 以及USB host 。

            PCLK是為APB總線提供的時鐘信號,Advanced Peripherals Bus,主要用于低速外設(shè),比如WATCHDOG,IIS, I2C, SDI/MMC, GPIO,RTC ,UART,PWM,ADC and SPI等等。

            另外一個是UPLL,專門用于驅(qū)動USB host/Device。并且驅(qū)動USB host/Device的頻率必須為48MHz。

            在系統(tǒng)復(fù)位之后,如果沒有設(shè)定PLL,則采用外部晶振的頻率作為FCLK,同時FCLK:HCLK:PCLK的比例關(guān)系為1:1:1。

            下面說一些跟時鐘有關(guān)的寄存器設(shè)置:通過改變CLKDIVN可以改變FCLK,HCLK,PCLK的分頻比。

            鎖定時間計數(shù)寄存器LOCKTIME(0x4c000000):一般使用默認就可以。

            鎖相環(huán)控制寄存器[MPLLCON(0x4c000004)&UPLLCON(0x4c000008)]:

            MPLL=(2*m*Fin)/(p*2^s) UPLL=(m*Fin)/(p*2^s)

            其中m=(MDIV+8),p=(PDIV+2),s=SDIV

            P,M范圍:1<=P<=62,1<=M<=248

            注意:MDIV[19:12],PDIV[9:4],SDIV[1:0],當(dāng)設(shè)置MPLL和UPLL值的時候,需要先設(shè)置UPLL再設(shè)置MPLL。

            例如:MPLLCON = (92<<12) | (1<<4) |(1);//FCLK=400M

            這里MDIV=92,PDIV=1,SDIV=1,那么m=100,p=3,s=1,且Fin=12M,所以FCLK=400M

            再設(shè)置CLKDIVN=0x03;//FCLK:HCLK:PCLK=1:2:4

            這里CLKDIVN(0x4c000014)用于決定三者的分配比例

            一般設(shè)置這兩個就可以了。還有一個時鐘控制寄存器CLKCON(0x4c00000c)向相應(yīng)位寫1使能相應(yīng)時鐘,不過一般默認為1.

            關(guān)于時鐘方面基本就是這么多了。

            S3C2440 clock 工作原理

            時間:2009-08-10 08:44來源: 作者:long 點擊:41次
              

            overview
            時鐘和電源管理這一塊內(nèi)容包括三個部分:時鐘控制, USB控制, 電源控制

            s3c2440a的CPU上,時鐘控制邏輯可以產(chǎn)生需要的時鐘信號,包括給CPU用的FCLK, 給AHB總線外設(shè)用的HCLK以及給APB總線外設(shè)用的PCLK.S3C2440A含有兩個鎖相環(huán):一個是FCLK, HCLK和PCLK, 還有另外一個專門用于USB單元(48Hz).時鐘控制邏輯可以在沒有PLL的時候使時鐘變慢,并且可以用軟件的方法使時鐘與周邊設(shè)備連接與斷開, 這個功能可以節(jié)省功耗.

            補充:
            AMBA總線

            先進的微控制器總線體系結(jié)構(gòu)AMBA規(guī)范定義了三種總線:

            (1)AHB(Advanced High-performance Bus):用于連接高性能系統(tǒng)模塊。它支持突發(fā)數(shù)據(jù)傳輸方式及單個數(shù)據(jù)傳輸方式,所有時序參考同一個時鐘沿;

            (2)ASB(Advanced System Bus):用于連接高性能系統(tǒng)模塊,它支持突發(fā)數(shù)據(jù)傳輸模式;

            (3)APB(Advance Peripheral Bus):是一個簡單接口支持低性能的外圍接口。


            對于電源控制邏輯,S3C2440A有不同的電源管理的主題,來對某一項任務(wù)來優(yōu)化電源功耗.S3C2440A中的電源管理單元可以有四種模式: 普通模式, SLOW 模式, IDLE模式, SLEEP模式.

            功能描述

            時鐘架構(gòu)
            時鐘產(chǎn)生器包括一個連接在外部crystal上的晶振,并且有兩用于產(chǎn)生S3C2440A所需要的高頻信號的鎖相環(huán).

            時鐘源的選擇
            下表顯示了芯片模式控制引腳(OM3和OM2)的選擇與S3C2440A時鐘源的關(guān)系.

            注意:
            1) 盡管重啟后,MPLL會啟動,但是直到軟件正確設(shè)置了MPLLCON寄存器后,MPLL的輸出才作為系統(tǒng)的時鐘.在正確的設(shè)置被設(shè)置前,來自外部的crystal或extclk源直接作為系統(tǒng)時鐘.即使用戶并不想改變MPLLCON寄存器的默認值,用戶應(yīng)該在MPLLCON的寄存器中設(shè)置同樣的值.
            2) OM[3:2]用于決定測試模式,當(dāng)OM[1:0]是11的時候.

            鎖相環(huán)
            在時鐘產(chǎn)生器中的MPLL,作為一個電路,作用是在頻率與相伴上同步輸出信號與一個參考輸入信號.

            時鐘控制邏輯
            時鐘控制邏輯決定使用的信號源,PLL時鐘或外部時鐘. 當(dāng)PLL配置成一個新的頻率時,時鐘控制邏輯中止FCLK的使用,直到使用PLL鎖時間的PLL的輸出穩(wěn)定后. 這種時鐘控制邏輯在通電重啟或從節(jié)電模式中醒來都起作用.

            通電重啟(XTIpll)

            在普通模式中變換PLL的設(shè)置

            USB時鐘控制

            FCLK, HCLK, PCLK
            FCLK 用于ARM920T
            HCLK 用于AHB總線,AHB總線被ARM920T用于,內(nèi)存控制器,中斷控制器,LCD控制器,DMA和USB host block.
            PCLK 用于APB總線,APB總線是用于周邊設(shè)備的,如是WDT,IIS, I2C, PWM 計數(shù)器, MMC接口, ADC, UART, GPIO, RTC 和SPI

            注意:
            1) CLKDIVN必須小心設(shè)置,不要超過HCLK和PCLK的允許范圍.
            2) 如果HDIVN不是0,CPU總線模式必須從快速總線模式轉(zhuǎn)換到異步總線模式,通過使用下面的指令來達到.(S3C2440不支持同步總線模式)
            MMU_SetAsyncBusMode
            mrc p15, 0, r0, c1, c0, 0
            orr r0, r0, #R1_nF:OR:R1_iA
            mcr p15, 0, r0, c1, c0, 0
            如果HDIVN不是0, 并且CPU總線模式是快速總線模式,那么CPU將會在HCLK下工作.這種特性可以用來在不影響HCLK和PCLK的情況下改變CPU頻率成原來的一半或更多.

            電源管理
            在S3C2440A中,電源管理模塊通過軟件來控制系統(tǒng)時鐘以達到減少電源功耗的功能.這些主題跟PLL,時鐘控制邏輯(FCLK,HCLK,PCLK)和喚醒信號有關(guān).

            S3C2440A有四種電源模式.下面的部分描述各種模式.各種模式之間的轉(zhuǎn)換并不是隨意的.

            FCLK的值如何得到?

            FCLK= Fout = 2 * m * Fin / (p*2^s), Fvco = 2 * m * Fin / p where : m=MDIV+8, p=PDIV+2, s=SDIV

            MPLLVal [M:7fh,P:2h,S:1h] bootloader打印出來的信息.

            code

            mov r1, #0x4c000000

            ldr r2, =0x7f021

            str r2, [r1, #0x04]

            與BOOTLOADER里打印出來的一樣.

            ^ 代表冪

            So, FCLK =2* (127+8)*12M/4*2=405M

            關(guān)于HCLK, PCLK的值,取決于CLKDIVN的值.

            代碼如下:

            mov r1, #0x4c000000

            ldr r2, 0x5

            str r2, [r1, #0x14]

            所以CLKDIVN=5, HDIVN=10, PDIVN=1, 再看CAMDIVN

            10: HCLK = FCLK/4 when CAMDIVN[9]=0

            HCLK = FCLK/8 when CAMDIVN[9]=1

            PCLK = HCLK /2

            CAMDIVN代碼中沒有進行設(shè)置,就用初始值.0



            HCLK = FCLK/4

            PCLK = FCLK/8

            至此, clock部分設(shè)置結(jié)束.

            MCLK:405MHz

            HCLK:135MHz

            PCLK:67.5MHz

            在這里定時器時鐘頻率為PCLK/8=67.5/8=8.4375MHz

            定時器0示例代碼:

            轉(zhuǎn)載請注明出處,謝謝!

            1 void T1DelayNus(UINT16 t)
            2 {
            3 rTCFG1 &= ~(0x0F<<4);
            4 rTCFG1 |= (2<<4);
            5 rTCNTB1 =(S3C2440PCLK)/8/1000000;
            6 rTCON &= ~(0x0F<<8);
            7 rTCON |= (1<<11)|(1<<9)|(1<<8);
            8 rTCON &= ~(1<<9);
            9
            10
            11 while(t--)
            12 {
            13
            14 while(rTCNTO1!=(rTCNTB1-1));
            15
            16 }
            17
            18 rTCON &= ~(1<<8);
            19
            20 }
            21
            22
            23 void T1DelayNms(UINT16 t)
            24 {
            25 rTCFG1 &= ~(0x0F<<4);
            26 rTCFG1 |= (2<<4);
            27 rTCNTB1 =(S3C2440PCLK)/8/1000;
            28 rTCON &= ~(0x0F<<8);
            29 rTCON |= (1<<11)|(1<<9)|(1<<8);
            30 rTCON &= ~(1<<9);
            31
            32
            33 while(t--)
            34 {
            35 while(rTCNTO1!=(rTCNTB1-1));
            36 }
            37
            38 rTCON &= ~(1<<8);
            39
            40 }

            特別是要注意rTCNTOn與rTCNTBn的關(guān)系。

            1 void T0DelayNus(UINT16 t)
            2 {
            3 rTCFG1 &= ~0x0F;
            4 rTCFG1 |= 2;
            5 rTCNTB0 =(S3C2440PCLK)/8/1000000; //時鐘頻率為PCLK/8
            6 //除以1000000表示進行微秒級延時
            7 rTCON &= ~0x0F;
            8 rTCON |= (1<<3)|(1<<1)|(1<<0);
            9 rTCON &= ~(1<<1);
            10
            11
            12 while(t--)
            13 {
            14 while(rTCNTO0!=(rTCNTB0-1));
            15 }
            16
            17 rTCON &= ~(1<<0); //停止定時器0
            18
            19 }
            20
            21 void T0DelayNms(UINT16 t)
            22 {
            23 rTCFG1 &= ~0x0F;
            24 rTCFG1 |= 2;
            25 rTCNTB0 =(S3C2440PCLK)/8/1000; //時鐘頻率為PCLK/8
            26 //除以1000表示進行毫級延時
            27 rTCON &= ~0x0F;
            28 rTCON |= (1<<3)|(1<<1)|(1<<0);
            29 rTCON &= ~(1<<1);
            30
            31 while(t--)
            32 {
            33 while(rTCNTO0!=(rTCNTB0-1));
            34 }
            35
            36 rTCON &= ~(1<<0); //停止定時器0
            37 }



            關(guān)鍵詞: S3C2440clock工作原

            評論


            技術(shù)專區(qū)

            關(guān)閉