s3c2440a时钟模块

来源:互联网 发布:字符串数字能给数组吗 编辑:程序博客网 时间:2024/06/07 06:00

     s3c2440a包含两个时钟模块,  mpll和upll,mpll提供FCLK,HCLK和PCLK,upll是一个专用于USB模块。是时钟频率Fin经过pll电路提升频率后的两个时钟频率,

int main(int argc,char **argv)
{
 int i;
 uchar key;
 uint mpll_val=0;
 i=2;
 switch(i){
 case 0:  //200
  key=12;
  mpll_val=(92<<12)|(4<<4)|(1);  //mpll=200MHz的计算方法:mpll二进制值为0101 1100 0000 0100 0001即MDIV=0x92,PDIV=4,SDIV=1
                                                         //mpll=(2*m*Fin)/(p*2s) m=MDIV+8,p=PDIV+2,s=SDIV

                                                       //m=100,p=6,s=1,Fin默认为12MHz,所以mpll=(2*100*12)/(6*2)=200MHz
  break;
 case 1:
  key=13;//300
  mpll_val=(67<<12)|(1<<4)|(1);
  break;
 case 2://400
  key=14;
  mpll_val=(92<<12)|(1<<4)|(1);
  break;
 case 3:
  key=14;
  mpll_val=(92<<12)|(1<<4)|(1);
  break;
 default:
  key=14;
  mpll_val=(92<<12)|(1<<4)|(1);
  break;

     再cpu刚上电的时候不存在mpll和upll,当pll电路工作了一个lock time之后才产生,上电之初,FCLK=Fin,lock time之后,FCLK=mpll