关于单片机msp430的时钟资料.docx
《关于单片机msp430的时钟资料.docx》由会员分享,可在线阅读,更多相关《关于单片机msp430的时钟资料.docx(28页珍藏版)》请在冰豆网上搜索。
关于单片机msp430的时钟资料
msp430f5419/38学习笔记之时钟系统
(2011-11-3010:
41:
30)
标签:
msp430f541x
msp430f543x
ucs
分类:
msp430
时钟系统注:
msp5419/38中,如果你使用SMCLK做TIMER_A的时钟,那么进入低功耗3或低功耗4是不会把SMCLK关 掉的,这点5系列和其他系列的不一样。
UCS模块是一个低成本超低功耗系统,通过选择使用3个内部时钟信号,用户可以得到性能和功耗的
最佳平衡点。
UCS可以由软件配置其工作模式,如配置成:
不需要任何外部器件、使用1或2个外部晶振等。
一、时钟系统
UCS模块具有5个时钟源:
XT1CLK:
低频/高频振荡器,既可以与低频32768HZ钟振、标准晶振、外部振荡器,又可以与外部4M-32MHZ时钟源一起使用,XT1CLK可以作为FLL模块内部的参考时钟。
有些芯片XT1CLK只允许使用外部的低频晶振,具体可参考数据手册;
XT2CLK:
可选高频振荡器,可与标准晶振,振荡器或者4MHZ~32MHZ外部时钟源一起使用;
VLOCLK:
内部低功耗、低频振荡器,频率典型值为10KHZ;
REFOCLK:
内部低频振荡器,典型值为32768HZ,可作为FLL基准时钟源;
DCOCLK:
可以通过FLL来稳定的内部数字控制振荡器(DCO);DCOCLK经过FLL分频后可得DCOCLKDIV。
UCS模块可以提供3种时钟信号:
ACLK:
辅时钟;
MCLK:
系统主时钟;
SMCLK:
子系统主时钟。
二、UCS操作
PUC之后,UCS的默认配置模式如下:
XT1CLK选择LF模式下的XT1作为时钟源,ACLK选择XT1CLK作为时钟源;
MCLK选择DCOCLKDIV作为时钟源;
SMCLK选择DCOCLKDIV作为时钟源;
FLL操作使能,FLL基准时钟(FLLREFCLK)选择XT1CLK;
XIN和XOUT作普通IO口使用,禁止了XT1功能,直到I/O口重新配置为XT1模式;
如果有XT2IN和XT2OUT,则一并配置为普通IO口,禁止XT2功能。
如上所述:
默认状态下:
XIN/XOUT(P7.0/1)、XT2IN/XT2OUT(P5.2/3)为普通IO口,振荡功能禁止;FLL基准源、ACLK时钟源是XT1CLK,晶振失效逻辑控制位作用下均切换到REFOCLK,ACLK=32768Hz;默认下FLL倍频为:
31(FLLN值),DCOCLKDIV=(32+1)*32768=1.047856MHz;默认下分频值D=2(FLLD值),DCOCLK=2*DCOCLKDIV=2.097152MHz。
默认选择了使用XT1的FLL操作,为了启用XT1功能,必须将与XT1引脚对应的PSEL置位。
当XT1CLK使用32768Hz晶振时,由于XT1不会立即稳定,失效逻辑控制位会立即选择REFOCLK作为ACLK时钟源。
一旦晶体振荡稳定后,由于FLL的作用,MCLK和SMCLK都将稳定在1.047586MHz,Fdco稳定在2.097152MHz。
状态寄存器(SCG0,SCG1,OSCOFF和CPUOFF)用于配置MSP430的工作模式,使能和禁止UCS模块中的部分功能(参考系统复位、中断和操作模式)。
UCS模块可以在程序运行中的任何时候进行配置和修改配置,配置使用寄存器UCSCTL0~UCSCTL8。
2.1UCS模块在超低功耗方面的特性
为了保持长时间工作或降低功耗而采用低时钟频率;
快速响应时间和快速数据处理能力需要高时钟频率;
适应各种工作温度和供电电压的稳定时钟;
低成本应用中使用准确度要求较少器件的时钟。
2.2VLO内部低功耗低频振荡器
内部VLO能够在不需要任何外接晶振的情况下,提供10KHz的时钟,在对时钟精度不敏感而对成本又非常敏感的场合,使用VLO是一个非常好的选择。
当VLO作为ACLK、MCLK、SMCLK(SELA=1、SELM=1、SELS=1)中的任何一个时钟源时,开始启动振荡。
2.3REFO内部低频参考时钟
在对成本非常敏感时,通常不需要使用外部晶振,此时可以使用内部低频参考时钟。
该时钟的典型频率值为32768Hz,并可以作为用于稳定时钟模块FLL所需要的参考时钟源FLLREFCLK。
REFO和FLL在不需要外接晶振的情况下,给了系统时钟设置一定的灵活性。
REFO不使用时,不存在电流消耗。
REFO在下面任何一种情况下,是处于工作允许状态的:
在活动模式到LPM3模式下,REFO作为ACLK的时钟源(SELA=2OSCOFF=0);
在活动模式下,REFO作为MCLK的时钟源(SELM=2CPUOFF=0);
在活动模式到LPM1模式下时,REFO作为SMCLK的时钟源(SELS=2SMCLKOFF=0);
活动模式到LPM3模式下,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO作为ACLK的时钟源(SELA=3,4OSCOFF=0)
在活动模式下,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO作为MCLK的时钟源(SELA=3,4CPUOFF=0);
活动模式到LPM1模式,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO作为SMCLK时钟源(SELA=3,4SMCLKOFF=0)
对于ACLK、MCLK、SMCLK的时钟源的选择由UCSCTL4控制寄存器决定:
SELA Bits10-8 选择ACLK的时钟源
000 XT1CLK
001 VLOCLK
010 REFOCLK
011 DCOCLK
100 DCOCLKDIV
101 XT2CLK(可用),否则是DCOCLKDIV
110 保留,XT2CLK(可用),否则是DCOCLKDIV
111 保留,XT2CLK(可用),否则是DCOCLKDIV
SELS Bits6-4 选择SMCLK的时钟源
000 XT1CLK
001 VLOCLK
010 REFOCLK
011 DCOCLK
100 DCOCLKDIV
101 XT2CLK(可用),否则是DCOCLKDIV
110 保留。
XT2CLK(可用),否则是DCOCLKDIV
111 保留。
XT2CLK(可用),否则是DCOCLKDIV
SELM Bits2-0 选择MCLK的时钟源
000 XT1CLK
001 VLOCLK
010 REFOCLK
011 DCOCLK
100 DCOCLKDIV
101 XT2CLK(可用),否则是DCOCLKDIV
110 保留,XT2CLK(可用),否则是DCOCLKDIV
111 保留,XT2CLK(可用),否则是DCOCLKDIV
ACLK、MCLK、SMCLK时钟的输出(对应P11.0/1/2)UCSCTL5控制寄存器决定:
DIVPA Bits14-12 外部引脚上可用的ACLK时钟源分频。
对ACLK进行分频,外部引脚(P11.0)上输出。
000 fACLK/1
001 fACLK/2
010 fACLK/4
011 fACLK/8
100 fACLK/16
101 fACLK/32
110 保留。
默认是fACLK/32
111 保留。
默认是fACLK/32
DIVA Bits10-8 ACLK时钟源分频。
对ACLK时钟源进行分频。
000 fACLK/1
001 fACLK/2
010 fACLK/4
011 fACLK/8
100 fACLK/16
101 fACLK/32
110 保留。
默认是fACLK/32
111 保留。
默认是fACLK/32
DIVS Bits6-4 SMCLK时钟源分频
000 fSMCLK/1
001 fSMCLK/2
010 fSMCLK/4
011 fSMCLK/8
100 fSMCLK/16
101 fSMCLK/32
110 保留。
fSMCLK/32
111 保留。
fSMCLK/32
DIVM Bits2-0 MCLK时钟源分频
000 fMCLK/1
001 fMCLK/2
010 fMCLK/4
011 fMCLK/8
100 fMCLK/16
101 fMCLK/32
110 保留。
默认是fMCLK/32
111 保留。
默认是fMCLK/32
2.4XT1振荡器
XT1为了支持低功耗模式,而支持在低频模式下(XTS=0)使用32768Hz时钟。
晶振连接到XIN和XOUT,此时不需要任何其他外围器件,软件可以通过XCAP位来设置LF模式下XT1晶振的内部负载电容,负载电容可以由软件选择为2pF,6pF,9pF,12pF(典型值),也可以根据需要增加外接电容。
一些芯片在HF模式时(XTS=1)也支持高速晶振或者振荡器,高频晶振或振荡器连接到XIN和XOUT引脚时,两端口都需要接外部电容,电容的大小需要根据晶振或者振荡器的规格来选择。
LF模式下,可以通过XT1DRIVE位来提高XT1驱动能力。
在上电时,为快速可靠启动可以设置XT1DRIVE位来快速启动。
如果用户为了降低功耗,可以在需要时降低其驱动能力。
在HF模式时,可以通过选择适当的XT1DRIVE值来满足不同范围的晶振或振荡器。
无论是在LF还是HF模式下,都可以通过配置XT1BYPASS位,XT1可以使用加载在XIN脚上的外部时钟信号。
当使用外部时钟信号时,外部信号的频率和选择的工作模式必须与数据手册上的参数相符合,当在BYPASS模式时,将关闭XT1的振荡器电源。
上电时,默认操作是XT1,LF模式,但是XT1将保持禁止状态,直到与XT1复用的端口设置成XT1模式。
复用IO口的配置由XIN和XT1BYPASS相关的PSEL决定。
PSEL置位,X1IN和X1OUT端口将配置成XT1模式。
如果XT1BYPASS也置位,XT1将配置成BYPASS模式,XT1相对应的振荡器将断电。
在BYPASS模式下,XIN可以接收外部时钟信号的输入,XOUT配置成普通IO口模式,这时与X1OUT相对应的PxSEL位可以不用关心。
如果与XT1IN对应的PSEL位清零,XT1IN和XT1OUT均被配置为普通IO口模式,XT1将禁止。
2.5 XT2振荡器
某些芯片有第二个晶振XT2,XT2CLK源自XT2,且在高频模式下,XT2的特性和XT1相同,XT2DRIVE位用来选择XT2的频率范围。
通过配置XT1BYPASS位,可以使XT2可以使用加载在XIN脚的外部时钟信号,当使用外部时钟信号时,外部信号的频率必须和选择的工作模式在数据手册上的参数相符合。
XT2管脚和普通I/O口复用。
上电后,默认为XT2模式,但是XT2会一直保持禁止状态,直到与XT2复用的端口通过PSEL设置成XT2模式。
复用IO口的配置由XIN和XT2BYPASS相关的PSEL决定,PSEL置位,X2IN和X2OUT端口将配置成XT2模式、如果XT2BYPASS也置位,XT2将配置成BYPASS模式,XT2相对应的振荡电路将停止工作,在BYPASS模式下,XIN可以接收外部时钟信号输入,X2OUT配置成普通IO口模式,这时与XOUT相对应的PSEL位可以不用关心。
如果与XT2IN对应的PSEL位清零,XT2IN和XT2OUT均被配置为普通IO口模式。
关于XT1、XT2振荡器的配置由UCSCTL6控制寄存器决定:
XT2DRIVE Bits15-14 XT2的振荡电流可以调到需要的值。
最初为了快速稳定起振,以最大电流开始。
需要时,用户软件可减小驱动。
00 最低电流消耗。
XT2的晶振频率范围在4MHz到8MHz。
01 驱动力稍增大。
XT2的晶振频率范围在8MHz到6MHz。
10 驱动力增大。
XT2的晶振频率范围在16MHz到24MHz。
11 驱动力和电流消耗均达到最大。
XT2的晶振频率范围在24MHz到32MHz。
XT2BYPASS Bit12 XT2旁路模式选择
0 XT2由内部晶振提供。
1 XT2由外部引脚输入。
XT2OFF Bit8 关闭XT2晶振。
0 如果XT2通过端口选择,并且非旁路模式,那么XT2被打开。
1 如果XT2没有被用作ACLK、MCLK、以及SMCLK的时钟源或者没有用作FLL的基
准源,XT2关闭。
XT1DRIVE Bits7-6 XT1的振荡电流可以调到需要的值。
最初为了快速稳定起振,以最大电流开始。
需
要时,用户软件可减小驱动。
00 XT1低频模式下,最低电流消耗XT1在高频模式下晶振频率范围在4MHz-8MHz
01 XT1低频模式下,驱动力稍增大XT1在高频模式下的晶振频率范围在8MHz-16MHz
10 XT1低频模式下,驱动力增大XT1在高频模式下晶振频率范围在16-24MHz
11 驱动力和电流消耗均达到最大。
XT1在高频模式下晶振频率范围在24MHz-32MHz
XTS Bit5 XT1模式选择
0 低频模式。
XCAP定义XIN和XOUT两个引脚的电容。
1 高频模式。
该位没有使用。
XT1BYPASS Bit4 XT1旁路模式
0 XT1有内部晶振提供。
1 XT1由外部引脚输入。
XCAP Bit3-2 振荡电容选择,这些位选择LF模式下用于LF振荡器的电容。
等效电容Ceff=
(Cxin+2pF)/2。
前提是假定Cxin=Cout,并且由于封装以及布板的原因产生2pF左
右的寄生电容。
关于典型内部及有效电容的细节,参见数据手册的相关章节。
SMCLKOFF Bit1 SMCLK关闭。
该位用来关闭SMCLK。
0 SMCLK 开启
1 SMCLK关闭
XT1OFF Bit0 关闭XT1晶振
0 如果XT1已经通过端口选择,并且非旁路模式,那么XT1被打开。
1 如果XT1没有用作ACLK、MCLK以及SMCLK的时钟源或没有用作FLL的校准源,XT1关闭
2.6DCO数字控制振荡器
DCO是内部集成的数字频率振荡器。
DCO频率可以通过软件配置DCORSEL、DCO和MOD位来调整,DCO频率可以经过FLL得到稳定的多种频率(FLLREFCLK/n),这点是可以通过软件选择的。
FLL可以通过SELREF位来选择的不同参考时钟源。
参考时钟源包含XT1、REFOCLK或者XT2CLK(如果可用)。
n的值由FLLREFDIV(n=1,2,4,8,12,16)定义,默认n=1。
在不需要FLL的场合,也就不需要FLLREFCLK了,这时可以通过设置SELREF={7}来实现。
FLLD可将FLL分频器的值D配置为1、2、4、8、16、32,默认情况下D=2;FLLN位决定分频因子(N+1),默认下N=31。
分频因子(N+1)和分频值D定义了N>0时的DCOCLK和DCOCLKDIV,N值必须大于0,对FLLN写0将使N置1。
fDCOCLK=D×(N+1)×(fFLLREFCLK÷n)
fDCOCLKDIV=(N+1)×(fFLLREFCLK÷n)
2.6.1DCO频率调整
默认情况下,FLL功能是允许的,可以通过置位SCG0或SCG1来禁止FLL。
一旦FLL被禁止,DCO将在寄存器UCSCTL0和UCSCTL1定义的当前设置下继续工作;DCO频率也可以在需要的时候手动调整,否则,DCO的频率将由FLL来稳定。
PUC后,DCORSELx={2}、DCOx={0}。
DCOCLKDIV为MCLK和SMCLK提供时钟源。
由于CPU执行代码的时钟来自MCLK,而MCLK由DCO提供,所以从上电复位到执行代码的时间小于5us。
DCOCLK的频率由以下方式设置:
1)DCORSEL位为3时,从8个频率范围中选择1个频率。
具体可查看数据手册。
2)DCORSEL选择5,将DCO分成32个频率级别,相邻两个级大约相差8%。
3)MOD为5,将在DCO选择的频率和{DCO+1}设置的下一更高频率中转换。
如果DCO=31,MOD位不起作用,因为DCO频率已经是由DCORSEL选择的频率范围的最大值。
2.6.2DCO调制器
调制器混合两个DCO的频率:
fDCO和fDCO+1,来产生一个有效的中间频率,提高时钟驱动,减少电磁干扰。
调制器通过配置MOD位,在32个DCOLK时钟周期中混合fDCO和fDCO+1。
当MOD={0}时调制器关闭。
调制器混频公式如下:
T=(32-MOD)×tDCO+MOD×tDCO+1
调制器操作如图所示:
当FLL模块允许时下,DCO调制器是由FLL硬件控制。
如果不希望FLL工作,DCO调制器设置需由软件来配置。
2.7FLL锁频环
锁频环可以对频率积分器进行连续加或减。
用于驱动DCO的频率积分器的值可以从寄存器UCSCTL0,UCSCTL1(MODx和DCOx位)中读出。
计数器的值可以用fFLLREFCLK/n(n=1,2,4,8,12,or16)加一调整或者用fDCOCLK/(D*(N+1))减一调整。
积分器中的5位(UCSCTL0 8~12位)用于设置DCO频率,DCO设置了32节拍,每一频率大约比前面的高出约8%,调制器混合两个相邻的DCO频率产生1个小数节拍。
对于给定DCO偏差范围设定,为了使DCO正常操作,要给DCO一段时间来稳定,一般需要 (n×32)fFLLREFCLK个周期,在最坏情况下需要(n×32×32)fFLLREFCLK周期。
其中的n值由FLLREFDIVX(1、2、4、8、12、16)来定义。
DCO