<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          S3C2440 clock 工作原理

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

          2440的12M是Oscillator

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

          準備先不跑系統(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)使用外部晶振或外部時鐘源的時鐘。即使用戶不準備改變MPLLCON的值,也應(yī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],當設(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]用于決定測試模式,當OM[1:0]是11的時候.

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

          時鐘控制邏輯
          時鐘控制邏輯決定使用的信號源,PLL時鐘或外部時鐘. 當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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();