0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LPC1754內(nèi)部PLL0原理及應(yīng)用設(shè)計詳解

UtFs_Zlgmcu7890 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-10-19 06:24 ? 次閱讀

LPC175x作為NXP公司主推的cortex-M3內(nèi)核芯片,廣泛應(yīng)用于各工控、電子計量、報警系統(tǒng)等領(lǐng)域,無論何種應(yīng)用,根據(jù)實際需求選擇合適的時鐘源并配置合理的系統(tǒng)時鐘頻率都是必不可少的。

振蕩器

以EasyARM-1754M3開發(fā)板為例,LPC1754芯片外部晶體振蕩器包含兩個,一個頻率為12MHz外部高速晶振和一個頻率為32.768KHz的外部低速晶振,兩個都可以使用軟件設(shè)置選用或不選用。此外LPC1754內(nèi)部也包含三個獨立的振蕩器,他們分別是內(nèi)部主振蕩器,內(nèi)部RC振蕩器和內(nèi)部RTC振蕩器。實際應(yīng)用當(dāng)中常用的振蕩器是外部高速晶體振蕩器,和外部低速晶體振蕩器。

LPC1754內(nèi)部PLL0原理簡介

PLL0包含多個寄存器,其中PLL0時鐘源的選擇可在CLKSRCSEL寄存器中設(shè)置,PLL0將輸入時鐘進(jìn)行倍頻,然后再分頻為CPU及芯片外設(shè)提供實時時鐘信號。PLL0可產(chǎn)生的時鐘頻率最高可達(dá)100MHz,是CPU所允許的最大值。

PLL0內(nèi)部結(jié)構(gòu)可表示為下圖,PLL0的輸出時鐘信號即為pllclk,后經(jīng)過CPU時鐘分頻器的分頻,產(chǎn)生系統(tǒng)時鐘,系統(tǒng)時鐘再進(jìn)入外設(shè)時鐘分頻器后輸出多路的外設(shè)時鐘。

應(yīng)用舉例

EasyARM-1754M3開發(fā)板配套的所有例程使用統(tǒng)一的系統(tǒng)初始化函數(shù)SystemInit()將系統(tǒng)時鐘配置為96MHz,外設(shè)時鐘配置為默認(rèn)值24MHz。用戶可在對此函數(shù)有一定理解的條件下,根據(jù)自身實際需求,對參數(shù)進(jìn)行修改,可修改項一般包含時鐘源、倍頻系數(shù)、分配系數(shù)三個重要參數(shù),系統(tǒng)初始化函數(shù)當(dāng)中的PLL0配置部分如下程序清單所示:

#if (CLOCK_SETUP) /* Clock Setup */

LPC_SC->SCS = SCS_Val;

if (SCS_Val & (1 << 5)) {????????????????????????????? ?????/* If Main Oscillator is enabled? */

while ((LPC_SC->SCS & (1<<6)) == 0);???????????? ????????/* Wait for Oscillator to be ready*/

}

LPC_SC->CCLKCFG = CCLKCFG_Val; /* 系統(tǒng)時鐘分頻值,CCLKCFG_Val值可改 */

LPC_SC->PCLKSEL0 = PCLKSEL0_Val; /* Peripheral Clock Selection */

LPC_SC->PCLKSEL1 = PCLKSEL1_Val;

LPC_SC->CLKSRCSEL = CLKSRCSEL_Val; /* 選取時鐘源,CLKSRCSEL_Val值可改 */

#if (PLL0_SETUP)

LPC_SC->PLL0CFG = PLL0CFG_Val; /*PLL0倍頻值,PLL0CFG_Val值可改 */

LPC_SC->PLL0CON = 0x01; /* PLL0 Enable */

LPC_SC->PLL0FEED = 0xAA;

LPC_SC->PLL0FEED = 0x55;

while (!(LPC_SC->PLL0STAT & (1<<26)));????????????? ??????/* Wait for PLOCK0?????????????? */

LPC_SC->PLL0CON = 0x03; /* PLL0 Enable & Connect */

LPC_SC->PLL0FEED = 0xAA;

LPC_SC->PLL0FEED = 0x55;

#endif

LPC_SC->PCONP = PCONP_Val; /* Power Control for Peripherals */

LPC_SC->CLKOUTCFG = CLKOUTCFG_Val; /* Clock Output Configuration */

#endif

其中關(guān)鍵參數(shù)為PLL0倍頻系數(shù)PLL0CFG_Val、CPU時鐘分頻系數(shù)CCLKCFG_Val,由于寄存器值比實際值小1,因此它們實際值為16和4。另外每次想PLL0相關(guān)寄存器寫入新的數(shù)值時,需要向饋送寄存器當(dāng)中寫入饋送系列以后才能生效,通常是將0xAA和0x55先后寫入PLLxFEED寄存器。

將相關(guān)參數(shù)準(zhǔn)備好之后,就要根據(jù)參數(shù)配置,判斷選中的時鐘源,并通過計算得出最后的系統(tǒng)時鐘頻率。在選用外部12MHz時鐘源的條件下,程序會跳轉(zhuǎn)到CASE1的位置運行,并結(jié)合此前所給參數(shù),計算出系統(tǒng)時鐘頻率CCLK=12M×2×16/1/4=96MHz。

case 1: /* Main oscillator => PLL0 */

SystemFrequency = (OSC_CLK *

((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1))) / /*PLL0STAT的低15位是15,倍頻值*/

(((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1) / /*PLL0STAT的16~23位是0,分頻值*/

((LPC_SC->CCLKCFG & 0xFF)+ 1)); /*CCLKCFG是系統(tǒng)分頻值,3 */

break;

又例如使用32.768KHz的外低速晶振作為時鐘源,并同樣產(chǎn)生96MHz的系統(tǒng)時鐘,只需將CLKSRCSEL_Val、CCLKCFG_Val、PLL0CFG_Val分別改為0x02、0x02、0x1127(4391)即可,含義分別是選擇外部低速晶振,系統(tǒng)分頻為3(寄存器值比實際值小1),PLL0倍頻值為4392(而PLL0分頻值不設(shè),默認(rèn)為0),計算:32.768×2×4392÷3=95944.704KHz,

約為96MHz。

時鐘配置注意事項

在整個代碼編寫過程中要格外注意對饋送寄存器PLLxFEED的操作,要嚴(yán)格遵循0xAA和0x55先后寫入的順序。另外要確保執(zhí)行寫入饋送序列時,不會出現(xiàn)任何一個中斷服務(wù)程序,即在執(zhí)行PLL0饋送操作時,必須禁止中斷,如果寫入的值不正確、或者沒有滿足無中斷發(fā)生的條件,那么對PLL0CFG寄存器的更改都不會生效。

在根據(jù)自身需求配置所需系統(tǒng)時鐘頻率時,往往會使用仿真器的Debug功能,觀測相關(guān)參數(shù),以驗證時鐘頻率配置的正確與否。但不能在執(zhí)行PLL0饋送操作時,設(shè)置任何斷點,否側(cè)同樣無法使配置生效。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • LPC
    LPC
    +關(guān)注

    關(guān)注

    8

    文章

    136

    瀏覽量

    77670
  • NXP
    NXP
    +關(guān)注

    關(guān)注

    60

    文章

    1284

    瀏覽量

    184768
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5358

    瀏覽量

    120775
  • lpc1754
    +關(guān)注

    關(guān)注

    0

    文章

    1

    瀏覽量

    1799

原文標(biāo)題:多種選擇—輕松配置LPC175x系統(tǒng)時鐘-ZLG技術(shù)研發(fā)中心

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DAC8311電源5V供電,sync/sclk/din引腳可否用3.3v驅(qū)動?

    專家們好:我想用DAC8311輸出0~5V電壓(電流>1mA),有以下疑問: 1.電源5V供電,sync/sclk/din 引腳可否用3.3v驅(qū)動(從arm芯片lpc1754輸出)。 2.該輸出用以給驅(qū)動器提供模擬信號,是否需要加額外的跟隨電路。
    發(fā)表于 01-13 06:09

    NXP1754調(diào)試TPL0401A,在發(fā)送命令(0x00)時總是沒有應(yīng)答,為什么?

    調(diào)試TPL0401A,用的是NXP1754,I2C采用的是模擬的,在發(fā)送地址有應(yīng)答,在發(fā)送命令(0x00)時總是沒有應(yīng)答! 這是怎么回事啊
    發(fā)表于 01-10 07:55

    DAC5687沒有設(shè)置差分,采用的等效單端,那么內(nèi)部PLL可以工作嗎?

    時鐘模式采用PLL模式,datasheet要求輸入時鐘采用差分,但是我并沒有設(shè)置差分,而是采用的等效單端,那么內(nèi)部PLL可以工作嗎? 如今情況是可以測到滿偏電流,但是輸出端一直是高電平,有個小波動,這是為什么???
    發(fā)表于 01-09 08:17

    請問如何提高PCM1754的信噪比?

    如何提高PCM1754的信噪比,相對于PCM1725,差了很多,底噪較大
    發(fā)表于 10-29 06:29

    請問PCM1754是只支持44.1KHz的采樣頻率?

    先說我遇到的故障和現(xiàn)象: 1754的硬件配置如下:FMT = L,DEMP = L,Mute = L; fs = 48KHz, SysClk = 256*fs = 12.288 MHz。這是
    發(fā)表于 10-25 07:50

    使用內(nèi)部PLL同步多個并行器件

    電子發(fā)燒友網(wǎng)站提供《使用內(nèi)部PLL同步多個并行器件.pdf》資料免費下載
    發(fā)表于 10-18 10:29 ?0次下載
    使用<b class='flag-5'>內(nèi)部</b><b class='flag-5'>PLL</b>同步多個并行器件

    請問PCM1754是怎樣實現(xiàn)硬件控制的?

    請教一下,PCM1754在datasheet上簡介寫了Hardware ControlADC,是怎樣實現(xiàn)硬件控制的? 能否找一個 Hardware ControlDAC(比如,pcm1861),將
    發(fā)表于 10-16 06:39

    請問可以使用TINA進(jìn)行pcm1754的SNR仿真嗎?

    請問可以使用TINA進(jìn)行pcm1754的SNR仿真嗎?需要另外下載器件模型嗎?在哪里可以獲得,是否有相關(guān)教程
    發(fā)表于 10-12 09:01

    請問AIC3104C內(nèi)部PLL模塊中的PLL_CLKIN的輸入范圍是多少,最低值和最大值?

    請教一下,AIC3104C工作在Slave模式,使用BCLK引腳信號作為時鐘信號源,目前主控給BCLK引腳送1.024MHz的矩形波信號。 我的問題是AIC3104C內(nèi)部PLL模塊中
    發(fā)表于 10-11 06:12

    PLL1705/PLL1706雙通道PLL多時鐘發(fā)生器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《PLL1705/PLL1706雙通道PLL多時鐘發(fā)生器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-22 11:32 ?0次下載
    <b class='flag-5'>PLL</b>1705/<b class='flag-5'>PLL</b>1706雙通道<b class='flag-5'>PLL</b>多時鐘發(fā)生器數(shù)據(jù)表

    tas5756m使用GPIO口加內(nèi)部PLL產(chǎn)生MCLK的方法究竟是怎么樣的?

    tas5756m使用GPIO口加內(nèi)部PLL產(chǎn)生MCLK的方法究竟是怎么樣的?
    發(fā)表于 08-19 06:06

    PLL是什么意思

    PLL是Phase Locked Loop的縮寫,中文譯作鎖相環(huán)。它是一種用于控制頻率和相位的電路,通過檢測和跟蹤輸入信號的頻率和相位,并將其轉(zhuǎn)換為一個穩(wěn)定的輸出信號,從而實現(xiàn)頻率和相位的同步與控制。以下是對PLL的詳細(xì)解析,包括其定義、分類、工作原理、作用以及在現(xiàn)代電子
    的頭像 發(fā)表于 08-16 17:03 ?4092次閱讀

    紫光同創(chuàng)——PLL IP 的使用(Logos2)

    原理可以參考圖 3: (圖4) 即基本結(jié)構(gòu)是配置一路時鐘輸入,clkoutf 作為 PLL 內(nèi)部反饋,并輸出一路時鐘 clkout0。 (圖5) 還有一點,當(dāng)我們勾選 Show Internal
    發(fā)表于 08-15 17:41

    在ESP32C3中如何設(shè)置CPU震蕩源為內(nèi)部PLL_CLK?

    從你們的芯片手冊中了解到,CPU可以由多個外部高性能時鐘驅(qū)動,由一個寄存器來控制使用的是內(nèi)部PLL_CLK還是外部晶振,默認(rèn)是外部晶振。 那么我如果不放外部晶振,并且希望使用內(nèi)部PLL
    發(fā)表于 06-13 07:32

    靜電平衡導(dǎo)體內(nèi)部電勢為0

    靜電平衡是指物體表面的電荷分布在靜止?fàn)顟B(tài)下的平衡狀態(tài)。對于一個導(dǎo)體來說,當(dāng)其處于靜電平衡時,內(nèi)部電勢將為0。本文將詳細(xì)闡述靜電平衡導(dǎo)體內(nèi)部電勢為0的原因,并論述靜電平衡導(dǎo)體
    的頭像 發(fā)表于 02-26 17:44 ?4673次閱讀