新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM9中計算MPLL的方法:

        ARM9中計算MPLL的方法:

        作者: 時間:2016-11-11 來源:網絡 收藏
        測試程序400M的算法:

        i = 2 ;//dont use 100M!
        switch ( i ) {
        case 0://200
        key = 12;
        mpll_val = (92<<12)|(4<<4)|(1);
        break;
        case 1://300
        key = 13;
        mpll_val = (67<<12)|(1<<4)|(1);
        break;
        case 2://400
        key = 14;
        mpll_val = (92<<12)|(1<<4)|(1);
        break;
        case 3://440!!!
        key = 14;
        mpll_val = (102<<12)|(1<<4)|(1);
        break;
        default:
        key = 14;
        mpll_val = (92<<12)|(1<<4)|(1);
        break;
        }

        //init FCLK=400M, so change MPLL first
        ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);

        本文引用地址:http://www.104case.com/article/201611/316908.htm

        逐行計算:

        1、mpll_val = (92<<12)|(1<<4)|(1);


        算得mpll_val的二進制值為:0101 1100 0000 0001 0001

        注意上式中92為十進制92,其十六進制為:0x5C;

        2、代入ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
        得ChangeMPllValue(0x5C,1,1);

        3、ChangeMPllValue()函數原型為:

        void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
        {
        rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
        }

        將值代入得rMPLLCON二進制值為:0101 1100 0000 0001 0001.

        4、S3C2440的Datasheet:

        PLLCON Bit Description Initial State
        MDIV [19:12] Main divider control 0x96 / 0x4d
        PDIV[9:4]Pre-divider control 0x03 / 0x03
        SDIV[1:0] Post divider control0x0 / 0x0

        根據上表得到MDIV=92 PDIV=1 SDIV=1

        Datasheet:

        MPLL Control Register
        Mpll = (2 * m * Fin) / (p * 2S)
        m = (MDIV + 8), p = (PDIV + 2), s = SDIV

        所以:m = 92+8=100, p = 1+2 = 3 , s = 1 , Fin為默認輸入的時鐘頻率12MHz.

        Mpll = (2*100*12M)/(3*2) = 400M.



        關鍵詞: ARM9中計算MPL

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 香格里拉县| 海安县| 荥阳市| 崇明县| 嘉祥县| 遵义县| 久治县| 班戈县| 鲜城| 衡南县| 黄石市| 加查县| 红原县| 临漳县| 民和| 阿瓦提县| 景宁| 兴仁县| 兴义市| 南丹县| 晋江市| 金阳县| 广元市| 砀山县| 淳化县| 秭归县| 平定县| 泸西县| 佛冈县| 静海县| 武鸣县| 肥城市| 泾川县| 扬州市| 克拉玛依市| 民县| 剑川县| 新巴尔虎左旗| 读书| 浦东新区| 龙川县|