牛卧堂MCU技术交流

标题: 使用NUC120RD2DN,無法將CPUCLK從外部24MHZ XTAL經PLL倍頻為48MHZ [打印本页]

作者: Albert_Kuang    时间: 2021-6-24 23:33
标题: 使用NUC120RD2DN,無法將CPUCLK從外部24MHZ XTAL經PLL倍頻為48MHZ
程式設定如下,但CPUCLK一直維持在24MHZ,PLL沒有倍頻輸出

main (void)
{
    uint32_t        delayCnt;
       
    UNLOCKREG();

    SYSCLK->PWRCON.XTL12M_EN = 1;                //  24MHZ External X'TAL
    SYSCLK->PWRCON.OSC22M_EN = 1;
    SYSCLK->PWRCON.OSC10K_EN = 1;
    SYSCLK->PWRCON.XTL32K_EN = 1;
       
    for (delayCnt=0;delayCnt<100000;delayCnt++);        // Delay for clock stable

    SYSCLK->CLKSEL0.HCLK_S = 0x010;            //  HCLK clock source = PLL clock

    SYSCLK->PLLCON.PLL_SRC = 0;
    SYSCLK->PLLCON.OE = 0;                               
    SYSCLK->PLLCON.BP = 0;
    SYSCLK->PLLCON.PD = 0;
    SYSCLK->PLLCON.OUT_DV = 3;        // NO = 4
    SYSCLK->PLLCON.IN_DV = 1;                // NR = 3
    SYSCLK->PLLCON.FB_DV = 22;        // NF = 24
                                                        // PLLFOUT = FIN * NF/NR * 1/NO
                                                        //                 = 24MHZ * 24/3 * 1/4 = 48MHZ
    LOCKREG();




作者: admin    时间: 2021-6-25 10:18
1、先设置PLL,等待PLL稳定后再将HCLK时钟源切换到PLL.   2、检查__HXT宏定义的值是否12MHZ ,如果是请更改成24M?
作者: 匿名    时间: 2021-6-25 12:45
1.穩定用的delay移到PLL設定後,沒有改善
2.搜尋所有使用到的driver程式,沒有搜到__HXT宏定义。
   但我程式原先已有更改__XTAL為24MHZ
/*----------------------------------------------------------------------------
  Define SYSCLK
*----------------------------------------------------------------------------*/
#define __XTAL      (24000000UL)        //##  24MHZ External X'tal
#define __RTC_XTAL  (32768UL)
#define __IRC22M    (22118400UL)
#define __IRC10K    (10000UL)
#define __HSI       (__IRC22M)      /* Factory Default is internal 22MHz */

3. 請問NUC120RD2DN這款版本內部有提供PLL倍頻的功能嗎? 我從旁測試感覺PLLFOUT好似一直被Bypass的(SYSCLK->PLLCON.BP = 1)


...我再試試,謝謝

作者: admin    时间: 2021-6-25 13:48
PLL有作用的,请参考 SYS例程 ,不过例程使用的是12MHZ,但是方法是一样的,请参考下图的设置

作者: admin    时间: 2021-6-25 13:48


作者: 匿名    时间: 2021-6-25 22:09
admin 发表于 2021-6-25 13:48

再試試,謝謝
作者: Albert_Kuang    时间: 2021-6-26 23:33
問題找到了
我程式中的數值表示法錯誤,一直沒發現:
錯誤--> SYSCLK->CLKSEL0.HCLK_S = 0x010;         //  HCLK clock source = PLL clock
正確--> SYSCLK->CLKSEL0.HCLK_S = 0x2;            //  HCLK clock source = PLL clock

更正後,原來PLL蠻容易控制的

謝謝你的協助





欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2