您的位置 首页 数字

MSP430学习笔记(3)时钟模块

1时钟模块包括高速晶体振荡器、低俗晶体振荡器、数字控制振荡器DCO、锁频环FLL以及锁频环增强版本FLL+等部件构成。2时钟模块产生3个输出

1.时钟模块包含高速晶体振动器、低俗晶体振动器、数字操控振动器DCO、锁频环FLL以及锁频环增强版别FLL+等部件构成。

2.时钟模块发生3个输出成果:ACLK(辅佐时钟),MCLK(主体系时钟)和SMCLK(子体系时钟)。

3.MSP430选用锁频环FLL以及锁频环增强版别FLL+等部件将晶体频率倍频至体系频率。数字操控振动器DCO和锁频环FLL计数相结合可完成快速发动。在晶体振动器失效时DCO可主动用于体系时钟。

4.3个时钟输入源:

a)LFXT1CLK:低频时钟源

b)XT2CLK:高频时钟源

c)DCOCLK:数字操控RC振动器

5.3种时钟信号

a)ACLK:由LFXT1CLK信号经1、2、4、8分频后得到。ACLK可由软件选做各外围模块的时钟信号,一般用于低俗外设。

b)MCLK:由软件挑选来自LFXT1CLK、XT2CLK、DCOCLK,然后经过1、2、4、8分频得到。MCLK首要用于CPU和体系。

c)SMCLK:可由软件挑选来自LFXT1CLK和DCOCLK,然后经过1、2、4、8分频得到。SMCLK首要用于高速外围模块。

6.低速晶体振动模块LFXT1

a)接手表晶振(32768Hz)时直接接在XIN和XOUT两个脚上,不需要其他外部器材,一切坚持作业安稳的原件和移相电容都集成在芯片中。

b)也可经过外接450kHz~8MHz的高速晶体振动器来作业在高频形式,这时两个引脚要外接%&&&&&%。

7.高速晶体振动器XT2

a)MSP430外接高速晶体振动器XT2的频率为450kHz~8MHz。

8.DCO振动器

a)当LFXT1和XT2失效时,DCO振动器会主动被选作MCLK的时钟源。振动器失效引起的NMI中止请求能够得到呼应,甚至在CPU封闭的状况下也能够。

b)DCO振动器是一个可数字操控的RC振动器,它的频率随供电电压和温度改变而具有必定的不安稳性。MSP430能够经过操作操控寄存器软件调理来增强振动频率的安稳性。

9.时钟模块寄存器

a)DCO操控寄存器DCOCTL

i.DCOx:界说8种频率之一,可分段调理DCOCLK的频率,相邻两频率相差10%。而频率由注入直流发生器的电流界说。(默以为3)。

ii.MODx:界说在32个DCO周期中刺进的fdco+1的个数,而在余下的DCO周期中为fdco周期,操控切换DCO和DCO+1两种频率。假如DCO常数为7,表明现已挑选最高频率,此刻不能使用MODx进行频率调整。

b)根本时钟体系操控寄存器1 BCSCTL1

i.XT2OFF: 0使XT2敞开,1使XT2封闭。(默许封闭)

ii.XTS:操控LFXT1的作业形式,挑选须结合实际晶体振动器的衔接状况。为0时作业在低频,为1时作业在高频。(默以为低频,在高频时有必要衔接相应的高频时钟源)。

iii.DIVAx:操控ACLK分频。0为不分频,1为2分频,2为4分频,3为8分频。(默许不分频)。

iv.XT5V:此位设置为0。

v.RSELx:3位操控某个内部电阻以决议标称频率。为0为最低,顺次添加,7为最高。(默以为4。)(由DCO默许值为3,RSELx默许值为4能够推算出DCO的默许频率为1000kHz左右。留意DCO的频率不安稳。)

c)根本时钟体系操控寄存器2 BCSCTL2

i.SELMx:挑选MCLK时钟源,0为DCOCLK,1为DCOCLK,2为TX2CLK,3为LFTXT1CLK。(默以为DCO)

ii.DIVMx:挑选MCLK分频,0为1分频,1为2分频,2为4分频,3为8分频。(默许1分频)

iii.SELS:挑选SMCLK时钟源,0为DCO,1为TX2CLK(默许DCO)

iv.DIVSx:挑选SMCLK分频,0为1分频,1为2分频,2为4分频,3为8分频。(默以为1分频,即SMCLK与MCLK相同)

v.DCOR:挑选DCO电阻,0为内部电阻,1为外部电阻

d)SFR中止使能寄存器1

i.IE1是中止答应寄存器,IE1.1是振动器毛病中止答应位OFIE,置位表明答应中止,复位表明不答应中止。

e)SFR中止标志寄存器1

i.IFG1是中止标志寄存器,IFG1.1是振动器毛病中止标志位OF1FG,置位表明有振动器毛病,复位表明没有发生毛病。

10.PUC信号后DCOCLK被主动选作MCLK时钟信号,根据需要MCLK的时钟源能够别的设置为LFXT1或许XT2.次序如下:

a)复位OSCOFF

b)铲除OFIFG

c)延时等候至少50us

d)再查看OFIFG,假如置位,则重复3,4步,直到OFIFG=0

e)代码:

do

{

IFG1 &=~OFIFG;

for(I = 0xff;i> 0;i –);

}

while((IFG1 & OFIFG) != 0);

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/257278.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部