|  | 
 
| 今天用TQ2440做流水灯裸机实验,遇到MPLL寄存器配置问题,现总结如下,如有错误,欢迎指正! 
 具体计算步骤:
 
 1. U32 mpll_val=0;
 
 mpll_val = (92<<12)|(1<<4)|(1);
 
 算得mpll_val的二进制:0101 1100 0000 0001 0001
 
 注意:(92<<12)中的92为十进制数,转换为二进制为0x5C。
 2. ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
 
 代入1算得:ChangeMPllValue(0x5C,1,1);
 
 3. 找到ChangeMPllValue子函数
 
 void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
 {
 
 rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
 }
 
 4. 调用子函数,得到rMPLLCON二进制为:0101 1100 0000 0001 0001
 
 5. 根据S3C2440A官方datasheet:
 
 PLLCON          Bit                        Description
 
 MDIV         [19:12]           Main divider control
 
 PDIV          [9:4]               Pre-divider control
 
 SDIV          [1;0]               Post divider control
 
 以及MPLL Control Register
 
 Mpll=(2*m*Fin)/(p*2s)
 
 m=(MDIV+8)   p=(PDIV+2)   s=SDIV
 
 因rMPLLCON二进制为:0101 1100 0000 0001 0001,所以
 
 m=(MDIV+8)=([19:12]+8)=92+8=100
 
 p=(PDIV+2)=([9:4]+2)=1+2=3
 
 s=SDIV=[1:0]=1
 
 Mpll=(2*m*Fin)/(p*2s)=(2*100*12)/(3*2)=400M
 | 
 |