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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MPC5744P-时钟模块

發(fā)布時(shí)間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MPC5744P-时钟模块 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.時(shí)鐘結(jié)構(gòu)圖

圖1 片內(nèi)時(shí)鐘結(jié)構(gòu)圖

2.時(shí)鐘分配

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

3.頻率限制

5744對(duì)系統(tǒng)和片內(nèi)外設(shè)時(shí)鐘做了限制,在設(shè)置時(shí)不應(yīng)超過對(duì)應(yīng)的時(shí)鐘限制值,各個(gè)模塊的最高時(shí)鐘頻率如下:

表1 系統(tǒng)和片內(nèi)外設(shè)頻率限制表

4.時(shí)鐘選擇和分頻因子

5744利用MC_CGM模塊對(duì)系統(tǒng)和片內(nèi)外設(shè)進(jìn)行時(shí)鐘源的選擇和分頻因子的設(shè)置,主要包含圖1中的各個(gè)AUX Clock Selector和Divider。

圖2 系統(tǒng)和外設(shè)時(shí)鐘時(shí)鐘源選擇和分頻控制模塊

5.系統(tǒng)時(shí)鐘配置

1.Mode Entry Module(MC_ME)

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

圖3 MC_ME模塊圖

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

2.PLL配置

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

1)選擇運(yùn)行模式;

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

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

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

5)利用MC_ME使能對(duì)應(yīng)模塊(XOSC、PLLs);

6)進(jìn)行模式轉(zhuǎn)換。

3.PLL參數(shù)的計(jì)算

5744對(duì)PLL的輸入輸出頻率有所限制,PLL0的輸入頻率應(yīng)為8~56MHz,輸出應(yīng)為4.762~625MHz;PLL1的輸入頻率應(yīng)為37.5~78.125MHz,輸出應(yīng)為4.764~625MHz,此外還有一個(gè)重要限制為PLL內(nèi)部Fvco的頻率范圍為600~1250MHz 。

PLL0的計(jì)算公式如下:

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

PLL1的計(jì)算公式如下:

其中fpll1_ref為PLL1的輸入時(shí)鐘頻率,若不使能PLLDIG_PLL1FD寄存器,默認(rèn)情況下不使能,則PLL1計(jì)算公式可簡(jiǎn)化為

fpll1_VCO = fpll1_ref? × PLL1DV[MFD]

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

4.示例代碼

/******************************************** 函數(shù)名 CLOCK_Config_System_180mhz* 功能 配置系統(tǒng)時(shí)鐘為180mhz* 輸入?yún)?shù) 無* 返回值 無* 示例 CLOCK_Config_System_180mhz();//配置系統(tǒng)時(shí)鐘為180mhz********************************************/ static void CLOCK_Config_System_180mhz() {//PLL0設(shè)置MC_ME.RUN0_MC.R&=0xFFFFFF9F; //關(guān)閉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時(shí)鐘MC_ME.RUN0_MC.R|=0x00000020; //打開XOSC,需以字訪問MC_CGM.AC4_SC.B.SELCTL=3; //選擇PLL0_PHI1作為PLL1時(shí)鐘源MC_ME.RUN0_MC.R|=0x00000040; //打開PLL0,需以字訪問//模式轉(zhuǎn)換//選擇目標(biāo)運(yùn)行模式為RUN0,并設(shè)置KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x40005AF0; //選擇目標(biāo)運(yùn)行模式為RUN0,并設(shè)置反轉(zhuǎn)KEY,該寄存器只能以字訪問 MC_ME.MCTL.R = 0x4000A50F; while(MC_ME.GS.B.S_MTRANS);while(MC_ME.GS.B.S_CURRENT_MODE!=4); //轉(zhuǎn)換到RUN0模式并等待模式轉(zhuǎn)換完成//PLL1設(shè)置MC_ME.RUN0_MC.R&=0xFFFFFF7F; //關(guān)閉PLL1/PLL1分頻倍頻因子設(shè)定//配置Fpll1_phi=Fref*MFD/(RFDPHI*2)=60*18/(2*3)=180MhzPLLDIG.PLL1DV.B.MFD=18; PLLDIG.PLL1DV.B.RFDPHI=3; //設(shè)置運(yùn)行外設(shè)配置模式寄存器0,表示外設(shè)全模式運(yùn)行,不同外設(shè)可選擇不同的配置寄存器//該寄存器有8個(gè)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作為系統(tǒng)時(shí)鐘源,需以字訪問//模式轉(zhuǎn)換//選擇目標(biāo)運(yùn)行模式為RUN0,并設(shè)置KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x40005AF0 ;//選擇目標(biāo)運(yùn)行模式為RUN0,并設(shè)置反轉(zhuǎn)KEY,該寄存器只能以字訪問MC_ME.MCTL.R = 0x4000A50F;while(MC_ME.GS.B.S_MTRANS);while(MC_ME.GS.B.S_CURRENT_MODE!=4); //轉(zhuǎn)換到RUN0模式并等待模式轉(zhuǎn)換完成//等待XOSC、PLL0、PLL1穩(wěn)定while((!MC_ME.GS.B.S_XOSC)||(!MC_ME.GS.B.S_PLL0)||(!MC_ME.GS.B.S_PLL1)); }

6.片內(nèi)外設(shè)時(shí)鐘配置

在系統(tǒng)時(shí)鐘配置完成后,需要進(jìn)行片內(nèi)外設(shè)時(shí)鐘的配置,片內(nèi)外設(shè)的時(shí)鐘結(jié)構(gòu)如下圖:

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

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

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

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

所需要的Aux Clock Selector和Aux Clock Divider可根據(jù)所配置的外設(shè)在圖1查得。

1.外設(shè)橋時(shí)鐘配置

由于外設(shè)橋時(shí)鐘源直接選為系統(tǒng)時(shí)鐘,故不需要進(jìn)行時(shí)鐘源的選擇,直接對(duì)分頻寄存器進(jìn)行操作即可,代碼如下:

*************************************** 函數(shù)名 CLOCK_Config_Peripheral_Bridge_45mhz* 功能 配置外設(shè)橋時(shí)鐘頻率為45mhz* 輸入?yún)?shù) 無* 返回值 無* 示例 CLOCK_Config_Peripheral_Bridge_45mhz();//配置外設(shè)橋頻率為45mhz*/ static void CLOCK_Config_Peripheral_Bridge_45mhz() {//該寄存器只能以字訪問,設(shè)置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模塊除一般外設(shè)橋時(shí)鐘外,還需配置ADC_CLK時(shí)鐘,代碼如下:

/*************************************** 函數(shù)名 CLOCK_Config_ADC_60mhz* 功能 配置ADC模塊時(shí)鐘頻率為60mhz* 輸入?yún)?shù) 無* 返回值 無* 示例 CLOCK_Config_ADC_60mhz();//配置ADC模塊時(shí)鐘頻率為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作為時(shí)鐘源 }

?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。