飞思卡尔s12x系列 pll设置

pll :Phase Locking Loop 


在我使用的MC9S12XDP512 单片机中

设置pll十分简单:

CLKSEL = 0x00; //设置当前fBUS使用外部晶振
PLLCTL = 0xe1; //设置进入pll设置模式


//pll计算:
//fPLL= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1),
// fBUS= fPLL/2
//其中fOSC就是外部晶振的频率,fBUS是最后总线的频率
SYNR = 0x01;
REFDV = 0x01;


PLLCTL = 0x60;
asm NOP;
asm NOP;
asm NOP;
while (0 == (CRGFLG & 0x08))
; //JUDGE THE LOCK BIT, =1 CLOCK STABLE
CLKSEL = 0x80; //SELECT PLL clock


其他s12x的单片机大同小异,无非是公式变了:

// fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)
// fPLL= fVCO/(2 × POSTDIV)
// fBUS= fPLL/2

加多一句POSTDIV = 0x00; 则fPLL= fVCO,

另外可能有两个值要设置分别是SYNR和REFDV寄存器的第6,7位,

对于SYNR

// VCOCLK Frequency Ranges  VCOFRQ[7:6]
// 32MHz <= fVCO <= 48MHz    00
// 48MHz <  fVCO <= 80MHz    01
// Reserved                  10
// 80MHz <  fVCO <= 120MHz   11

对于REFDV

// REFFRQ[7:6];REFDIV[5:0]
// fREF=fOSC/(REFDIV + 1)
// REFCLK Frequency Ranges  REFFRQ[7:6]
// 1MHz <= fREF <=  2MHz       00
// 2MHz <  fREF <=  6MHz       01
// 6MHz <  fREF <= 12MHz       10
// fREF >  12MHz      11

算出对应的fVCO 、fREF 赋值进去就好,

其中fREF 我也还没搞清楚是啥子。


还有,该系列单片机的fBUS使用外部晶振不进行pll时,fBUS为外部fOSC的一半

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值