ARM 各频率计算方法

来源:互联网 发布:数据访问框架 编辑:程序博客网 时间:2024/05/24 02:35
nPLLVALUE = s2450CLK->MPLLCON ;
nCLKDIV = s2450CLK->CLKDIV0 ;




nM_DIV = ((nPLLVALUE >> 14) & 0x3ff);
nP_DIV =((nPLLVALUE >> 5) & 0x3F);
nS_DIV =((nPLLVALUE >> 0) & 0x7);




nARMDIVN=((nCLKDIV >> 9) & 0xf);
nARMDIV = (nARMDIVN == 0 ? 1 : (nARMDIVN == 1 ? 2 : (nARMDIVN == 2 ? 3 : (nARMDIVN == 3 ? 4 :(nARMDIVN == 5 ? 6 :(nARMDIVN == 7 ? 8 : (nARMDIVN == 11 ? 12 : (nARMDIVN == 15 ? 16 : 1)  ) ) ) ))));
                           


nPREDIV         =        ((nCLKDIV >> 4) & 0x3);
nHCLKDIV       =         ((nCLKDIV>>0) & 0x3);
nPCLKDIV        =        ((nCLKDIV>>2) & 0x1);
nHALFHCLK      =      ((nCLKDIV>>3) & 0x1);


nS3C2450_FOUT    =       ((nM_DIV) * (12000000L / (nP_DIV) / (1<<nS_DIV )));
nS3C2450_FCLK     =   (nS3C2450_FOUT  / nARMDIV );
nS3C2450_HCLK    =    (nS3C2450_FOUT / (nPREDIV+1) / (nHCLKDIV+1));   // divisor 4

nS3C2450_PCLK     =   (nS3C2450_HCLK / (nPCLKDIV+1));  // divisor 2


原创粉丝点击