|
S3C2440 的時(shí)鐘設(shè)置時(shí)間:
一個(gè)嵌入式系統(tǒng)中,晶振就像心臟。必須先確定晶振,設(shè)置好系統(tǒng)的時(shí)鐘,
WDT,UART,PWM,TIMER 等模塊才能正常工作。
和51 系列單片機(jī)相比,S3C2440 的時(shí)鐘電路很復(fù)雜。
首先通過引腳OM2,OM3 來選擇時(shí)鐘源。
以TQ2440 開發(fā)板為例,OM2,OM3 都接地,外接12M 晶振,主時(shí)鐘源和USB 時(shí)鐘源都是
外部晶振。
S3C2440 具有2 個(gè)PLL(Phase Locked Loop:用來產(chǎn)生高頻的電路),一個(gè)是MPLL, 用于
產(chǎn)生FCLK, HCLK, PCLK 三種頻率, 這三種頻率分別有不同的用途:
FCLK 是CPU 提供的時(shí)鐘信號(hào),如果提到CPU 的主頻是400MHz,就是指的這個(gè)時(shí)鐘信號(hào)。
HCLK 是為AHB 總線提供的時(shí)鐘信號(hào), Advanced High-performance Bus,主要用于高速
外設(shè),比如內(nèi)存控制器,中斷控制器,LCD 控制器, DMA 以及USB host 。
PCLK 是為APB 總線提供的時(shí)鐘信號(hào),Advanced Peripherals Bus,主要用于低速外設(shè),
比如WATCHDOG,IIS, I2C, SDI/MMC, GPIO,RTC ,UART,PWM,ADC and SPI 等等。
另外一個(gè)是UPLL,專門用于驅(qū)動(dòng)USB host/Device。并且驅(qū)動(dòng)USB host/Device 的頻率必
須為48MHz。
時(shí)鐘電路相關(guān)寄存器總共有7 個(gè),下面分別介紹。
MPLLCON(0X4C00 0004)和UPLLCON(0X4C00 0008)
這兩個(gè)寄存器用來設(shè)置主鎖相環(huán)產(chǎn)生的時(shí)鐘和USB 鎖相環(huán)產(chǎn)生的時(shí)鐘。
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
----------------------- Page 2-----------------------
注意:MDIV 【19:12】,PDIV 【9:4】,SDIV 【1:0】,當(dāng)設(shè)置MPLL 和UPLL 值的時(shí)候,需要
先設(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
CLKCON(0X4C00 000C) 控制各種模塊如 SPI,IIC,UART 等的時(shí)鐘電路開關(guān)以及系統(tǒng)的
SLEEP,IDLE 模式,以便降低系統(tǒng)功耗。默認(rèn)值是全部時(shí)鐘電路打開,系統(tǒng)工作在正常模式。
CLKSLOW(0X4C00 0010)用來選擇系統(tǒng)是否進(jìn)入慢模式,以及是否關(guān)閉MPLL 或UPLL,
和在慢模式下的分頻率。
CLKDIVN(0X4C00 0014)和CAMDIVN(0X4C00 0018 照相機(jī)時(shí)鐘分割寄存器)兩個(gè)寄存器
配合來確定FCLK,HCLK,PCLK 的比例。
LOCKTIME(0X4C00 0000)設(shè)置MPLL,UPLL 的鎖存時(shí)間,采用默認(rèn)值0XFFFF FFFF,鎖存
時(shí)間各為300us。
說到鎖存時(shí)間,就要分析下S3C2440 的時(shí)鐘工作過程。
在系統(tǒng)復(fù)位時(shí),晶振起振穩(wěn)定后,PLL 開始按照默認(rèn)值開始工作,但是在復(fù)位時(shí),PLL 工
作是不穩(wěn)定的,所以 S3C2440 用 FIN (12M )作為 MPLL 。只到一個(gè)新的值寫入
MPLLCON,UPLLCON,即使用戶不想改變復(fù)位后PLLCON 的默認(rèn)值,仍然需要把這個(gè)默認(rèn)
值寫入PLLCON,寫入值之后,系統(tǒng)會(huì)自動(dòng)插入一個(gè)PLL LOCK TIME,也就是LOCKTIME
寄存器中設(shè)置的300us。300us 后,PLL 就開始正常工作。
深圳專業(yè)嵌入式ARM、Linux、單片機(jī)技術(shù)實(shí)訓(xùn)。學(xué)習(xí)顧問郭老師:QQ754634522
在系統(tǒng)正常工作時(shí),如果要改變FCLK,寫入新值到MPLLCON 后,系統(tǒng)也會(huì)插入一個(gè)PLL
LOCK TIME,300us 后FCLK 就變成新的頻率。
|
|