历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2018年10月15日 | msp430f5419/38学习笔记之时钟系统

2018-10-15 来源:eefocus

时钟系统 注: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(); 
 


推荐阅读

史海拾趣

COTO TECHNOLOGY公司的发展小趣事

随着电子行业的不断发展,小型化、集成化成为产品设计的趋势。COTO TECHNOLOGY紧跟时代潮流,于1983年成功研发出史上首款表面贴装干簧继电器。这一技术的突破不仅提高了产品的生产效率,更使得COTO的产品在小型化方面走在了行业前列。这一创新不仅增强了COTO在市场上的竞争力,也进一步巩固了其在干簧继电器领域的领导地位。

展恒电子(Broadic)公司的发展小趣事

自2010年起,展恒电子专注于智能仪表行业,凭借其核心技术和横向联合多家关键器件供应商的策略,为水、电、气、热四表市场提供整套解决方案。随着业务的不断拓展,公司逐渐积累了大量的行业知名客户,进一步巩固了其在智能仪表领域的领先地位。同时,公司还积极向新能源、物联网、安防家居等多个领域拓展,以实现业务的多元化发展。

AD Semiconductor公司的发展小趣事

展恒电子始终坚持以品质为核心,严格把控产品质量。在与上海芯北电子科技有限公司的合作中,双方共同保证产品品质的一致性、兼容性和安全性。在合作期间,展恒电子成功向客户供应了数百万片芯片,并得到了客户的高度认可和信任。这种对品质的坚持和追求,使得展恒电子在电子行业中赢得了良好的声誉,也为公司的长期发展奠定了坚实的基础。

这五个故事从不同角度展示了展恒电子(Broadic)在电子行业中的发展历程和成就,体现了其在技术创新、市场拓展、品质保证等方面的实力和努力。通过不断努力和创新,展恒电子已经在电子行业中取得了显著的成果,并将继续为行业的发展贡献自己的力量。

DIOTEC公司的发展小趣事

1973年,DIOTEC半导体股份有限公司在德国的海特尔斯海姆正式成立。公司创始人以半导体和整流产品的研发为起点,立志在电子行业中占据一席之地。在创立初期,DIOTEC就注重技术创新和品质控制,不断推出符合市场需求的高品质产品。凭借这种执着和坚持,DIOTEC逐渐在欧洲市场崭露头角。

港源(GANGYUAN)公司的发展小趣事

随着中国经济的快速崛起,电子市场需求不断增长。为了抓住这一机遇,DIOTEC于2005年在中国上海设立了分公司,即德欧泰克半导体(上海)有限公司。这家分公司凭借DIOTEC在全球的技术和品质优势,迅速在中国市场打开了局面。如今,德欧泰克半导体(上海)有限公司已经成为中国电子行业的重要供应商之一。

Everbuild公司的发展小趣事

Everbuild公司成立于2005年,创始人李明是一位对电子技术充满热情的年轻人。在创业初期,公司只有几个员工和一间狭小的办公室。李明带领团队日夜兼程地研发电子元器件,但由于资金短缺和市场竞争激烈,产品销量并不理想。然而,他们并没有放弃,通过不断的技术创新和成本控制,终于在一年后推出了一款具有竞争力的电源管理芯片,赢得了市场的认可。

问答坊 | AI 解惑

无线遥控玩具汽车源程序

无线遥控玩具汽车源程序。…

查看全部问答>

写一个API 来替代etherOutput()函数?

在tornado 2.2下以前的API etherOutput()没有了要怎么办?有类似的函数可以替代吗? etherOutput( ) - send a packet on an Ethernet interface SYNOPSIS STATUS etherOutput     (     struct ifnet   &nb ...…

查看全部问答>

keil

大家好,mov a,#88h       mov r0,#0h       movx @r0,a 我现在要在用Keil里的Memory里查看Pdata里0H的内容,X:0h查不到,那位兄弟帮下,谢谢了 …

查看全部问答>

关于MP3和手机的驱动不能识别的问题

我的电脑的操作系统是WINDOWS XP SP2 的版本的,我买的MP3和电脑相连,电脑提示没有驱动认识,我的手机和电脑相连电脑同样提示没有驱动认识连接的移动存储设备。这是怎么回事呀,是不是我的USB驱动的问题还是别的,朋友说要在电脑后面的USB接口插, ...…

查看全部问答>

如何将pc中的文件传到Pocket pc 2003 模拟器中的某个文件夹中

我要将PC上的文件传到ppc上安装,请教各位,如何将PC上的文件传到ppc的某个目录下,新手希望具体点,谢谢!…

查看全部问答>

STM32LSTM32W上市啦......

我公司是STM32芯片供应商   希望能够为你提供帮助    STM32F系列 STM32F100C8T6                       STM32F103C8T6 R8 RB RC RD RE V8 VB V ...…

查看全部问答>

谁画过STM32板子啊?想自己画一个问题好多..

找了好多资料都是99SE的.用手头的DXP打开.似乎好多东西会丢失.还有 板子上需要个48-70V转+-12 +5V电路.初步打算用DCDC变成5V再变换12.结果我DXP库里面居然没有moto的电源芯片库..找了半天资料才知道.DXP的库可以从官方下载.大虾勿笑... http://wik ...…

查看全部问答>

单片机高手进阶课件

分享给大家的东西!…

查看全部问答>

电脑鼠程序

电脑鼠连续转弯程序 我有  湖南省比赛第二名  要的密我 645112897…

查看全部问答>

出售自用的开发板与一些零器件

不再做技术,出一些自用的开发板与零器件!价格你来定!…

查看全部问答>