在线时间0 小时
UID425526
注册时间2013-4-7
NXP金币0
该用户从未签到
新手上路

- 积分
- 32
- 最后登录
- 1970-1-1
|
芯片是K60FX512VLQ15,板子上是50M的有源晶振,以下是我的程序,然后我通过trace管脚查看的频率只有18.75M,用PWM什么的输出以后检查,也发现时钟频率只有150的1/4.
void pll_init(void){
//进入FBE模式
MCG_C2=0x28;
SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK;
PMC_REGSC=PMC_REGSC_ACKISO_MASK;
MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(5); //MCGOUTCLK选择外部参考时钟 设置一个FRDIV分频,其实不必要。因为FLL不会用到
MCG_C6=0;
while (MCG_S & MCG_S_IREFST_MASK); // 等待FLL参考时钟变成external reference clock
while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2); // 等待时钟状态显示为外部参考时钟(ext ref clk)
//进入PBE模式
MCG_C5 = MCG_C5_PRDIV0(5); // 设置 PLL 匹配晶振的参考分频数
MCG_C6 = 0x0;
set_sys_dividers(0,1,2,5); //core=150M, bus=75M, FlexBus=50M, Flash Clk=25M
MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV0(2); //VDIV = 15 (8.3*18) 150MHz
//pll_freq = 150;
while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set
while (!(MCG_S & MCG_S_LOCK0_MASK)){}; // Wait for LOCK bit to set
// Now running PBE Mode
// Transition into PEE by setting CLKS to 0
// CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0
MCG_C1 &= ~MCG_C1_CLKS_MASK;
// Wait for clock status bits to update
while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){};
// Now running PEE Mode
}
|
|