<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LPC1700系列Cortex-M3內(nèi)部時(shí)鐘系統(tǒng)

          LPC1700系列Cortex-M3內(nèi)部時(shí)鐘系統(tǒng)

          作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201611/316878.htm

          1、縮略語(yǔ)

          osc:oscillator,意為振蕩器,晶振。是一種能量轉(zhuǎn)換裝置——將直流電能轉(zhuǎn)換為具有一定頻率的交流電能。其構(gòu)成的電路叫振蕩電路。

          osc_clk:外部晶體振蕩器

          rtc_clk:real time clock

          2. 振蕩器

          2.1 內(nèi)部RC振蕩器(IRC)

          內(nèi)部RC振蕩器(Inner RC),可用作WatchDog的時(shí)鐘源,也可用作驅(qū)動(dòng)PLL0和CPU的時(shí)鐘源。IRC的精度達(dá)不到USB借口的時(shí)間基準(zhǔn)精度要求(在使用LPC1700的USB功能時(shí)要求使用精度更高的外部晶體振蕩器作為系統(tǒng)時(shí)鐘源)。除此以外,如果CAN波特率高于100Kbit/s,則IRC也不能應(yīng)用于CAN1/2模塊。IRC的標(biāo)稱頻率為4MHz。

          在上電或任何片上復(fù)位時(shí),LPC1700系列Cortex-M3使用IRC作為時(shí)鐘源。此后,軟件可將其切換為另一種可用的時(shí)鐘源。

          2.2 主振蕩器(osc)

          主振蕩器(外部晶體振蕩器)可作為CPU的時(shí)鐘源(不管是否使用PLL0)。主振蕩器工作在1MHz~25MHz下。該頻率可通過(guò)主PLL(PLL0)來(lái)提高至CPU操作頻率的最大值。主振蕩器的輸出稱為OSC_CLK。 PLLCLKIN選擇用作PLL0輸入時(shí)鐘,周立功的書(shū)里將Cortex-M3處理器時(shí)鐘頻率稱為CCLK。除非PLL0有效且已連接,否則PLLCLKIN和CCLK的頻率相同。

          LPC1700系列Cortex-M3的主振蕩器可工作在兩種模式下:從屬模式、主振蕩模式。

          在叢書(shū)模式下,輸入時(shí)鐘信號(hào)應(yīng)該與一個(gè)100pF的電容相連,其幅值為200mVrms到1000mVrms,相當(dāng)于方波信號(hào)在280mV到1.4V之間浮動(dòng)。在這種配置下XTAL2引腳可以不連接。

          在主振蕩模式下,由于片內(nèi)集成了反饋電阻,只需在外部連接一個(gè)晶體和電容Cx1, Cx2就可形成基本模式的振蕩電路(基本頻率用L、Cl和Rs來(lái)表示。

          由于芯片操作總是從內(nèi)部RC振蕩器開(kāi)始,因此主振蕩器只能由軟件請(qǐng)求來(lái)啟動(dòng)。

          2.3 RTC振蕩器

          RTC振蕩器可提供1Hz到32KHz的RTC時(shí)鐘輸出,可用作PLL0、CPU和看門(mén)狗定時(shí)器的時(shí)鐘源。


          3. 多路選擇輸入時(shí)鐘源

          用來(lái)驅(qū)動(dòng)PLL0、CPU和片內(nèi)外圍設(shè)備的時(shí)鐘源包括主振蕩器、RTC振蕩器和內(nèi)部RC振蕩器。

          只有在PLL0斷開(kāi)連接時(shí),才可更換輸入時(shí)鐘源。

          3.1 PLL時(shí)鐘源選擇寄存器(CLKSRCSEL - 0x400F C10C)

          1:0 CLKSRC {00 使用內(nèi)部RC振蕩器(默認(rèn)值); 01選擇主振蕩器; 10選擇RTC振蕩器; 11 保留值}, 7:2{0保留值}

          4. 多路選擇輸出外部時(shí)鐘

          4.1 輸出外部時(shí)鐘源選擇

          為了便于系統(tǒng)測(cè)試和開(kāi)發(fā),LPC1700系列Cortex-M3任何一個(gè)內(nèi)部時(shí)鐘均可作為輸出外部時(shí)鐘源,引出CLKOUT(P1.27引腳)功能。

          通過(guò)CLKOUT可觀察到的輸出外部時(shí)鐘源有CPU時(shí)鐘(cclk)[0000]、主振蕩器時(shí)鐘(osc_clk)[0001]、內(nèi)部RC振蕩器時(shí)鐘(irc_osc)[0010]、USB時(shí)鐘(usb_clk)[0011]和RTC時(shí)鐘(rtc_clk)[0100]

          4.2 時(shí)鐘輸出配置寄存器(CLKOUTCFG - 0x400F C1C8)

          CLKOUTCFG寄存器可以選擇在CLKOUT引腳上作為輸出的內(nèi)部時(shí)鐘,并允許通過(guò)一個(gè)整數(shù)值(1~16)對(duì)時(shí)鐘進(jìn)行分頻。對(duì)于大多數(shù)時(shí)鐘源可進(jìn)行1分頻。當(dāng)選擇CPU時(shí)鐘且該時(shí)鐘高于50MHz時(shí),輸出必須經(jīng)過(guò)分頻,使得頻率在適當(dāng)?shù)姆秶鷥?nèi)。

          5. PLL0工作原理與使用

          LPC1700系列Cortex-M3內(nèi)部具有兩個(gè)PLL模塊,分別為PLL0和PLL1。其中PLL0支持32KHz~50MHz范圍內(nèi)的輸入時(shí)鐘頻率,而PLL1僅支持10MHz~25MHz范圍內(nèi)的輸入時(shí)鐘頻率。

          5.1 PLL0工作原理

          PLL0時(shí)鐘源的選擇在CLKSRCSEL寄存器中設(shè)置,PLL0將輸入時(shí)鐘升頻,然后再分頻以提供CPU及芯片外設(shè)使用的實(shí)際時(shí)鐘。PLL0可產(chǎn)生的時(shí)鐘頻率高達(dá)100MHz,是CPU所允許的最大值。

          PLL0接受的輸入時(shí)鐘頻率范圍為32KHz~50MHz,PLL0的輸出時(shí)鐘信號(hào)就是CCO(電流控制振蕩器)的輸出,CCO的振蕩頻率由“相位頻率檢測(cè)”部件控制(內(nèi)部結(jié)構(gòu)可以忽略),公式為F(PLLin) / N = F(cco) / 2M, 即Fcco = Fpllin * 2M / N

          通常CCO的輸出頻率是有限的,超出這個(gè)范圍則無(wú)法輸出預(yù)期的時(shí)鐘信號(hào)。LPC1700系列Cortex-M3內(nèi)部的CCO可工作在275MHz ~ 550MHz,其中,最佳頻率點(diǎn)為288MHz。

          其實(shí),PLL0輸出還有其他的分頻器,使其頻率下降到CPU、USB和其他外設(shè)所需要的值。詳見(jiàn)“時(shí)鐘分頻器”。

          由于CCO(流控振蕩器)與“相位頻率檢測(cè)”部件的工作原理需要一定時(shí)間才能穩(wěn)定,因此需要查詢PLL0STAT是否就緒再來(lái)啟用。

          由于PLL0作為時(shí)鐘系統(tǒng)中的一個(gè)重要模塊,為避免程序?qū)LL0正在使用的相關(guān)參數(shù)意外修改,芯片廠商從硬件上提供了保護(hù),PLL0FEED(PLL0饋送寄存器),該寄存器使能PLL0CON、PLL0CFG,將前兩個(gè)配置信息載入到實(shí)際影響PLL0操作的映像寄存器中。

          5.2 PLL0寄存器描述

          PLL0CON, PLL0CFG, PLL0STAT, PLL0FEED

          5.2.1 PLL0控制寄存器(PLL0CON)

          [0] 使能PLL0,允許PLL0嘗試鎖定倍頻器和分頻器的當(dāng)前設(shè)定值

          [1] 連接PLL0,使PLL0輸出作為處理器和大多數(shù)片內(nèi)外設(shè)的時(shí)鐘源

          對(duì)于PLL0CON寄存器的更改,只有在執(zhí)行了正確的PLL0饋送序列后才生效

          5.2.2 PLL0配置寄存器(PLL0CFG)
          [14:0] MSEL0, PLL0倍頻器值; [15] 保留;[23:16] NSEL0, PLL0預(yù)分頻器值; [31:24] 保留

          5.2.3 PLL0狀態(tài)寄存器(PLL0STAT)

          PLL0STAT寄存器提供了當(dāng)前生效的PLL0工作參數(shù)和狀態(tài)。

          [14:0] MSEL0,保存的值是M - 1; [15] 保留

          [23:16] NSEL0,N - 1; [24] PLLE0,使能位; [25] PLLC0,連接位;

          [26] PLOCK0,反應(yīng)PLL0的鎖定狀態(tài)。 [31:27] 保留

          5.2.4 PLL0饋送寄存器(PLL0FEED)

          使用順序:PLL0CFG = ***; PLL0FEED = 0xAA; PLL0FEED = 0x55;

          5.3 PLL0和掉電模式

          掉電模式會(huì)自動(dòng)關(guān)閉并斷開(kāi)PLL0。從掉電模式喚醒不會(huì)自動(dòng)恢復(fù)原先的PLL0設(shè)置參數(shù),必須在軟件中恢復(fù)PLL0。通常,可以在中斷服務(wù)程序的開(kāi)始激活PLL0、等待鎖定并連接PLL0,該中斷服務(wù)程序也可以在掉電喚醒時(shí)調(diào)用。

          5.4 PLL0頻率計(jì)算中的參數(shù)

          Fin, Fcco, N, M

          Fcco = Fin x 2M / N 【注意:PLL0輸入和設(shè)定必須滿足下面的條件,F(xiàn)in的范圍32KHz ~ 50MHz, Fcoo的范圍 275~550MHz】

          在較高的振蕩器頻率下(超過(guò)1MHz),允許M值的范圍從6~512,這是支持主振蕩器和IRC操作的整個(gè)M值范圍。

          對(duì)于較低頻率,特別是在RTC振蕩器用來(lái)計(jì)時(shí)PLL0時(shí),選擇了65個(gè)M值用于支持波特率產(chǎn)生和CAN/USB操作

          5.5 確定PLL0頻率參數(shù)的過(guò)程

          (1)確定是否需要使用USB以及是否由PLL0驅(qū)動(dòng)。USB需要一個(gè)占空比為50%的48MHz時(shí)鐘源,也就是說(shuō)Fcco必須是48MHz的偶數(shù)整數(shù)倍(即96MHz的整數(shù)倍),此時(shí)誤差范圍極??;

          (2)選擇所需的處理器頻率(Fcclk)。這取決于處理器的吞吐量要求,外設(shè)可在較低時(shí)鐘頻率下運(yùn)行,這個(gè)頻率可低于處理器的頻率(較低的Fcco值,處理器功耗也更低)。找出與所需Fcclk的倍數(shù)接近的一個(gè)Fcco值,再與USB所要求的Fcco值相比較;

          (3)選擇PLL0輸入頻率(Fin)的值。這可從主振蕩器、RTC振蕩器或片內(nèi)RC振蕩器中選擇。使用USB功能時(shí),需選擇主振蕩器;

          (4)計(jì)算M和N的值來(lái)產(chǎn)生十分精確的Fcco頻率。

          總的來(lái)說(shuō),建議使用一個(gè)較小的N值,這樣可以降低CCO的倍頻數(shù)。

          5.6 PLL0頻率計(jì)算舉例

          例1:在應(yīng)用中使用USB接口

          a. 在應(yīng)用中使用USB接口并且由PLL0驅(qū)動(dòng)。在PLL0操作范圍(275MHz ~ 550MHz)內(nèi),96MHz的最小整數(shù)倍頻值是288MHz(越小則功耗越低);

          b. 預(yù)期的CPU速率為60MHz;

          c. 使用外部4MHz晶振或內(nèi)部4MHz作為系統(tǒng)時(shí)鐘源。 計(jì)算 M = (Fcco * N ) / (2 * Fin)

          d. 為了使PLL0的倍頻值最小,可選擇N=1。因此M = 288 * 10^6 * 1 / (2 * 4 * 10^) = 36

          例2:在應(yīng)用中不適用USB接口

          a. 預(yù)期的Fcclk為72MHz;

          b. 使用32.768KHz RTC時(shí)鐘源作為系統(tǒng)時(shí)鐘源。

          c.要產(chǎn)生所需的Fcclk,而在PLL操作范圍內(nèi),最小的Fcco為288MHz(4*72MHz),此時(shí),我們令N=1,以獲得Fcco的最小倍頻值。M=288*10^6/(2*32768)=4394.53125。我們?nèi)〔煌腘值,得到M值不同,且Fcco可以算出幾個(gè)誤差,求得最接近的M=8789, N=2

          5.7 PLL0設(shè)置步驟

          要對(duì)PLL0進(jìn)行正確初始化,須注意下列步驟:

          (1) 如果PLL0已連接,則用一個(gè)饋送序列斷開(kāi)與PLL0的連接;

          (2) 用一個(gè)饋送序列禁止PLL0;

          (3) 如果需要,可在沒(méi)有PLL0的情況下改變CPU時(shí)鐘分頻器的設(shè)置以加速操作;

          (4) 如果需要,可操作“時(shí)鐘源選擇控制寄存器”以改變系統(tǒng)時(shí)鐘源;

          (5) 寫(xiě)PLL0CFG并用一個(gè)饋送序列使其有效。PLL0CFG只能在PLL0被禁止時(shí)更新;

          (6) 用一個(gè)饋送序列使能PLL0;

          (7) 改變CPU時(shí)鐘分頻器設(shè)置,使之與PLL0一起操作;

          注意:在連接PLL0之前完成這個(gè)操作。

          (8) 通過(guò)監(jiān)控PLL0STAT寄存器的PLOCK位0,或者使用PLL0鎖定中斷來(lái)等待PLL0實(shí)現(xiàn)鎖定。此外,當(dāng)使用低頻時(shí)鐘作為PLL0的輸入時(shí)(也就是32KHz時(shí)),需要等待一個(gè)固定的時(shí)間。當(dāng)PLL參考頻率Fref(=Fin/N)少于100KHz或大于20MHz時(shí),PLOCK0的值可能不穩(wěn)定。在這些情況下,啟動(dòng)PLL0后等待一段時(shí)間即可。當(dāng)Fref大于400KHz時(shí),這個(gè)時(shí)間為500us;當(dāng)Fref少于400KHz時(shí),這個(gè)時(shí)間為200/Fref秒;

          (9) 用一個(gè)饋送序列連接PLL0。

          注意:不要合并上面的任何一個(gè)步驟。例如,不能用相同的饋送序列同時(shí)更新PLL0CFG和使能PLL0

          5.8 PLL0和啟動(dòng)/引導(dǎo)代碼的相互作用

          當(dāng)在用戶Flash中無(wú)有效代碼(由校驗(yàn)和字決定)或在啟動(dòng)時(shí)拉低ISP使能引腳(P2.10)時(shí),芯片將進(jìn)入ISP模式,并且引導(dǎo)代碼將用IRC設(shè)置PLL0。因此,當(dāng)用戶啟動(dòng)JTAG來(lái)調(diào)試用戶代碼時(shí),用戶代碼不能認(rèn)為PLL0被禁止。在用戶啟動(dòng)代碼中必須對(duì)PLL0進(jìn)行重新設(shè)置。

          6. PLL1工作原理與使用

          6.1 PLL1工作原理

          PLL1僅接受主振蕩器的時(shí)鐘輸入,并且為USB子系統(tǒng)提供一個(gè)固定的48MHz時(shí)鐘。除了從PLL0產(chǎn)生USB時(shí)鐘外,這是產(chǎn)生USB時(shí)鐘的另一種選擇。

          PLL1在復(fù)位時(shí)禁止和掉電。如果PLL1保持禁止,那么可以由PLL0提供USB時(shí)鐘。

          PLL1僅支持從10MHz到25MHz范圍內(nèi)的輸入時(shí)鐘頻率。倍頻值M可以是1~32的整數(shù)值(對(duì)于USB,倍頻值不能高于4)。Fcco的操作范圍從156MHz到320MHz,輸出分頻器P可設(shè)為2、4、8、16分頻來(lái)產(chǎn)生輸出時(shí)鐘。

          6.2 PLL1的寄存器描述(與PLL0的寄存器基本相同)

          7. 時(shí)鐘分頻器

          7.1 CPU時(shí)鐘配置寄存器(CCLKCFG)

          LPC1700系列Cortex-M3 CPU的時(shí)鐘頻率最大值為100MHz??梢赃x用適當(dāng)?shù)姆诸l器值CCLKSEL來(lái)降低CPU的操作頻率,以達(dá)到暫時(shí)節(jié)省功耗無(wú)需關(guān)閉PLL0的目的。

          7.2 USB時(shí)鐘配置寄存器(USBCLKCFG)

          注意:該寄存器僅在PLL1禁止時(shí)使用。如果PLL1使能,則其輸出自動(dòng)使用PLL1作USB時(shí)鐘源,且必須配置其為USB子系統(tǒng)提供準(zhǔn)確的48MHz時(shí)鐘。

          USBCLKCFG寄存器控制對(duì)PLL0輸出時(shí)鐘的分頻,然后提供給USB子系統(tǒng)使用。操作示例:USBCLKCFG = (Fcco / Fusbclk - 1)

          7.3 IRC調(diào)整寄存器(IRCTRIM),該寄存器用于調(diào)整片內(nèi)4MHz振蕩器。

          7.4 外設(shè)時(shí)鐘選擇寄存器(PCLKSEL0,PCLKSEL1),每個(gè)外設(shè)都有各自獨(dú)立的分頻器,兩位,可表示1、1/2、1/4、1/8倍的CCLK



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();