牛卧堂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
微信图片_20210625134640.png
(122.17 KB, 下载次数: 350)
下载附件
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://nuvoton-mcu.com/)
Powered by Discuz! X3.2