zoukankan      html  css  js  c++  java
  • TQ2440之系统时钟

    S3C2440有三个时钟:FCLK for CPU, HCLK for the AHB bus peripherals, and PCLK for the APB bus peripherals

    S3C2440系统时钟配置:

    首先配置PLL控制寄存器

    设置MPLLCON寄存器

    unsigned int FCLK;
    unsigned int HCLK;
    unsigned int PCLK;
    unsigned int UCLK;

    #define FIN  12000000

    1 void ChangeMPllValue(int mdiv,int pdiv,int sdiv)//设置FCLK的值
    2 {
    3     MPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
    4 }

    设置UPLLCON寄存器

    1 void ChangeUPllValue(int mdiv,int pdiv,int sdiv)//设置UCLK的值,给USB供节拍
    2 {
    3     UPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
    4 }

    设置时钟分频器控制寄存器CLKDIVN

     1 void ChangeClockDivider(int hdivn,int pdivn)//设置FCLK,HCLK,PCLK的时钟比例,以及摄像头时钟比例
     2 {
     3      // hdivn,pdivn FCLK:HCLK:PCLK
     4      //     0,0         1:1:1 
     5      //     0,1         1:1:2 
     6      //     1,0         1:2:2
     7      //     1,1         1:2:4
     8      //     2,0         1:4:4
     9      //     2,1         1:4:8
    10      //     3,0         1:3:3
    11      //     3,1         1:3:6
    12     CLKDIVN = (hdivn<<1) | pdivn;    
    13 
    14     if (hdivn == 2)
    15     CAMDIVN = (CAMDIVN & ~(1<<9));
    16 if (hdivn == 3) 17 CAMDIVN = (CAMDIVN & ~(1<<8));
    18 }

     计算具体的FCLK,HCLK,PCLK,UCLK的大小

     1 void CalcBusClk(void) //计算具体的FCLK,HCLK,PCLK,UCLK的大小
     2 {
     3     unsigned int val,UPLL;
     4     unsigned char m, p, s;
     5     val = MPLLCON;
     6     m = (val >> 12) & 0xff;
     7     p = (val >> 4) & 0x3f;
     8     s = val & 3;
     9     
    10     FCLK = ((m+8)*FIN*2)/((p+2)*(1<<s));
    11     
    12     val = CLKDIVN;
    13     m = (val >> 1) & 3;
    14     p = val & 1; 
    15     val = CAMDIVN;
    16     s = val >> 8;
    17     
    18     switch (m) 
    19     {
    20         case 0:
    21             HCLK = FCLK;
    22             break;
    23         case 1:
    24             HCLK = FCLK >> 1;
    25             break;
    26         case 2:
    27             if(s & 2)
    28                 HCLK = FCLK >> 3;
    29             else
    30                 HCLK = FCLK >> 2;
    31             break;
    32         case 3:
    33             if(s & 1)
    34                 HCLK = FCLK / 6;
    35             else
    36                 HCLK = FCLK / 3;
    37             break;
    38     }
    39     if(p)
    40         PCLK = HCLK >> 1;
    41     else
    42         PCLK = HCLK;
    43     
    44     val = UPLLCON;
    46     m = (val >> 12) & 0xff;
    47     p = (val >> 4) & 0x3f;
    48     s = val & 3;
    49     UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
    50     UCLK = (CLKDIVN&8)?(UPLL>>1):UPLL;
    51 }
  • 相关阅读:
    CSS3实现轮播切换效果
    angularjs directive
    angularjs 迭代器
    anjularjs 路由
    sublime text3 快捷键设置
    如何使用git 跟进项目进程
    hdu 4842(NOIP 2005 过河)之 动态规划(距离压缩)
    叠箱子问题 之 动态规划
    华为oj 之 蜂窝小区最短距离
    华为oj 之 整数分隔
  • 原文地址:https://www.cnblogs.com/zpehome/p/2824502.html
Copyright © 2011-2022 走看看