久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3690|回復: 0
收起左側

TQ2440的FCLK,HCLK,PCLK,UCLK時鐘頻率設置

[復制鏈接]
ID:105323 發表于 2016-3-4 16:35 | 顯示全部樓層 |閱讀模式
  S3C2440有兩個PLL(phase locked loop)一個是MPLL,一個是UPLL。MPLL用于CPU及其他外圍器件,UPLL用于USB。用于產生FCLK,HCLK, PCLK三種頻率,這三種頻率分別有不同的用途:

FCLK是CPU提供的時鐘信號。
HCLK是為AHB總線提供的時鐘信號, AdvancedHigh-performance Bus,主要用于高速外設,比如內存控制器,中斷控制器,LCD控制器, DMA 等。
PCLK是提供給用于外設如WDT,IIS,I2C,PWM,MMC/SD,ADC,UART,GPIO,RTC,SPI的APB總線的時鐘。

   從S3C2440的DATASHEET里可以看到,S3C2440最大支持400MHz的主頻,但是這并不意味著一定工作在400MHz下面,可以通過設定MPLL,UPLL寄存器來設定CPU的工作頻率。
   盡管在CPU上電(power-on)或者復位(reset)后,MPLL就開始進入工作狀態,但是此時MPLL的輸(Mpll)并不作為系統的時鐘,而是直接使用外部信號EXTCLK或者外部時鐘晶振作為系統時鐘。直到軟件初始化MPLL寄存器(rMPLLCON),寫入了有效的值過后,系統才開始使用MPLL的輸出(Mpll)作為系統時鐘。雖然很多時候我們不必重新設置MPLL寄存器(rMPLLCON)新的值,但是為了使系統使用其輸出作為時鐘信號,在軟件初始化系統部分,還是要向rMPLLCON寫入一個有效的舊的值。這樣子才使系統處于正確的工作狀態。

TQ2440程序中FCLK=400MHz,MDIV=92=0x5C、PDIV=1、SDIV=1

#define FIN  (12000000)

rMPLLCON=(92<<12)|(1<<4)|1; //設置FCLK為400M
ChangeClockDivider(14,12);     //這個函數在2440lib.c中定義的,設置分頻比為1:4:8
CalcBusClk();                //計算總線頻率

下面是被調用的兩個函數
//************************[ HCLK, PCLK]***************************
void ChangeClockDivider(int hdivn_val,intpdivn_val)//兩個參數分別為FCLK:HCLK,HCLK:PCLK的比值
{
int hdivn=2, pdivn=0;

// hdivn_val (FCLK:HCLK)ratio hdivn
//11          1:1      (0)
//12          1:2      (1)
//13          1:3      (3)
//14          1:4      (2)
// pdivn_val (HCLK:PCLK)ratio pdivn
//11          1:1      (0)
//12          1:2      (1)
switch(hdivn_val) {
  case 11: hdivn=0; break;
  case 12: hdivn=1; break;
  case 13:
  case 16: hdivn=3; break;
  case 14:
  case 18: hdivn=2; break;
}

switch(pdivn_val) {
  case 11: pdivn=0; break;
  case 12: pdivn=1; break;
}

//Uart_Printf("Clock division change [hdiv:%x,pdiv:%x]\n", hdivn, pdivn);
rCLKDIVN =(hdivn<<1) | pdivn;
switch(hdivn_val) {
  case16:  // when 1,HCLK=FCLK/8.
   rCAMDIVN =(rCAMDIVN & ~(3<<8))| (1<<8);
  break;
  case 18:  //when 1, HCLK=FCLK/6.
   rCAMDIVN =(rCAMDIVN & ~(3<<8))| (1<<9);
  break;
}

if(hdivn!=0)
  MMU_SetAsyncBusMode();
else
  MMU_SetFastBusMode();
}

voidCalcBusClk(void)   //計算總線頻率
{
U32 val,UPLL;
U8 m, p, s;
val = rMPLLCON;
m = (val >> 12)& 0xff;
p = (val >> 4)& 0x3f;
s = val & 3;
FCLK =((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;

val = rCLKDIVN;
m = (val >> 1)& 3;
p = val &1;
val = rCAMDIVN;
s = val >> 8;

switch (m)
{
  case 0:
   HCLK =FCLK;
   break;
  case 1:
   HCLK = FCLK>> 1;
   break;
  case 2:
   if(s& 2)
    HCLK= FCLK >> 3;
   else
    HCLK= FCLK >> 2;
   break;
  case 3:
   if(s& 1)
    HCLK= FCLK / 6;
   else
    HCLK= FCLK / 3;
   break;
}

if(p)
  PCLK = HCLK>> 1;
else
  PCLK = HCLK;
  
//rUPLLCON內存的值為0x00038022,求出UPLL的值為48MHz;時鐘分頻控制寄存器CLKDIVN[3]=0時UCLK=UPLL
val = rUPLLCON;
m = (val >> 12)& 0xff;
p = (val >> 4)& 0x3f;
s = val & 3;
UPLL =((m+8)*FIN)/((p+2)*(1<<s));
UCLK =(rCLKDIVN&8)?(UPLL>>1):UPLL;
}


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 草久久 | julia中文字幕久久一区二区 | 日本污视频 | 成人a网 | 特级毛片www| 一区二区三区四区不卡视频 | 黄色av网站在线免费观看 | 九九99久久| 伊人网99 | 天天草av| 国产精品一区二区三 | 一级毛片视频在线 | 欧美二区在线 | 97精品一区二区 | 99精品欧美一区二区三区综合在线 | 成人在线视频一区 | 黄色免费网址大全 | 亚洲精品一二三 | 大久| 国产成人精品午夜 | 理论片87福利理论电影 | 欧美一级特黄aaa大片在线观看 | 久久久免费少妇高潮毛片 | 久久精品中文字幕 | av综合站| 久久黄色| 亚洲精品第一国产综合野 | 免费国产精品久久久久久 | 亚洲国产自产 | 在线国产一区 | 一级黄色毛片 | 久草免费在线视频 | 影视先锋av资源噜噜 | 在线观看视频91 | 超碰精品在线观看 | 国产午夜影院 | 免费国产一区 | 国产精品国产a级 | 国产黄色小视频 | www.蜜桃av| 精品福利在线 |