我们这节课的主要内容有:
·时钟源与时钟信号
·时钟部分的控制寄存器
·程序中对时钟的操作
1,时钟源与时钟信号
MSP430f149有着丰富的时钟源,作为一代超低功耗的MCU,可以在不同的场合,不同的应用环境下为不同的系统时钟选择不同的时钟源,并对这些时钟源进行多种多样的操作。对于MSP430来说,其时钟系统由低速晶体振荡器LFXT1、高速晶体振荡器XT2和数控振荡器DCO组成。
而三个时钟发生系统所产生的时钟经选择和处理后将分别作为辅助时钟ACLK、主系统时钟MCLK和子系统时钟SMCLK。
MSP430这种多时钟源、多系统时钟的特点,使得它能够很容易实现系统的超低功耗和功耗控制:当系统需要进行数据处理或运算时,用户可以选择时钟频率较高的高速晶体振荡器XT2作为系统主时钟MCLK;当系统处于空闲状态时,用户可以设置降低系统频率、关闭外围功能模块设置可以关闭CPU以降低系统的功耗。
2,时钟源
MSP430包含三个时钟源:
※LFXT1:低频率晶体振荡器,可以是时钟晶振(32768Hz)或是标准高频率的晶体振荡器或陶瓷谐振器,LFXT1受OSCOff和XTS控制位控制;
※XT2:标准晶体振荡器或陶瓷谐振器,也可以是外部输入的时钟信号源,XT2的最高频率为8MHz,XT2只受XT2Off控制位控制;
※DCO:集成在片内的数控RC振荡器,DCO受Rsel、DCO、MOD和SCG0控制位控制。
3,时钟信号
MSP430的时钟模块可以提供三种时钟信号:
※ACLK:辅助时钟,按照图中的时钟模块结构,ACLK由LFXT1时钟源经过DIVA选择分频系数后取得;
※MCLK:系统主时钟,SELM控制位负责MCLK的来源选择,用户可以选择LFXT1或XT2或DCO。经过DIVM选择分频系数后作为系统主时钟,也可以选择CPUOff来选择禁止MCLK时钟;
※SMCLK:系统辅助时钟,SELS控制位负责SMCLK的来源选择用户可以选择XT2或DCO,经过DIVS钻泽分频系数后作为系统辅助时钟,也可以选择SCG1来选择禁止SMCLK。
4,低速晶体振荡器LFXT1
MSP430f149等所有MSP430F1xx系列的MCU都包含了LFXT1,LFXT1也可以连接高速,但一般LFXT1是指32768Hz的时钟晶振,并且MSP430f149中集成了低频率晶振所需要的谐振电容。
但是需要注意的是,在低频模式下当供电电压Vcc<2.5V时,需要在XOUT和Vss端接入5.1M欧的电阻;在高频模式下,当Vcc>2.5V时,最高可使用4MHz晶体振荡器或陶瓷谐振器,当Vcc>2.8V时,最高可以使用8MHz晶体振荡器或陶瓷谐振器。
5 ,低速晶体振荡器LFXT1控制位
系统发出上电清除信号后OSCOff复位、即LFXT1开始工作,用户可以使用LFXT1作为MCLK或者SMCLK。
LFXT1包含两个控制位,OSCOff和XTS:
1、OSCOff:该控制位位于SR寄存器中的第5位,对其置位可以使芯片内的LFXT1电路停止工作,以降低系统功耗;
2、XTS:该控制位位于BSCTL1寄存器中的第6位,对其置位可以是LFXT1工作于高频模式,在高频模式下需要外接谐振电容。
6,高速晶振振荡器XT2
MSP430F149包含了告诉晶振振荡器,在使用XT2时必须外接谐振电容,当Vcc>2.5V时,最高可使用4MHz晶振振荡器或陶瓷谐振器,当Vcc>2.8V时,最高可以使用8MHz晶振振荡器或陶瓷谐振器。
XT2只包含一个控制寄存器XT2Off:
XT2Off:该控制位位于BSCTL1寄存器中的第7位,对其置位可以使XT2振荡器关闭。
7,数控RC振荡器DCO
MSP430F149的DCO系统由可以选择内部或外部电阻的直流发生器、数控振荡器、调制器等部分组成,DCO模块中包含了如下的控制器:
1、DCOR:该位位于BCSCTL2的第0位,用来选择DCO内部电阻或者外部电阻,由于DCO的振荡频率取决于通过电阻流入直流发生器的电流大小,因此除使用MSP430F149的内部电阻之外,用户可以选择外接的电阻。对DCOR位置位则为选择外接电阻;
2、Rsel:包含RSEL2、RSEL1和RSEL0三位,分别位于BCSCTL1的第2位、第1位和第0位,由于DCO的振荡的特点,MSP430F149中集成了8个电阻以产生8种DCO频率,电阻的选择受Rsel三个控制位的控制,Rsel=7时产生频率最高,Rsel=0时产生的频率最低;
3、DCO:包含DCO2、DCO1和DCO0三位,定义了DCO的微调频率,DCO=7时DCO产生的频率最高,DCO=0时DCO产生的频率最低;
4、MOD:包含MOD.4~MOD.0五位,定义了在32个固有DCO振荡周期中南插入的一个新的周期的次数,相当于将DCO频率调整为Fdco乘2的32分之MOD的次方。
8,时钟部分的控制寄存器
8.1DCOCTL控制寄存器
前面对LFXT1、XT2和DCO的控制寄存器分别作了一些介绍,在时钟部分中还包括为MCLK、ACLK和SMCLK提供时钟源的控制位,时钟部分包括DCO、BCSCTL1和BCSCTL2三个控制寄存器。
我们现在看到的是DCOCTL控制寄存器。详细的内容我们已经在上一节中讲过了,现在我们稍作讲解。
DCO是控制DCO的微调频率,DCO=7时DCO的输出频率最高;
MOD是控制DCO的输出调制度。
8.2BCSCTL1控制寄存器
现在来说说BCSCTL1控制寄存器的各位的作用:
XT2OFF:控制XT2振荡器的关闭和开启。置位1:XT2振荡器关闭;置位0:XT2振荡器开启。
XTS:控制LFXT1的晶振工作模式。置位1:LFXT1工作在高频模式;置位0:LFXT1工作在低频模式(32768Hz)。
DIVA1|DIVA0:选择ACLK的分频系数。置位3:ACLK的分频系数为8;置位2:ACLK的分频系数为4;置位1:ACLK的分频系数为2;置位0:不分频。
XT5V:该位必须为0.
RSEL2|RSEL1|RSEL0:选择内部电路,对DCO频率进行主要控制。置位7:选择最高频率对应的电阻;……(省略号)置位0:选择最低频率对应的电阻。
8.3 BCSCTL2控制寄存器
接下来我们讲讲BCSCTL2控制寄存器的各位作用:
SELM1|SEML0:MCLK时钟源选择。3:选择LFXT1作为MCLK的时钟源;2:选择XT2作为MCLK的时钟源;1,0:选择DCO作为MCLK的时钟源.
DIVM1|DIVM0:选择MCLK的分频系数。3:选择分频系数为8;2:选择分频系数为4;1:选择分频系数为2;0:不分频。
SELS:SMCLK时钟源选择。1:选择XT2作为SMCLK的时钟源;0:选择DCO作为SMCLK的时钟源。
DIVS1|DIVS0:选择SMCLK的分频系数。3:选择分频系数为8;2:选择分频系数为4;1:选择分频系数为2;0:不分频。
DOR:选择内部电阻或者外部电阻。1:使用外部电阻;0:使用内部电阻。
8.4PUC后各控制寄存器状态
系统在PUC后,系统时钟相关各个寄存器的值和时钟状态如下:
DCOCTL:0x60,即(DCO1|DCO0)
BCSCTL1:0x84,即(XT2OFF|RSEL2)
BCSCTL2:0x00
总之系统上电清除后:
※LFXT1工作在低频模式下;
※LFXT1不分频作为ACLK;
※DCO设定为DCO1+DCO0;
※DCO使用芯片内部电阻;
※Rsel设定为RSEL2;
※XT2关闭;
※DCO不分频作为MCLK和SMCLK。