关于单片机msp430的时钟资料

上传人:痛*** 文档编号:87852945 上传时间:2022-05-10 格式:DOC 页数:20 大小:515.50KB
返回 下载 相关 举报
关于单片机msp430的时钟资料_第1页
第1页 / 共20页
关于单片机msp430的时钟资料_第2页
第2页 / 共20页
关于单片机msp430的时钟资料_第3页
第3页 / 共20页
点击查看更多>>
资源描述
-msp430f5419/38学习笔记之时钟系统(2011-11-30 10:41:30) 标签:msp430f541*msp430f543*ucs分类:msp430时钟系统注:msp5419/38中,如果你使用SMCLK做TIMER_A的时钟,则进入低功耗3或低功耗4是不会把SMCLK关掉的,这点5系列和其他系列的不一样。 UCS模块是一个低本钱超低功耗系统,通过选择使用3个部时钟信号,用户可以得到性能和功耗的最正确平衡点。UCS可以由软件配置其工作模式,如配置成:不需要任何外部器件、使用 1或 2个外部晶振等。一、时钟系统 UCS模块具有5个时钟源:*T1CLK:低频/高频振荡器,既可以与低频 32768HZ钟振、标准晶振、外部振荡器,又可以与外部4M-32MHZ时钟源一起使用,*T1CLK可以作为FLL模块部的参考时钟。有些芯片*T1CLK只允许使用外部的低频晶振,具体可参考数据手册;*T2CLK:可选高频振荡器,可与标准晶振,振荡器或者 4MHZ32MHZ外部时钟源一起使用;VLOCLK:部低功耗、低频振荡器,频率典型值为10KHZ;REFOCLK:部低频振荡器,典型值为 32768HZ,可作为 FLL基准时钟源;DCOCLK:可以通过 FLL来稳定的部数字控制振荡器DCO;DCOCLK经过 FLL分频后可得DCOCLKDIV。 UCS模块可以提供3种时钟信号:ACLK:辅时钟;MCLK:系统主时钟;SMCLK:子系统主时钟。二、UCS操作 PUC之后,UCS的默认配置模式如下:*T1CLK 选择LF模式下的*T1作为时钟源,ACLK 选择 *T1CLK 作为时钟源;MCLK 选择DCOCLKDIV作为时钟源;SMCLK 选择DCOCLKDIV作为时钟源;FLL操作使能,FLL基准时钟FLLREFCLK选择*T1CLK;*IN 和 *OUT作普通IO 口使用,制止了 *T1 功能,直到I/O 口重新配置为 *T1 模式;如果有 *T2IN 和*T2OUT,则一并配置为普通 IO 口,制止 *T2 功能。如上所述:默认状态下:*IN/*OUTP7.0/1、*T2IN/*T2OUT(P5.2/3) 为普通 IO口,振荡功能制止;FLL基准源、ACLK时钟源是 *T1CLK,晶振失效逻辑控制位作用下均切换到 REFOCLK,ACLK = 32768Hz;默认下FLL倍频为:31FLLN值,DCOCLKDIV=(32+1)*32768 =1.047856MHz;默认下分频值 D=2FLLD值,DCOCLK = 2*DCOCLKDIV = 2.097152MHz。默认选择了使用 *T1的 FLL操作,为了启用 *T1功能,必须将与 *T1引脚对应的 PSEL置位。当 *T1CLK 使用 32768Hz 晶振时,由于*T1不会立即稳定,失效逻辑控制位会立即选择 REFOCLK 作为 ACLK 时钟源。一旦晶体振荡稳定后,由于 FLL的作用,MCLK 和SMCLK 都将稳定在 1.047586MHz,Fdco稳定在 2.097152MHz。状态存放器SCG0,SCG1,OSCOFF和CPUOFF用于配置 MSP430的工作模式,使能和制止 UCS模块中的局部功能参考系统复位、中断和操作模式。UCS 模块可以在程序运行中的任何时候进展配置和修改配置,配置使用存放器 UCSCTL0UCSCTL8。 2.1 UCS模块在超低功耗方面的特性为了保持长时间工作或降低功耗而采用低时钟频率;快速响应时间和快速数据处理能力需要高时钟频率;适应各种工作温度和供电电压的稳定时钟;低本钱应用中使用准确度要求较少器件的时钟。 2.2 VLO 部低功耗低频振荡器部 VLO能够在不需要任何外接晶振的情况下,提供 10KHz的时钟,在对时钟精度不敏感而对本钱又非常敏感的场合,使用 VLO是一个非常好的选择。当 VLO 作为 ACLK、MCLK、SMCLKSELA=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作为FLLREFCLKSELREF=2时钟源,DCO作为ACLK的时钟源(SE LA=3,4 OSCOFF=0)在活动模式下,REFO作为FLLREFCLKSELREF=2时钟源,DCO 作为 MCLK的时钟源(SELA=3,4 CPUOFF=0);活动模式到LPM1模式,REFO作为FLLREFCLKSELREF=2时钟源,DCO作为SMCLK时钟源(SELA=3,4 SMCLKOFF=0)对于ACLK、MCLK、SMCLK的时钟源的选择由 UCSCTL4 控制存放器决定: SELA Bits10-8 选择ACLK 的时钟源 000 *T1CLK 001 VLOCLK 010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 *T2CLK可用,否则是DCOCLKDIV 110保存,*T2CLK可用,否则是DCOCLKDIV 111 保存,*T2CLK可用,否则是DCOCLKDIV SELS Bits6-4选择SMCLK 的时钟源 000 *T1CLK 001 VLOCLK 010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 *T2CLK可用,否则是DCOCLKDIV 110 保存。*T2CLK可用,否则是DCOCLKDIV 111 保存。*T2CLK可用,否则是DCOCLKDIV SELM Bits2-0 选择MCLK 的时钟源 000 *T1CLK 001 VLOCLK010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 *T2CLK可用,否则是DCOCLKDIV 110 保存,*T2CLK可用,否则是DCOCLKDIV 111 保存,*T2CLK可用,否则是DCOCLKDIV ACLK、MCLK、SMCLK 时钟的输出对应 P11.0/1/2UCSCTL5 控制存放器决定: 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/2010 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/32111 保存。默认是 fMCLK/32 2.4 *T1 振荡器 *T1 为了支持低功耗模式,而支持在低频模式下*TS=0使用 32768Hz 时钟。晶振连接到 *IN 和*OUT,此时不需要任何其他外围器件,软件可以通过 *CAP 位来设置 LF模式下 *T1 晶振的部负载电容,负载电容可以由软件选择为2pF,6pF,9pF,12pF典型值,也可以根据需要增加外接电容。一些芯片在HF模式时*TS=1也支持高速晶振或者振荡器,高频晶振或振荡器连接到*IN 和 *OUT引脚时,两端口都需要接外部电容,电容的大小需要根据晶振或者振荡器的规格来选择。 LF 模式下,可以通过 *T1DRIVE位来提高 *T1 驱动能力。在上电时,为快速可靠启动可以设置 *T1DRIVE 位来快速启动。如果用户为了降低功耗,可以在需要时降低其驱动能力。在 HF模式时,可以通过选择适当的*T1DRIVE 值来满足不同围的晶振或振荡器。无论是在LF还是HF模式下,都可以通过配置 *T1BYPASS 位,*T1 可以使用加载在 *IN脚上的外部时钟信号。当使用外部时钟信号时,外部信号的频率和选择的工作模式必须与数据手册上的参数相符合,当在BYPASS模式时,将关闭*T1 的振荡器电源。上电时,默认操作是*T1,LF模式,但是*T1 将保持制止状态,直到与 *T1复用的端口设置成 *T1 模式。复用 IO 口的配置由 *IN 和 *T1BYPASS 相关的 PSEL 决定。PSEL 置位,*1IN 和 *1OUT 端口将配置成 *T1 模式。如果 *T1BYPASS 也置位,*T1 将配置成 BYPASS 模式,*T1 相对应的振荡器将断电。在 BYPASS 模式下,*IN 可以接收外部时钟信号的输入,*OUT 配置成普通 IO口模式,这时与*1OUT相对应的P*SEL位可以不用关心。如果与*T1IN 对应的PSEL位清零,*T1IN 和 *T1OUT均被配置为普通 IO 口模式,*T1 将制止。2.5*T2 振荡器*些芯片有第二个晶振*T2, *T2CLK源自 *T2,且在高频模式下, *T2的特性和*T1一样, *T2DRIVE位用来选择*T2的频率围。通过配置 *T1BYPASS 位,可以使 *T2 可以使用加载在 *IN 脚的外部时钟信号,当使用外部时钟信号时,外部信号的频率必须和选择的工作模式在数据手册上的参数相符合。 *T2管脚和普通I/O 口复用。上电后,默认为 *T2 模式,但是 *T2会一直保持制止状态,直到与 *T2复用的端口通过PSEL设置成*T2模式。复用IO口的配置由 *IN和 *T2BYPASS相关的PSEL决定,PSEL置位,*2IN 和*2OUT端口将配置成*T2模式、如果 *T2BYPASS也置位,*T2 将配置成 BYPASS模式,*T2 相对应的振荡电路将停顿工作,在 BYPASS 模式下,*IN 可以接收外部时钟信号输入,*2OUT 配置成普通IO 口模式,这时与*OUT相对应的 PSEL位可以不用关心。如果与 *T2IN 对应的 PSEL 位清零,*T2IN 和 *T2OUT 均被配置为普通 IO 口模式。关于 *T1、*T2 振荡器的配置由 UCSCTL6 控制存放器决定: *T2DRIVE Bits15-14 *T2 的振荡电流可以调到需要的值。最初为了快速稳定起振,以最大电流开场。需要时,用户软件可减小驱动。 00 最低电流消耗。 *T2的晶振频率围在4MHz到8MHz。 01 驱动力稍增大。 *T2的晶振频率围在8MHz到6MHz。 10 驱动力增大。 *T2的晶振频率围在16MHz到24MHz。 11驱动力和电流消耗均到达最大。*T2 的晶振频率围在24MHz 到 32MHz。*T2BYPASS Bit12 *T2 旁路模式选择0 *T2 由部晶振提供。 1 *T2 由外部引脚输入。 *T2OFF Bit8 关闭*T2晶振。 0 如果*T2 通过端口选择,并且非旁路模式,则 *T2被翻开。 1 如果*T2 没有被用作 ACLK、 MCLK、以及SMCLK 的时钟源或者没有用作 FLL的基准源,*T2 关闭。*T1DRIVE Bits7-6 *T1的振荡电流可以调到需要的值。最初为了快速稳定起振,以最大电流开场。需要时,用户软件可减小驱动。 00 *T1 低频模式下,最低电流消耗 *T1 在高频模式下晶振频率围在4MHz-8MHz 01 *T1 低频模式下,驱动力稍增大 *T1在高频模式下的晶振频率围在8MHz-16MHz 10*T1 低频模式下,驱动力增大 *T1 在高频模式下晶振频率围在 16-24MHz 11 驱动力和电流消耗均到达最大。*T1在高频模式下晶振频率围在 24MHz-32MHz *TS Bit5 *T1 模式选择 0 低频模式。*CAP定义 *IN 和*OUT两个引脚的电容。 1 高频模式。该位没有使用。 *T1BYPASS Bit4 *T1 旁路模式 0 *T1 有部晶振提供。 1 *T1 由外部引脚输入。*CAP Bit3-2 振荡电容选择,这些位选择LF模式下用于 LF振荡器的电容。等效电容 Ceff= (C*in+2pF)/2。前提是假定 C*in=Cout,并且由于封装以及布板的原因产生 2pF左右的寄生电容。关于典型部及有效电容的细节,参见数据手册的相关章节。SMCLKOFF Bit1 SMCLK 关闭。该位用来关闭 SMCLK。 0SMCLK 开启 1SMCLK 关闭 *T1OFF Bit0 关闭*T1晶振 0如果*T1 已经通过端口选择,并且非旁路模式,则*T1 被翻开。 1如果*T1没有用作ACLK、MCLK以及SMCLK的时钟源或没有用作FLL的校准源,*T1关闭2.6 DCO 数字控制振荡器 DCO 是部集成的数字频率振荡器。DCO 频率可以通过软件配置 DCORSEL、DCO 和 MOD 位来调整,DCO 频率可以经过 FLL 得到稳定的多种频率FLLREFCLK/n,这点是可以通过软件选择的。FLL可以通过SELREF位来选择的不同参考时钟源。参考时钟源包含*T1、REFOCLK 或者*T2CLK如果可用。n 的值由 FLLREFDIVn=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 定义了 N0 时的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后,DCORSEL* = 2、DCO* = 0。DCOCLKDIV为 MCLK 和 SMCLK 提供时钟源。由于 CPU 执行代码的时钟来自MCLK,而MCLK 由DCO提供,所以从上电复位到执行代码的时间小于 5us。 DCOCLK 的频率由以下方式设置:1DCORSEL位为3时,从8个频率围中选择 1 个频率。具体可查看数据手册。 2DCORSEL选择5,将DCO 分成 32个频率级别,相邻两个级大约相差 8%。 3MOD 为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+MODtDCO+1 调制器操作如下图:当 FLL 模块允许时下,DCO 调制器是由 FLL 硬件控制。如果不希望 FLL 工作,DCO 调制器设置需由软件来配置。2.7 FLL 锁频环锁频环可以对频率积分器进展连续加或减。用于驱动 DCO 的频率积分器的值可以从存放器UCSCTL0, UCSCTL1 MOD*和DCO*位中读出。计数器的值可以用 fFLLREFCLK/n (n = 1, 2, 4, 8, 12, or 16)加一调整或者用 fDCOCLK/(D*(N+1)减一调整。积分器中的5位UCSCTL0812位用于设置 DCO 频率,DCO 设置了32 节拍,每一频率大约比前面的高出约8%,调制器混合两个相邻的DCO 频率产生 1个小数节拍。对于给定DCO 偏差围设定,为了使DCO 正常操作,要给 DCO 一段时间来稳定,一般需要 (n32)fFLLREFCLK个周期,在最坏情况下需要(n3232) fFLLREFCLK周期。其中的 n值由 FLLREFDIV*1、2、4、8、12、16来定义。 DCO Bits12-8 DCOtap选择,这些位可以选择DCOtap,在FLL操作中,可自动修改。 MOD Bits7-3 调制位计数器,这些位选择调制模式所有的MOD位在FLL操作中,自动修改。调制位计数器从 31 到0 时,DCO 存放器值增加。调制位计数器从 0减至最大计数时, DCO同样减小。 DCORSEL Bits6-4 DCO 频率围选择,这些位选择操作的 DCO频率围。 DISMOD Bits0 调整器,该位使能/制止调制器。 0 调整器使能 1 调整器制止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。 SELREF Bits6-4 FLL基准源选择。这些位选择 FLL基准时钟源。 000 *T1CLK 001 保存备用,默认是 *T1CLK 010 REFOCLK 011 保存备用,默认是 REFOCLK 100 保存备用,默认是 REFOCLK 101 *T2CLK如果可用,否则 REFOCLK 110 保存备用 *T2CLK如果可用,否则 REFOCLK 111 无选项,只针对F543*以及F541*非A版本,*T2CLK如果可用,否则 REFOCLKFLLREFDIV Bits2-0 FLL 基准源分频,定义fFLLREFCLK分频因子,分频后的频率就被用作FLL基准频率 000 fFLLREFCLK/1 001 fFLLREFCLK/2010 fFLLREFCLK/4 011 fFLLREFCLK/8 100 fFLLREFCLK/12 101 fFLLREFCLK/16 110 保存,默认 fFLLREFCLK/16 111 保存,默认 fFLLREFCLK/16eg.#include msp430*54*.hvoid main(void) WDTCTL = WDTPW+WDTHOLD; / Stop WDT P2DIR |=BIT2; / P1.0 outputP11DIR |= 0*07; / ACLK, MCLK, SMCLK set out to pins P11SEL |= 0*07; / 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 = 0*0000; / Set lowest possible DCO*, MOD* UCSCTL1 = DCORSEL_5(0*0050); / Select DCO range 16MHz operation, DCO* = 0, MOD* = 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 * 32 * 32 * f_MCLK / f_FLL_reference. See UCS chapter in 5* / UG for optimization. / 32 * 32 * 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle _delay_cycles(250000);do/ Loop until *T1,*T2 & DCO fault flag is cleared UCSCTL7 &= (*T2OFFG + *T1LFOFFG + *T1HFOFFG + DCOFFG); / Clear *T2,*T1,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 *T2OFFG Bit3 *T2 晶振故障标志位,假设该位置位,则OFIFG 也置位。只要*T2 故障条件存 *T2OFFG 标志位就会置位,*T2OFFG 可以通过软件清零。 0 上一次复位之后没有故障条件产生 1 *T2 故障,上一次复位之后出现故障条件*T1HFOFFG Bit2 *T1 晶振故障标志位高频模式,假设该位置位,则 OFIFG 也置位。只要*T1故障条件存在 *T1HFOFFG 标志位就会置位,*T1HFOFFG 可以通过软件清零。 0 上一次复位之后没有故障条件产生1*T1 故障高频,上一次复位之后出现故障条件*T1LFOFFG Bit1 *T1 晶振故障标志位低频模式,假设该位置位,则 OFIFG 也会置位。只要*T1故障条件存在*T1LFOFFG 标志位就会置位,*T1LFOFFG 可以通过软件清零。 0 最近一次复位之后没有故障条件产生 1 *T1 故障低频,最近一次复位之后出现 *T1LF故障条件 DCOFFG Bit0 DCO 故障标志,假设该位置位,则OFIFG 也会置位。如果DCO=0或者DCO=31, DCOFFG 标志位就会置位,DCOOFFG可以通过软件清零。0 上一次复位之后没有故障条件产生 1DCO 故障,上一次复位之后出现DCO 故障条件OFIFG 是晶振故障中断标志,属于用户非可屏蔽中断。上电复位或检测到振荡故障*T1LFOFFG、*T1HFOFFG、*T2OFFG时,振荡故障中断标志 OFIFG置位。如果OFIFG置位,并且OFIE 置位,FIFG 将产生不可屏蔽中断请求无论 GIE 状态,GIE 为可屏蔽中断的总中断允许位OFIFG 位于特殊功能存放器中断标志存放器 SFRIFG1 中 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 有中断产生对应特殊功能存放器中的中断使能存放器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 中模块有振荡器实现失效时的自动保护特性。这个功能可以检测 *T1、DCO、*T2 的振荡器故障,如下图:失效条件有: *T1 在 LF模式下低频振荡失效*T1LFOFFG; *T1 在 HF模式下高频振荡失效*T1HFOFFG; *T2 高频振荡失效*T2OFFG; DCO 失效标志DCOFFG;如果相应的振荡功能翻开但不能正常运行,则相应的晶振失效位 *T1LFOFFG、*T1HFOFFG 和*T2OFFG 将置位。而且一旦置位,失效标志OFIFG则不管失效条件是否还存在,都将一直保持置位,直到软件复位。如果用户去除了失效标志位,但失效条件依然存在的话,则失效标志位会自动重新置位,否则,保持清零。中选择 LF 模式下的 *T1 作为 FLL的参考信号源时,晶振失效将使 FLL 的参考信号源 FLLREFCLK切换到REFO,同时*T1LFOFFG 置位;中选择 HF模式下的 *T1 作为 FLL的参考信号源时,*T1失效时将导致 FLLREFCLK 信号丧失,FLL 继续倒数到 0,并尝试锁定 FLLREFCLK 和 DCOCLK/(DN+1),DCO 降到最低频率的节拍位置DCO 被去除,DCOFFG 置位;对于给定的 DCO 频率围,如果 DCO倍频器的值过高,使 DCO频率到达了最高的节拍位置UCSCTL0.12UCSCTL0.8 置位,DCOOFF 也同样会置位。DCOFFG 置位后将一直保持,直到软件将其去除,如果用户去除了 DCOFFG 位,但是故障条件依然存在的话,DCOFFG 会再次置位,否则保持清零,*T1HFOFFG 置位。当使用*T2 作为FLL的参考信号源时,其操作也同样如此。上电复位或检测到振荡故障*T1LFOFFG、 *T1HFOFFG,、 *T2OFFG时,振荡故障中断标志 OFIFG置位。如果OFIFG 置位,并且OFIE 置位, OFIFG 将产生不可屏蔽中断请求。中断允许后,如前面的 MSP430系列一样,OFIE 不会自动复位,这是由不可屏蔽中断电路产生的,此时,OFIE 必须由软件复位。具体的时钟故障源可以通过检查相应的时钟故障标志位来确定。如果检测到 MCLK 时钟源振荡故障,将自动切换到DCO 时钟DCOCLKDIV作为除 *T1 低频模式外的所有的时钟源;如果MCLK 来自于低频模式的 *T1,振荡故障将自动转换 REFO作 MCLK时钟源。这并不会改变SELM的设置,此时必须由软件处理。如果检测到 SMCLK 时钟源振荡故障,将自动切换到 DCO 时钟DCOCLKDIV作为除 *T1 低频模式外的所有的时钟源;如果SMCLK 来自于低频模式的*T1,振荡故障将自动转换 REFO作 SMCLK时钟源。这同样不会改变SELS的设置,也必须由软件处理。如果检测到 ACLK 时钟源振荡故障,将自动切换到DCO 时钟DCOCLKDIV作为除 *T1 低频模式外的所有的时钟源;如果 ACLK 来自于低频模式的 *T1,振荡故障将自动转换 REFO作 ACLK时钟源。SELA的设置不会改变,需要软件来处理这种情况。2.9 在低功耗模式下的 FLL、外部模块的请求操作如果 SCG1、CPUOFF、OSCOFF 置位,中断效劳请求将其去除,但是 SCG0 除外,也就是说,当从LPM1、2、3、4进入中断效劳程序后,FLL仍然制止,此时 DCO 工作在之前 UCSCTL0 和 UCSCTL1 存放器设置的模式下;此时如果需要FLL工作,则可以由用户软件去除 SCG0 位。外部模块可以自动的从UCS模块中请求时钟源,而不用关心当前的工作模式。外围模块可以通过ACLK_REQ、MCLK_REQ、SMCLK_REQ 这三个控制位中的任何一个来产生请求信号,这个请求信号是建立在相应模块时钟选择和配置的根底上的。例如:如果定时器选择了ACLK 作为时钟源,定时器允许时,定时器会向UCS系统发出ACLK_REQ请求信号,此时,UCS则不管当前LPM的设置,都会允许输出ACLK 信号。来自外围模块的任何时钟请求信号都将导致其相关的时钟停顿信号忽略,但是并不改变时钟停顿控制位的设置。例如,*外围模块可能需要当前被 OSCOFF 停顿的 ACLK 信号OSCOFF=1,这时外围模块可以请求一个 ACLK_REQ产生的 ACLK,此时 OSCOFF 位无效,因此 ACLK 对发出请求的外围模块就是可用的,OSCOFF 仍保持当前值。如果请求的时钟是不活动的,软件不可屏蔽中断处理程序就必须要处理这个请求。在前面的例子中,如果 ACLK 来自 *T1,且 *T1 是制止的,此时将产生一个振荡失效标志,此时需要软件处理。由于看门狗的有平安性的要求,如果先前选择的时钟源不可用,将自动选择VLOCLK 作为时钟源。由于有时钟请求信号这个特性,所以在实际应用中,要注意进入低功耗模式的情况。虽然选择了低功耗模式,但时钟请求造成的功耗仍会大于数据手册中的值。 2.10 与时钟、FLL 有关的状态存放器SRSCG1 系统时钟发生器1,当置位时,如果 MCLK 或SMCLK 没有使用 DCOCLK 时将关闭 DCO的直流发生器 SCG0 系统时钟发生器0,当置位时,将关闭 FLL模块 OSCOFF 晶振关闭,当置位时,如果MCLK 或 SMCLK 没有使用 LF*T1CLK 时将关闭 LF*T1晶振震荡器 CPUOFF CPU 关闭位,当置位时,将关闭CPU GIE总中断允许位,当置位时,将允许所有的可屏蔽中断,否则将制止所有可屏蔽中断。eg.启用 *T1void HardInit(void) _disable_interrupt(); WDTCTL = WDTPW + WDTHOLD;/看门狗制止。 SetVCoreUp(PMMCOREV_3); P7SEL |= 0*03; / Select *T1 UCSCTL6 &= (*T1OFF); / *T1 On UCSCTL6 |= *CAP_3; / 0*000C选择*T1由部晶振提供、及振荡电容选择do / Loop until *T1 fault flag is clearedUCSCTL7 &= *T1LFOFFG; / Clear *T1 fault flags while (UCSCTL7&*T1LFOFFG); / Test *T1 fault flagUCSCTL3 |= SELREF_2; / Set DCO FLL reference = REFOUCSCTL4 |=SELA_*T1CLK ; /Set ACLK = *T1CLKMCLK 、SMCLK 默认_bis_SR_register(SCG0); / Disable the FLL control loopUCSCTL0 = 0*0000; / Set lowest possible DCO*, MOD*UCSCTL1 = DCORSEL_6; / Select DCO range24MHz operationUCSCTL2 = 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 *T1,*T2 & DCO stabilizes do UCSCTL7 &= (*T2OFFG + *T1LFOFFG + *T1HFOFFG + DCOFFG); / Clear *T2,*T1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag_enable_interrupt();. z
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!