日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MPC5744P-时钟模块

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MPC5744P-时钟模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.時鐘結構圖

圖1 片內時鐘結構圖

2.時鐘分配

有三種方式可為5744提供時鐘源,分別為外部有源晶振、外部無源晶振和內部16MHz RC晶振。其中16MHz內部RC晶振一般作為PLL或外部晶振失效情況下的備用時鐘,系統復位后5744默認選擇16MHz內部RC晶振作為時鐘源。5744內含有PLL0和PLL1兩個PLL,PLL0輸出為PLL0_PHI、PLL0_PHI1,PLL1輸出為PLL1_PHI,其中PLL0_PHI1還可以作為PLL1的輸入時鐘。選擇的時鐘源經過PLL后可為系統和片內外設提供時鐘。系統和片內外設可利用對應AUX Clock Selector選擇不同的時鐘源,在選擇好時鐘源之后可根據對應的Divider分頻器來獲取不同頻率的時鐘。

3.頻率限制

5744對系統和片內外設時鐘做了限制,在設置時不應超過對應的時鐘限制值,各個模塊的最高時鐘頻率如下:

表1 系統和片內外設頻率限制表

4.時鐘選擇和分頻因子

5744利用MC_CGM模塊對系統和片內外設進行時鐘源的選擇和分頻因子的設置,主要包含圖1中的各個AUX Clock Selector和Divider。

圖2 系統和外設時鐘時鐘源選擇和分頻控制模塊

5.系統時鐘配置

1.Mode Entry Module(MC_ME)

5744可對各個模塊進行使能和失能以進行能耗管理,默認情況下一些模塊處于失能狀態,在使用該模塊時需要對其使能。5744通過Mode Entry Module(MC_ME)對各個片內外設模塊進行管理。MC_ME的模塊如下:

圖3 MC_ME模塊圖

?5744一共有RESET、TEST、SAFE、DRUN、RUN0-3、HALT0、STOP0等運行模式,其中RESET_FUNC、SAFE、 DRUN、 RUN0、 RESET_DEST模式總是使能,若使用其他模式需要實時MC_ME_ME使能。各個模式可以互相轉換,可以通過MC_ME_MODEx_MC寄存器對外設有不同的設置。在系統時鐘設置時,我們應先選擇想要的運行模式,然后設置對應的MC_ME_MODEx_MC寄存起對外設配置,然后轉換到對應的運行模式。

2.PLL配置

由圖3 MC_ME模塊圖可知外部晶振XOSC、PLL0和PLL1由MC_ME控制,PLL0、PLL1的時鐘源選擇有MC_CGM控制,則PLL配置步驟如下:

1)選擇運行模式;

2)關閉XOSC、PLLs(配置MC_ME.MODEx_MC寄存器,MODEx為1中所選的運行模式)

3)配置分頻和倍頻因子(配置PLLDIG_PLL0DV、PLLDIG_PLL1DV寄存器);

4)利用MC_CGM模塊選擇時鐘源(配置MC_CGM.ACx_SC);

5)利用MC_ME使能對應模塊(XOSC、PLLs);

6)進行模式轉換。

3.PLL參數的計算

5744對PLL的輸入輸出頻率有所限制,PLL0的輸入頻率應為8~56MHz,輸出應為4.762~625MHz;PLL1的輸入頻率應為37.5~78.125MHz,輸出應為4.764~625MHz,此外還有一個重要限制為PLL內部Fvco的頻率范圍為600~1250MHz 。

PLL0的計算公式如下:

其中fpll0_ref為PLL0所選時鐘源的時鐘頻率,fpll0_phi,fpll0_phi1分別為PLL0輸出PHI和PHI1非頻率

PLL1的計算公式如下:

其中fpll1_ref為PLL1的輸入時鐘頻率,若不使能PLLDIG_PLL1FD寄存器,默認情況下不使能,則PLL1計算公式可簡化為

fpll1_VCO = fpll1_ref? × PLL1DV[MFD]

fpll1_phi =?? fpll1_ref? ×? PLL1DV[MFD] / ( 2 * PLL1DV[RFDPHI ] )

4.示例代碼

/******************************************** 函數名 CLOCK_Config_System_180mhz* 功能 配置系統時鐘為180mhz* 輸入參數 無* 返回值 無* 示例 CLOCK_Config_System_180mhz();//配置系統時鐘為180mhz********************************************/ static void CLOCK_Config_System_180mhz() {//PLL0設置MC_ME.RUN0_MC.R&=0xFFFFFF9F; //關閉PLL0,XOSC,需以字訪問//PLL0分頻倍頻因子配置//配置Fpll0_phi=Fref*MFD/(PREDIV*RFDPHI)=40*24/(2*4)=120Mhz//配置Fpll0_phi1=Fref*MFD/(PREDIV*RFDPHI*2)=40*24/(2*8)=60MhzPLLDIG.PLL0DV.B.MFD=24; PLLDIG.PLL0DV.B.PREDIV=2;PLLDIG.PLL0DV.B.RFDPHI=4; PLLDIG.PLL0DV.B.RFDPHI1=8; MC_CGM.AC3_SC.B.SELCTL=1; //選擇XOSC作為PLL0時鐘MC_ME.RUN0_MC.R|=0x00000020; //打開XOSC,需以字訪問MC_CGM.AC4_SC.B.SELCTL=3; //選擇PLL0_PHI1作為PLL1時鐘源MC_ME.RUN0_MC.R|=0x00000040; //打開PLL0,需以字訪問//模式轉換//選擇目標運行模式為RUN0,并設置KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x40005AF0; //選擇目標運行模式為RUN0,并設置反轉KEY,該寄存器只能以字訪問 MC_ME.MCTL.R = 0x4000A50F; while(MC_ME.GS.B.S_MTRANS);while(MC_ME.GS.B.S_CURRENT_MODE!=4); //轉換到RUN0模式并等待模式轉換完成//PLL1設置MC_ME.RUN0_MC.R&=0xFFFFFF7F; //關閉PLL1/PLL1分頻倍頻因子設定//配置Fpll1_phi=Fref*MFD/(RFDPHI*2)=60*18/(2*3)=180MhzPLLDIG.PLL1DV.B.MFD=18; PLLDIG.PLL1DV.B.RFDPHI=3; //設置運行外設配置模式寄存器0,表示外設全模式運行,不同外設可選擇不同的配置寄存器//該寄存器有8個MC_ME.RUN_PC[0].R=0x000000FE; MC_ME.RUN0_MC.R|=0x00000080; //打開PLL1,需以字訪問MC_ME.RUN0_MC.R&=0xFFFFFFF0;MC_ME.RUN0_MC.R|=0x00000004; //選擇PLL1_PHI作為系統時鐘源,需以字訪問//模式轉換//選擇目標運行模式為RUN0,并設置KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x40005AF0 ;//選擇目標運行模式為RUN0,并設置反轉KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x4000A50F;while(MC_ME.GS.B.S_MTRANS);while(MC_ME.GS.B.S_CURRENT_MODE!=4); //轉換到RUN0模式并等待模式轉換完成//等待XOSC、PLL0、PLL1穩定while((!MC_ME.GS.B.S_XOSC)||(!MC_ME.GS.B.S_PLL0)||(!MC_ME.GS.B.S_PLL1)); }

6.片內外設時鐘配置

在系統時鐘配置完成后,需要進行片內外設時鐘的配置,片內外設的時鐘結構如下圖:

由于大部分外設掛在外設橋上,所以通過配置外設橋即可。ADC模塊除了需要配置外設橋,還需要配置單獨ADC_CLK時鐘。

在系統時鐘配置完成的情況下,外設時鐘只需要通過選擇時鐘源,設置分配因子即可獲得所需頻率的時鐘,則配置步驟如下:

1)通過MC_CGM.ACx_DCx使能分頻因子并設置分頻因子數值。

2)通過MC_CGM.ACx_SCx_選擇所采用的時鐘源。

所需要的Aux Clock Selector和Aux Clock Divider可根據所配置的外設在圖1查得。

1.外設橋時鐘配置

由于外設橋時鐘源直接選為系統時鐘,故不需要進行時鐘源的選擇,直接對分頻寄存器進行操作即可,代碼如下:

*************************************** 函數名 CLOCK_Config_Peripheral_Bridge_45mhz* 功能 配置外設橋時鐘頻率為45mhz* 輸入參數 無* 返回值 無* 示例 CLOCK_Config_Peripheral_Bridge_45mhz();//配置外設橋頻率為45mhz*/ static void CLOCK_Config_Peripheral_Bridge_45mhz() {//該寄存器只能以字訪問,設置PA_CLK=PB_CLK=SYS_CLK/(3+1)=180mhz/4=45mhz//PB_CLK,PA_CLK頻率最高為45mhzMC_CGM.SC_DC0.R=0x80030000; }

2.ADC_CLK的配置

ADC模塊除一般外設橋時鐘外,還需配置ADC_CLK時鐘,代碼如下:

/*************************************** 函數名 CLOCK_Config_ADC_60mhz* 功能 配置ADC模塊時鐘頻率為60mhz* 輸入參數 無* 返回值 無* 示例 CLOCK_Config_ADC_60mhz();//配置ADC模塊時鐘頻率為60mhz*/ static void CLOCK_Config_ADC_60mhz() {//使能DC0,DIV=1,CLK_ADC=CLK_PLL0_PHI/(1+1)=120Mhz/2=60mhzMC_CGM.AC0_DC2.R=0x80010000; MC_CGM.AC0_SC.B.SELCTL=2; //選擇PLL0 PHI作為時鐘源 }

?

總結

以上是生活随笔為你收集整理的MPC5744P-时钟模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。