时钟系统 注:msp5419/38中,如果你使用SMCLK做TIMER_A的时钟,那么进入低功耗3或低功耗4是不会把SMCLK关              掉的,这点5系列和其他系列的不一样。

    UCS模块是一个低成本超低功耗系统,通过选择使用3个内部时钟信号,用户可以得到性能和功耗的
最佳平衡点。UCS可以由软件配置其工作模式,如配置成:不需要任何外部器件、使用 1或 2个外部晶振等。

msp430f5419/38学习笔记之时钟系统
  一、时钟系统

      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:子系统主时钟。

msp430f5419/38学习笔记之时钟系统

  二、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.1 UCS模块在超低功耗方面的特性

    为了保持长时间工作或降低功耗而采用低时钟频率;

    快速响应时间和快速数据处理能力需要高时钟频率;

    适应各种工作温度和供电电压的稳定时钟;

    低成本应用中使用准确度要求较少器件的时钟。

  2.2 VLO 内部低功耗低频振荡器

    内部 VLO能够在不需要任何外接晶振的情况下,提供 10KHz的时钟,在对时钟精度不敏感而对成本又非常敏感的场合,使用 VLO是一个非常好的选择。当 VLO 作为 ACLK、MCLK、SMCLK(SELA=1、SELM=1、SELS=1)中的任何一个时钟源时,开始启动振荡。

  2.3 REFO 内部低频参考时钟

    在对成本非常敏感时,通常不需要使用外部晶振,此时可以使用内部低频参考时钟。该时钟的典型频率值为32768Hz,并可以作为用于稳定时钟模块 FLL所需要的参考时钟源 FLLREFCLK。REFO 和 FLL在不需要外接晶振的情况下,给了系统时钟设置一定的灵活性。REFO不使用时,不存在电流消耗。

  REFO 在下面任何一种情况下,是处于工作允许状态的:

  在活动模式到 LPM3模式下,REFO 作为ACLK 的时钟源(SELA=2 OSCOFF=0);

  在活动模式下,REFO 作为 MCLK的时钟源(SELM=2 CPUOFF=0);

  在活动模式到 LPM1模式下时,REFO作为 SMCLK 的时钟源(SELS=2 SMCLKOFF=0);

活动模式到LPM3模式下,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO作为ACLK的时钟源(SELA=3,4 OSCOFF=0)

在活动模式下,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO 作为 MCLK的时钟源(SELA=3,4 CPUOFF=0);

活动模式到LPM1模式,REFO作为FLLREFCLK(SELREF=2)时钟源,DCO作为SMCLK时钟源(SELA=3,4 SMCLKOFF=0)

    对于ACLK、MCLK、SMCLK的时钟源的选择由 UCSCTL4 控制寄存器决定:

msp430f5419/38学习笔记之时钟系统

    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 控制寄存器决定:

msp430f5419/38学习笔记之时钟系统
   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  Bits 10-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  Bits 6-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.4 XT1 振荡器

    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 控制寄存器决定:

msp430f5419/38学习笔记之时钟系统

      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.6 DCO 数字控制振荡器

    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。

           f DCOCLK = D × (N + 1) × (f FLLREFCLK ÷ n)
           f DCOCLKDIV = (N + 1) × (f FLLREFCLK ÷ n)

  2.6.1 DCO频率调整

    默认情况下,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.2 DCO调制器

    调制器混合两个 DCO 的频率:fDCO和 fDCO+1,来产生一个有效的中间频率,提高时钟驱动,减少电磁干扰。调制器通过配置 MOD 位,在32 个DCOLK 时钟周期中混合 fDCO和 fDCO+1。当 MOD={0}时调制器关闭。
    调制器混频公式如下:
    T=(32-MOD) ×tDCO+MOD×tDCO+1
    调制器操作如图所示:
    当 FLL 模块允许时下,DCO 调制器是由 FLL 硬件控制。如果不希望 FLL 工作,DCO 调制器设置需由软件来配置。

msp430f5419/38学习笔记之时钟系统
  2.7 FLL 锁频环 

     锁频环可以对频率积分器进行连续加或减。用于驱动 DCO 的频率积分器的值可以从寄存器UCSCTL0, UCSCTL1 (MODx和DCOx位)中读出。 计数器的值可以用 fFLLREFCLK/n (n = 1, 2, 4, 8, 12, or 16)加一调整或者用 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)来定义。

 

msp430f5419/38学习笔记之时钟系统

    DCO  Bits12-8  DCOtap选择,这些位可以选择DCOtap,在FLL操作中,可自动修改。
    MOD  Bits7-3  调制位计数器,这些位选择调制模式所有的MOD位在FLL操作中,自动修改。
                  调制位计数器从 31 到0 时,DCO 寄存器值增加。调制位计数器从 0减至最大计数时,  

                  DCO同样减小。

msp430f5419/38学习笔记之时钟系统

    DCORSEL  Bits6-4  DCO 频率范围选择,这些位选择操作的 DCO频率范围。
    DISMOD   Bits0  调整器,该位使能/禁止调制器。
               0    调整器使能
               1    调整器禁止

msp430f5419/38学习笔记之时钟系统

        FLLD  Bits14-12  锁频环分频器,在 FLL反馈环中这些位除 fDCOCLK,这使乘数位产生另外的乘数。
                  000    fDCOCLK/1

                  001    fDCOCLK/2
                  010    fDCOCLK/4
                  011    fDCOCLK/8
                  100    fDCOCLK/16
                  101    fDCOCLK/32
                  110    保留,默认 fDCOCLK/32
                  111    保留,默认 fDCOCLK/32
         FLLN  Bits9-0  乘数位,这些位设置DCO 的乘数值,N 必须大于 0。对FLLN写0,将使N 置 1。

 msp430f5419/38学习笔记之时钟系统
         SELREF  Bits6-4  FLL基准源选择。这些位选择 FLL基准时钟源。
                  000     XT1CLK
                  001     保留备用,默认是 XT1CLK 
                  010     REFOCLK
                  011    保留备用,默认是 REFOCLK
                  100    保留备用,默认是 REFOCLK
                  101     XT2CLK(如果可用),否则 REFOCLK 
                  110    保留备用 XT2CLK(如果可用),否则 REFOCLK
                  111    无选项,只针对F543X以及F541x非A版本,XT2CLK(如果可用),否则 REFOCLK

     FLLREFDIV  Bits2-0  FLL 基准源分频,定义fFLLREFCLK分频因子,分频后的频率就被用作FLL基准频率
                  000    fFLLREFCLK/1
                  001    fFLLREFCLK/2 
                  010    fFLLREFCLK/4
                  011    fFLLREFCLK/8
                  100    fFLLREFCLK/12
                  101    fFLLREFCLK/16
                  110    保留,默认 fFLLREFCLK/16
                  111    保留,默认 fFLLREFCLK/16
eg.

#include  "msp430x54x.h"

void main(void)
{
  WDTCTL = WDTPW+WDTHOLD;       // Stop WDT
  P2DIR |=BIT2;                // P1.0 output
  P11DIR |= 0x07;             // ACLK, MCLK, SMCLK set out to pins
  P11SEL |= 0x07;             // P11.0,1,2 for debugging purposes.

  UCSCTL3 |= SELREF_2;     // Set FLL reference = REFO, FLL基准源为REFOCLK,基准源分频因子n为默认1
  UCSCTL4 |= SELA_2;           // Set ACLK = REFO 
 

  __bis_SR_register(SCG0);         // Disable the FLL control loop
  UCSCTL0 = 0x0000;                // Set lowest possible DCOx, MODx
  UCSCTL1 = DCORSEL_5(0x0050);     // Select DCO range 16MHz operation, DCOx = 0, MODx = 0 
  UCSCTL2 = FLLD_1 + 244;          // Set DCO Multiplier for 8MHz,
                                  //DCO倍频后((DCOCLKDIV)为8M,FLLD_1分频值D=2                                                 // D*(N + 1) * fFLLREFCLK/n = fDCOCLK,2*(244 + 1) * 32768/1 = 16MHz                               //(N + 1) * fFLLREFCLK/n = fDCOCLKDIV,(244+1)*32768/1=8.355840M(Fdco)

  __bic_SR_register(SCG0);      // Enable the FLL control loop

   // Worst-case settling time for the DCO when the DCO range bits have been
   // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
   // UG for optimization.
   // 32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle

  __delay_cycles(250000);

 do      // Loop until XT1,XT2 & DCO fault flag is cleared
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);   // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;                                 // Clear fault flags 清除失效标志
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
   while(1)
  {
      P2OUT ^=BIT2;                         // Toggle P1.0
    __delay_cycles(600000);                 // Delay
  }
}

msp430f5419/38学习笔记之时钟系统

       XT2OFFG  Bit3  XT2 晶振故障标志位,假如该位置位,那么OFIFG 也置位。只要XT2 故障条件存

                      XT2OFFG 标志位就会置位,XT2OFFG 可以通过软件清零。 
                  0  上一次复位之后没有故障条件产生
                  1  XT2 故障,上一次复位之后出现故障条件 
     

     XT1HFOFFG  Bit2  XT1 晶振故障标志位(高频模式),假如该位置位,那么 OFIFG 也置位。只要XT1故障

                      条件存在 XT1HFOFFG 标志位就会置位,XT1HFOFFG 可以通过软件清零。
                  0   上一次复位之后没有故障条件产生 
                  1   XT1 故障(高频),上一次复位之后出现故障条件

  
     XT1LFOFFG  Bit1  XT1 晶振故障标志位(低频模式),假如该位置位,那么 OFIFG 也会置位。只要XT1

                      故障条件存在XT1LFOFFG 标志位就会置位,XT1LFOFFG 可以通过软件清零。

                 0    最近一次复位之后没有故障条件产生
                 1     XT1 故障(低频),最近一次复位之后出现 XT1(LF)故障条件

        DCOFFG  Bit0  DCO 故障标志,假如该位置位,那么OFIFG 也会置位。如果DCO={0}或者DCO={31},

                      DCOFFG 标志位就会置位,DCOOFFG可以通过软件清零。 
                 0   上一次复位之后没有故障条件产生
                 1   DCO 故障,上一次复位之后出现DCO 故障条件

 

   OFIFG 是晶振故障中断标志,属于用户非可屏蔽中断。上电复位或检测到振荡故障(XT1LFOFFG、XT1HFOFFG、XT2OFFG)时, 振荡故障中断标志 OFIFG置位。如果OFIFG置位,并且OFIE 置位,FIFG 将产生不可屏蔽中断请求(无论 GIE 状态,GIE 为可屏蔽中断的总中断允许位)

  

  OFIFG 位于特殊功能寄存器中断标志寄存器 SFRIFG1 中

msp430f5419/38学习笔记之时钟系统
        OFIFG  Bit1  晶振故障中断标志 
                0    没有中断产生
                1    有中断产生

       WDTIFG  Bit0  看门狗中断标志。看门狗模式下,WDTIFG位一直为1,直到由用户软件复位。在间隔模

                     式,通过响应中断服务程序复位或用户软件复位。由于~IFG1中的其他位可能用于其他的

                     模块,建议使用BIS.B或BIC.B指令来清除WDTIFG,而不是MOV B 或 CLR B指令。
                0    没有中断产生 
                1    有中断产生
       NMIIFG  Bit4  不可屏蔽中断引脚中断标志
                 0   没有中断产生
                 1   有中断产生

       VMAIFG  Bit3  空白内存访问中断标志
                0    没有中断产生 
                1    有中断产生

 

    对应特殊功能寄存器中的中断使能寄存器

msp430f5419/38学习笔记之时钟系统
       ACCVIE  Bit5  FLASH控制器非法访问中断使能
                0    中断禁止
                1    中断允许 
        NMIIE  Bit4  不可屏蔽中断引脚中断使能
                 0   中断禁止
                 1   中断允许 
        VMAIE  Bit3  空白内存访问中断使能
                 0   中断禁止
                 1   中断允许
         OFIE  Bit1  晶振失效中断使能
                0   中断禁止
                1   中断允许 
       WDTIE  Bit0  看门狗定时器中断使能。该位使看门狗工作在间隔定时器模式下,如果设置在看门狗模

                    式,无需将该位置位。由于~IE1可能用于其他模块,建议使用BIS  B 或BIC  B 来置位或

                    清零,而不是 MOV  B 或CLRB指令。
               0    中断禁止
               1    中断允许

  2.8 UCS模块自动失效安全操作

      UCS 中模块有振荡器实现失效时的自动保护特性。这个功能可以检测 XT1、DCO、XT2 的振荡器故障,如图所示:

msp430f5419/38学习笔记之时钟系统

      失效条件有: 

      XT1 在 LF模式下低频振荡失效(XT1LFOFFG);
      XT1 在 HF模式下高频振荡失效(XT1HFOFFG);
      XT2 高频振荡失效(XT2OFFG);
      DCO 失效标志(DCOFFG);

    如果相应的振荡功能打开但不能正常运行,则相应的晶振失效位 XT1LFOFFG、XT1HFOFFG 和XT2OFFG 将置位。而且一旦置位,失效标志(OFIFG)则不论失效条件是否还存在,都将一直保持置位,直到软件复位。如果用户清除了失效标志位,但失效条件依然存在的话,则失效标志位会自动重新置位,否则,保持清零。

    当选择 LF 模式下的 XT1 作为 FLL的参考信号源时,晶振失效将使 FLL 的参考信号源 FLLREFCLK切换到REFO,同时XT1LFOFFG 置位;当选择 HF模式下的 XT1 作为 FLL的参考信号源时,XT1失效时将导致 FLLREFCLK 信号丢失,FLL 继续倒数到 0,并尝试锁定 FLLREFCLK 和 DCOCLK/(D×[N+1]),DCO 降到最低频率的节拍位置(DCO 被清除),DCOFFG 置位;对于给定的 DCO 频率范围,如果 DCO倍频器的值过高,使 DCO频率达到了最高的节拍位置(UCSCTL0.12~UCSCTL0.8 置位),DCOOFF 也同样会置位。DCOFFG 置位后将一直保持,直到软件将其清除,如果用户清除了 DCOFFG 位,但是故障条件依然存在的话,DCOFFG 会再次置位,否则保持清零,XT1HFOFFG 置位。

    当使用XT2 作为FLL的参考信号源时,其操作也同样如此。

    上电复位或检测到振荡故障(XT1LFOFFG、   XT1HFOFFG,、 XT2OFFG)时,振荡故障中断标志 OFIFG置位。如果OFIFG 置位, 并且OFIE 置位, OFIFG 将产生不可屏蔽中断请求。 中断允许后,如前面的 MSP430系列一样,OFIE 不会自动复位,这是由不可屏蔽中断电路产生的,此时,OFIE 必须由软件复位。具体的时钟故障源可以通过检查相应的时钟故障标志位来确定。

    如果检测到 MCLK 时钟源振荡故障,将自动切换到DCO 时钟(DCOCLKDIV)作为除 XT1 低频模式外的所有的时钟源;如果MCLK 来自于低频模式的 XT1,振荡故障将自动转换 REFO作 MCLK时钟源。这并不会改变SELM的设置,此时必须由软件处理。

    如果检测到 SMCLK 时钟源振荡故障,将自动切换到 DCO 时钟(DCOCLKDIV)作为除 XT1 低频模式外的所有的时钟源;如果SMCLK 来自于低频模式的XT1,振荡故障将自动转换 REFO作 SMCLK时钟源。这同样不会改变SELS的设置,也必须由软件处理。

   如果检测到 ACLK 时钟源振荡故障,将自动切换到DCO 时钟(DCOCLKDIV)作为除 XT1 低频模式外的所有的时钟源;如果 ACLK 来自于低频模式的 XT1,振荡故障将自动转换 REFO作 ACLK时钟源。SELA的设置不会改变,需要软件来处理这种情况。

 

  2.9 在低功耗模式下的 FLL、外部模块的请求操作

    如果 SCG1、CPUOFF、OSCOFF 置位,中断服务请求将其清除,但是 SCG0 除外,也就是说,当从LPM1、2、3、4进入中断服务程序后,FLL仍然禁止,此时 DCO 工作在之前 UCSCTL0 和 UCSCTL1 寄存器设置的模式下;此时如果需要FLL工作,则可以由用户软件清除 SCG0 位。

    外部模块可以自动的从UCS模块中请求时钟源,而不用关心当前的工作模式。

 

msp430f5419/38学习笔记之时钟系统

     外围模块可以通过ACLK_REQ、MCLK_REQ、SMCLK_REQ 这三个控制位中的任何一个来产生请求信号,这个请求信号是建立在相应模块时钟选择和配置的基础上的。例如:如果定时器选择了ACLK 作为时钟源,定时器允许时,定时器会向UCS系统发出ACLK_REQ请求信号,此时,UCS则不管当前LPM的设置,都会允许输出ACLK 信号。

    来自外围模块的任何时钟请求信号都将导致其相关的时钟停止信号忽略,但是并不改变时钟停止控制位的设置。例如,某外围模块可能需要当前被 OSCOFF 停止的 ACLK 信号(OSCOFF=1),这时外围模块可以请求一个 ACLK_REQ产生的 ACLK,此时 OSCOFF 位无效,因此 ACLK 对发出请求的外围模块就是可用的,OSCOFF 仍保持当前值。 

    如果请求的时钟是不活动的,软件不可屏蔽中断处理程序就必须要处理这个请求。在前面的例子中,如果 ACLK 来自 XT1,且 XT1 是禁止的,此时将产生一个振荡失效标志,此时需要软件处理。由于看门狗的有安全性的要求,如果先前选择的时钟源不可用,将自动选择VLOCLK 作为时钟源。由于有时钟请求信号这个特性,所以在实际应用中,要注意进入低功耗模式的情况。虽然选择了低功耗模式,但时钟请求造成的功耗仍会大于数据手册中的值。

 

  2.10 与时钟、FLL 有关的状态寄存器(SR)

msp430f5419/38学习笔记之时钟系统

  SCG1  系统时钟发生器1,当置位时,如果 MCLK 或SMCLK 没有使用 DCOCLK 时将关闭 DCO的直流发生器     

  SCG0  系统时钟发生器0,当置位时,将关闭 FLL模块

  OSCOFF  晶振关闭,当置位时,如果MCLK 或 SMCLK 没有使用 LFXT1CLK 时将关闭 LFXT1晶振震荡器

  CPUOFF  CPU 关闭位,当置位时,将关闭CPU

   GIE   总中断允许位,当置位时,将允许所有的可屏蔽中断,否则将禁止所有可屏蔽中断。

 

eg.(启用 XT1)

void HardInit(void)
{
   __disable_interrupt();

   WDTCTL = WDTPW + WDTHOLD;//看门狗禁止。
   SetVCoreUp(PMMCOREV_3);
 
   P7SEL |= 0x03;                            // Select XT1
   UCSCTL6 &= ~(XT1OFF);                     // XT1 On
   UCSCTL6 |= XCAP_3;                        // 0x000C 选择XT1由内部晶振提供、及振荡电容选择

 do                                       // Loop until XT1 fault flag is cleared
 {
  UCSCTL7 &= ~XT1LFOFFG;                  // Clear XT1 fault flags
 }
        while (UCSCTL7&XT1LFOFFG);               // Test XT1 fault flag
  
 UCSCTL3 |= SELREF_2;                      // Set DCO FLL reference = REFO
 UCSCTL4 |=SELA__XT1CLK ;                   //Set ACLK = XT1CLK  MCLK 、SMCLK 默认

 __bis_SR_register(SCG0);                  // Disable the FLL control loop
 UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
 UCSCTL1 = DCORSEL_6;                      // Select DCO range 24MHz operation

 UCSCTL2 = FLLD_1 + 760;     // (N + 1) * FLLRef = Fdco(DCOCLKDIV) (760+ 1) * 32768 = 24.936448MHz
                             // Fdcoclkdiv*D=Fdcoclk  Set FLL Div = fDCOCLK/2 D=2

 __bic_SR_register(SCG0);                  // Enable the FLL control loop
 __delay_cycles(782000);

  // Loop until XT1,XT2 & DCO stabilizes
   do
   {
     UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
                                              // Clear XT2,XT1,DCO fault flags
     SFRIFG1 &= ~OFIFG;                      // Clear fault flags
   }
   while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
  __enable_interrupt(); 
 


关键字:msp430f5419  时钟系统 引用地址:msp430f5419/38学习笔记之时钟系统

上一篇:KeilMDK5生成.bin文件的简单教程
下一篇:msp430f5419/38学习笔记之USCI:UART模式

推荐阅读

W. L. Gore & Associates推出GORE® PolyVent XS:一种卡扣型防水防尘透气产品,它是GORE® 防水防尘透气产品组合的新品,性能稳健而又经久耐用,值得一提的是其体积相较于之前推出的PolyVent Standard足足缩小了30%,更小巧的体积在设计适用于户外电子设备的小型化轻型外壳时,为防水透气产品的放置提供了更多可能。伴随着我国城镇化的高速发展,...
2003年1月,Mick Mountz建立了Kiva System,成立的前几年,Kiva机器人一直不温不火甚至对于多数人来说是一个想象中的产品,当时的Kiva不会想到9年后它会被国际电商亚马逊纳入麾下——2012年,亚马逊7.75亿美元收购了Kiva System,并将其整编为旗下机器人部门Amazon Robotics。这一举动或多或少要为近几年中国仓储自动化的火热负责。众所周知,中国仓...
姗姗来迟的iPhone 12终于揭开了面纱,10月14日凌晨,苹果公司CEO库克正式发布了苹果历史上第一代5G手机。与此前相比,今年的iPhone不仅逆潮流回归小尺寸,价格方面也没有明显下调。不过,库克依然表现得很自信:“今天标志着iPhone的新纪元,这对我们所有人来说,都是一个具有划时代意义的激动时刻。”  但市场似乎并不认同,发布会前一天,苹果公司股价...
天眼查显示,近日,深圳市光舟半导体技术有限公司(以下简称“光舟半导体”)发生工商变更,新增字节跳动子公司北京量子跃动科技有限公司等为股东,同时光舟半导体注册资本由299.72万人民币增至约343.12万人民币,增幅约14.48%。图片来源:天眼查据悉,光舟半导体成立于2020年1月,由AR光学专家朱以胜联合业界科学家共同创办,致力于光波导(衍射光学芯片...

史海拾趣

问答坊 | AI 解惑

意法半导体与飞思卡尔开展汽车应用技术合作

2月28日消息,飞思卡尔 (NYSE:FSL,FSL.B) 与意法半导体(简称ST,NYSE:STM)将携手开展一项广泛的联合创新计划,加强各自在汽车应用领域的实力。两家公司将联合组建一支微控制器设计团队,共同利用处理工艺技术,共享知识产权,其中包括大功率MOS技 ...…

查看全部问答∨

可见光传感器白皮书(中文)

样片申请0755-83223160刘小姐 …

查看全部问答∨

.CC .TV两种最具特色的域名

先不做介绍,大家看到.cc和.tv会想到什么呢?觉得这样的域名怎么样呢? 首先他们都是两个字母的域名后缀,非常容易记。.CC两个字母都是一样的,看过后肯定就不会忘了,TV 更是容易了,TV是电视的意思,两个连在一起甚至就是CCTV,哈哈,应该很熟 ...…

查看全部问答∨

一只可怜的小鸟惨死在本地网线路上

鸟被电死的概率有多大? 找了个专业解释: 我们应该注意这样一件事:当鸟儿停在电线上时,鸟儿的身体就好像是电路里的一个分路,鸟的两脚之间的那部份很短的电线也是电路里的一个分路,因为电阻的大小与导体的长短有关,导体越短,电阻越小 ...…

查看全部问答∨

哪位大侠能给个debugman的邀请码

冒昧在这儿发个技术不相关的贴 如题 哪位大侠能给个debugman的邀请码 我的联系方式 hudson0908@yahoo.co.jp…

查看全部问答∨

TI的StellarisWare 代码示例貌似下不了了

TI网站上的StellarisWare 代码示例貌似下不了了,怎么都是灰色的,点击不了,请指点!谢谢!…

查看全部问答∨

16种PCB天线包分享(来自TI)

TI的PCB天线参考设计,频率覆盖136M~2480Mhz,文件为gerber格式。 工艺参数见文件包中的readme.txt说明。 附图: 附件: …

查看全部问答∨

FPGA时序分析问题

刚学FPGA没有多久,请问怎么进行FPGA的时序分析,比如:建立时间和保持时间等。谢谢…

查看全部问答∨

12864液晶

最近程序出了点问题,求高人给一两个12864整行移动显示和刷屏显示程序参考一下。…

查看全部问答∨

c5402的脚本文件

用CCS4跑自己的做的DSP板子,但是没有相关的文件(如脚本文件等),请哪位发给我下,谢谢了。…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved