关于(单片机)msp430的时钟资料

关于(单片机)msp430的时钟资料
关于(单片机)msp430的时钟资料

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

(2011-11-30 10:41:30)

分类: msp430

标签:

msp430f541x

msp430f543x

ucs

时钟系统注: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.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的时钟源(SE LA=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 控制寄存器决定:

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

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 XT

2 由外部引脚输入。

XT2OFF Bit8 关闭XT2晶振。

0 如果XT2 通过端口选择,并且非旁路模式,那么 XT2被打开。

1 如果XT

2 没有被用作 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 调制器设置需由软件来配置。

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)来定义。

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 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

}

}

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

XT2OFFG 标志位就会置位,XT2OFFG 可以通过软件清零。

0 上一次复位之后没有故障条件产生

1 XT

2 故障,上一次复位之后出现故障条件

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 中

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

失效条件有:

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模块中请求时钟源,而不用关心当前的工作模式。

外围模块可以通过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 是禁止的,此时将产生一个振荡失效标志,此时需要软件处理。由于看门狗的有安全性的要求,如果先前选择的时钟源不

MSP430单片机实验报告v3.0

MSP430单片机课程设计 一.设计要求 数字温度计 (1)用数码管(或LCD)显示温度和提示信息; (2)通过内部温度传感器芯片测量环境温度; (3)有手动测量(按测量键单次测量)和自动测量(实时测量)两种工作模式; (4)通过按键设置工作模式和自动测量的采样时间(1秒~1小时); (5)具备温度报警功能,温度过高或过低报警。 二.系统组成 系统由G2Launch Pad及其拓展板构成,单片机为MSP430G2553。 I2的通信方式对IO进行拓展,芯片为TCA6416A; 使用C 使用HT1621控制LCD; 三.系统流程 拓展的四个按键key1、key2、key3、key4分别对应单次测量、定时测量、定时时间的增、减。定时时间分别为1s,5s,15s,30s,60s。在自动测量模式下,当温度超过设定温度上限

即报警,报警时在LCD屏幕显示ERROR同时LED2闪烁,在5s后显示0℃。此时可重新开始手动或自动测量温度。 系统示意图: 四.演示 a)手动测量温度 b)自动测量温度 c)报警

显示ERROR同时LED闪烁d)设置时间界面 五.代码部分 #include "MSP430G2553.h" #include "TCA6416A.h" #include "LCD_128.h" #include "HT1621.h" #include "DAC8411.h" #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) static int t=0; long temp; long IntDeg; void ADC10_ISR(void); void ADC10_init(void); void LCD_Init(); void LCD_Display(); void GPIO_init(); void I2C_IODect(); void Error_Display(); void WDT_Ontime(void); void LCD_Init_AUTO(); void LCD1S_Display();

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

MSP430单片机选型指南

MSP430单片机选型指南 概述: 1xx:8MIPS,1-60KB 2xx:16MIPS,1-120KB,500nA Stand By(待机电流为1xx的1/2) 4xx:8/16MIPS,4-120KB,LCD Driver 5xx:25MIPS,32-256KB,USB,RF,500nA Stand By(未上市) 命名规则: 1.x1为不带“1”的型号的外设精简版,一般去掉ADC12 2.1x为不带“1”的型号的存储器增强版,加入更多的Flash或是RAM,增加Flash的型号 采用了MSP430X构架。 3.型号中带“F”表示该型号的程序存储器为Flash,不采用Flash的信号有:C11x1,C13x1, C41x,CG461x(新型号,MSP430CG4619(120k)与MSP430FG4619的差价约为$2) 4.型号中带“E”表示该型号为电测做了优化,一般有LCD驱动器,3路独立AD,硬件乘法 器,嵌入式信号处理器(ESP430) 5.型号中带“W”表示该型号为流体测量做了优化 6.型号中带“G”表示该型号为医疗仪器做了优化,一般有LCD,ADC,DAC,OPAMP 13x(1),14x(1),15x,16x系列 基本配置:48个I/O,TA,TB,Watchdog,UART/SPI,I2C,DMA,MPY,Comp_A,ADC12 相同 1.全系列Flash程序存储器 2.64引脚PM, PAG, RTD封装 3.48个I/O 4.TA(TA3),TB(13x,15x为TB3;14x,16x为TB7) 5.Comp_A 不同 1.15x,16x:支持BOR,SVS,I2C,DMA,DAC 2.14x,16x:MPY(硬件乘法器),2个UART/SPI 3.13x1,14x1不含ADC12;其它器件含8通道ADC12 4.MSP430F161x最大支持10k的RAM 说明:不特别指明的话13x包含13x1,14x包含14x1,16x包含161x 41x,42x系列

南理工 王宏波 MSP430F6638单片机实验报告

MSP430单片机应用技术 实验报告 学号:XXXXXXXX

实验1 一、实验题目:UCS实验 二、实验目的 设置DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出ACLK、SMCLK,用示波器观察并拍照。 UCS,MCLK、 SMCLK 8MHz 的 1 2 六、实验结果 实验2 一、实验题目:FLL+应用实验 二、实验目的

检测P1.4 输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1 状态。 三、实验仪器和设备 计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5 四、实验步骤 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; WDT 1、用电缆连接开发板USB2口和电脑USB口,打开电源开关SW1,电源指示灯D5点亮; 2、运行CCSV5; 3、新建工作空间workspace; 4、新建工程project与源文件main.C; 5、编写程序; 6、编译、调试、下载程序到单片机;

7、观察、分析、保存运行结果。 五、实验程序 实验4 一、实验题目:WDT_A实验 二、实验目的 定时模式 1 2 六、实验结果 实验5一、实验题目:Timer_A实验

二、实验目的 比较模式-Timer_A0,两路PWM 输出,增减计数模式,时钟源SMCLK,输出模式7 TACLK = SMCLK = default DCOCLKDIV。PWM周期CCR0 = 512-1,P1.6 输出PWM占空比CCR1 = 37.5%,P1.7输出PWM占空比CCR1 =12.5%。 要求: (1)用示波器观察两路PWM 输出的波形并拍照,测量周期、正脉宽等参数,与理论值进行对比分析。 (2 (3 1 2 实验6 一、实验题目:ADC12实验 二、实验目的 ADC12 单次采样A0 端口,根据转换结果控制LED 状态。

如何学习MSP430单片机

如何学习MSP430单片机 如何学习MSP430单片机 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

MSP430时钟配置

MSP430 频率(时钟)配置 MSP430时钟: 1、在MSP430单片机中一共有四个时钟源: (1)LFXT1CLK,为低速/高速晶振源,通常接32.768kHz晶振 (2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接400kHz~16Mhz; (3)DCOCLK,数控振荡器,为内部时钟,由RC震荡回路构成,受温度和电压的影响较大;若外部不接稳定的晶振电路,直接由内部时钟工作,则会因环境变化而导致性能不稳定。(4)VLOCLK,内部低频振荡器,12kHz标准振荡器。(要得到标准的12k则必须外接32768等晶振) 2、在MSP430单片机内部一共有三个时钟系统: (1)ACLK:辅助时钟,通常由LFXT1CLK或VLOCLK作为时钟源,可以通过软件控制更改时钟的分频系数; (2)MCLK:主时钟,为系统内核提供时钟,它可以通过软件从四个时钟源选择或者从四个时钟源分频后选择为主时钟; (3)SMCLK:子时钟,也是可以由软件选择时钟源。 3、MSP430的时钟设置包括3个寄存器,DCOCTL、BCSCTL1、BCSCTL2、BCSCTL3 MOD0~MOD4: Modulation Bit,频率的微调。 一般不需要DCO的场合保持默认初始值就行了。 XT5V: 1. DIVA0~DIVA1:选择ACLK的分频系数。DIVA=0,1,2,3,ACLK的分频系数分别是1,2,4,8; XTS: 选择LFXT1工作在低频晶体模式(XTS=0)还是高频晶体模式(XTS=1)。 XT2OFF: 控制XT2振荡器的开启(XT2OFF=0)与关闭(XT2OFF=1)。 正常情况下把XT2OFF复位就可以了. DCOR: 0,选择内部电阻;1,选择外部电阻 DIVS0~DIVS1: DIVS=0,1,2,3对应SMCLK的分频因子为1,2,4,8 SELS: 选择SMCLK的时钟源, 0:DCOCLK; 1:XT2CLK/LFXTCLK. DIVM0~1: 选择MCLK的分频因子, DIVM=0,1,2,3对应分频因子为1,2,4,8. SELM0~1: 选择MCLK的时钟源, 0,1:DCOCLK, 2:XT2CLK, 3:LFXT1CLK 我用的时候一般都把SMCLK与MCLK的时钟源选择为XT2。 其它: 1. LFXT1: 一次有效的PUC信号将使OSCOFF复位,允许LFXT1工作,如果LFXT1信号没有用作SMCLK或MCLK,可软件置OSCOFF关闭LFXT1.

430单片机点亮LED实验报告

430单片机点亮LED实验报告 一.安装实验软件IAR 二.编写点亮LED灯程序 1.使P1.0口LED灯会不停的闪烁着,程序 #include typedef unsigned int uint; typedef unsigned char uchar; /*延时函数*/ void Delay_Ms(uint x) { uint i; while(x--)for(i=0;i<250;i++); } /*主函数*/ int main( void ) { WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset P2DIR|=BIT0;//定义P1口为输出 while(1)//死循环 { P2OUT^=BIT0;//P1.0口输出取反

Delay_Ms(600);//稍作延时 } } 下载进去看到了P1.0口LED灯会不停的闪烁着。 2.实验目的让两盏灯交换闪烁程序 #include"msp430g2553.h" void main(void) { void Blink_LED(); WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 P1DIR=BIT6; P2DIR=BIT0; while(1) { Blink_LED(); } } void Blink_LED() { _delay_cycles(1000000); //控制第二个LED P1OUT^=BIT6; _delay_cycles(1000000); //控制第一个LED P2OUT^=BIT0;

MSP430单片机实验报告

MSP430单片机实验报告 专业: 姓名: 学号:

MSP430单片机实验报告 设计目标:使8位数码管显示“5201314.”,深入了解串行数据接口。 实现过程:主要分为主函数、驱动8位数码管函数、驱动1位数码管函数及延时函数。 延时函数:采用for循环。 驱动1位数码管子函数:设置74HC164的时钟传输和数传输,声明变量,使数据表中每一个要表示的字符的每一位都与shift做与运算从而进行传输,上升沿将传输数据传送出去。驱动1位数码管子函数的流程图如图1所示。 图1 驱动1位数码管子函数流程图 驱动8位数码管子函数:调用8次驱动1位数码管子函数。驱动8位数码管子函数流程图如图2所示。 图2 驱动8位数码管流程图

while 图3 主函数流程图 实验结果:供电后,数码管显示“5201314.”字样。 源程序: /************* 程序名称:5201314.*************/ /***程序功能:通过模拟同步串口控制8个共阳数码管***/ /*******P5.1 数据管脚,P5.3 同步时钟管脚*******/ #include // 头文件 void delay(void); // 声明延迟函数void seg7_1 (unsigned char seg7_data); // 声明驱动1 位数码管函数void seg7_8 ( unsigned char seg7_data7, unsigned char seg7_data6, unsigned char seg7_data5, unsigned char seg7_data4, unsigned char seg7_data3, unsigned char seg7_data2,

关于(单片机)msp430的时钟资料

msp430f5419/38学习笔记之时钟系统 (2011-11-30 10:41:30) 分类: msp430 标签: msp430f541x msp430f543x ucs 时钟系统注: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。

msp430F 5438时钟配置为25M时

MSP430F5438外接25M晶振。 void initClock(void) { // 初始化P7.0(#13)和P7.1(#14)为复用功能, XT1 外部时钟晶体接线 GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P7 , GPIO_PIN0 | GPIO_PIN1 ); // 启动XT1 //Initializes the XT1 crystal oscillator with no timeout //In case of failure, code hangs here. //For time-out instead of code hang use UCS_LFXT1StartWithTimeout() UCS_LFXT1Start( UCS_XT1_DRIVE0 , UCS_XCAP_3); // DCO参考时钟选择XT1,选择了默认参数 //UCS_clockSignalInit( UCS_FLLREF, UCS_XT1CLK_SELECT , UCS_CLOCK_DIVIDER_1 ); // 初始化P5.2(#89)和P5.3(#90)为复用功能, XT2 外部时钟晶体接线 GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P5 , GPIO_PIN2 | GPIO_PIN3 ); // 启动XT2 UCS_XT2Start( UCS_XT2DRIVE_24MHZ_32MHZ ); // DCO参考时钟选择XT1,选择了默认参数 //UCS_clockSignalInit( UCS_FLLREF, UCS_XT1CLK_SELECT , UCS_CLOCK_DIVIDER_1 ); // ACLK参考时钟源选择REFO, 32768Hz //UCS_clockSignalInit(UCS_ACLK, UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1); // DCO参考时钟源选择REFO,32768Hz //UCS_clockSignalInit(UCS_FLLREF, UCS_REFOCLK_SELECT , UCS_CLOCK_DIVIDER_1); // DCO时钟16MHz, used as MCLK and SMCLK frequency // 该函数第1个参数为系统工作频率16384KHz/1024=16MHz,第2个参数为工作频率/DCO参考频率=16*1024*1024/32768=512 #define FRQ_DIV 1 //UCS_initFLLSettle(16384/FRQ_DIV , 512/FRQ_DIV); //! Initializes the XT2 crystal oscillator, which supports crystal frequencies //! between 4 MHz and 32 MHz, depending on the selected drive strength. Loops

MSP430 按键程序范例(附原理图)

#i nclude void Init_Port(void) { //将P1口所有的管脚在初始化的时候设置为输入方式 P1DIR = 0; //将P1口所有的管脚设置为一般I/O口 P1SEL = 0; // 将P1.4 P1.5 P1.6 P1.7设置为输出方向 P1DIR |= BIT4; P1DIR |= BIT5; P1DIR |= BIT6; P1DIR |= BIT7; //先输出低电平 P1OUT = 0x00; // 将中断寄存器清零 P1IE = 0; P1IES = 0; P1IFG = 0; //打开管脚的中断功能 //对应的管脚由高到低电平跳变使相应的标志置位 P1IE |= BIT0; P1IES |= BIT0; P1IE |= BIT1; P1IES |= BIT1; P1IE |= BIT2; P1IES |= BIT2; P1IE |= BIT3; P1IES |= BIT3; _EINT();//打开中断 return; } void Delay(void) { int i; for(i = 100;i--;i > 0) ;//延时一点时间 } int KeyProcess(void) { int nP10,nP11,nP12,nP13; int nRes = 0;

//P1.4输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 13; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 14; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 15; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 16; //P1.5输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 9; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 10; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 11; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 12; //P1.6输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 5; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 6; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 7; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 8; //P1.7输出低电平 P1OUT &= ~(BIT4); nP10 = P1IN & BIT0; if (nP10 == 0) nRes = 1; nP11 = P1IN & BIT1; if (nP11 == 0) nRes = 2; nP12 = P1IN & BIT2; if (nP12 == 0) nRes = 3; nP13 = P1IN & BIT3; if (nP13 == 0) nRes = 4; P1OUT = 0x00;//恢复以前值。

MSP430系列MCU的动态时钟配置分析

MSP430系列MCU的动态时钟配置分析时间:2012-06-01 18:49:18 来源: https://www.360docs.net/doc/7f9788803.html, 本文结合MSP430系列微处理器,详细论述了通过控制改变MCU的时钟频率来降低功耗的设计方法。 1 功耗产生的原因 在CMOS电路中,功耗损失主要包括静态功耗损失和动态功耗损失两部分。其中静态功耗主要是由反偏PN结的漏电流和晶体管的亚阈值电流引起的,其最主要的形式就是漏电损失。其实CMOS电路理论上不会有静电功耗损失,因为从供应电源到地面没有直接的路径,但实际上晶体管总会有漏电电流的出现,从而出现漏电损失。在0.18μm工艺水平之下,其在功耗中所占比重大约为5%~10%,一般可以忽略(但是随着工艺的提高,供电电压的降低,又使其所占比重逐渐上升)。这样,在CMOS电路中,动态功耗就成了这个系统功耗的主要组成部分,约占整体功耗的90%以上。定量地分析电路的动态功耗,可用以下公式表示: 其中:C为负载电容;VDD为电源电压;?琢为翻转几率,即每个时钟周期中发生的充放电周期个数;fCLK为时钟频率。从这个公式可以看到如何降低动态功耗从而降低整个CMOS 电路的功耗。即可以减小翻转的负载电容,降低电源电压,减小节点的翻转几率,或者降低时钟频率。本文将主要围绕如何动态降低时钟频率实现低功耗设计。 2 动态时钟低功耗管理原理 MCU系统设计是个很复杂的过程,在一些条件下可能会用到整个系统的所有硬件资源,但是在一些应用中可能只需要其中很少的一部分硬件资源;在某些应用中可能需要很高的时钟频率,而在其他应用中却可以工作在很低的工作频率中。例如:当任务量很大时,MCU满负荷工作,则需要较高的时钟频率,功耗较大;当任务量很小时,MCU负荷较轻,所需时钟频率较低,功耗就可以相应降低。动态配置系统的时钟频率就是以不牺牲系统的性能为前提,动态地管理系统的工作频率来降低MCU的功耗。

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

MSP430单片机定时器实验报告

实验四定时器实验 实验目的: MPS430F5529片内集成的定时器A的使用,学习计数器的补捕获比较模块的使用。实验内容: 定时器采用辅助时钟ACLK作为计数脉冲,fACLK=32768Hz,实现以下功能: 1.定时器TA0延时1s,点亮或熄灭LED6,即灯亮1s灭1s,如此循环,采用中断服务程序实现。 2.定时器TA0延时1s,点亮或熄灭LED4,采用捕获比较器CCR0的比较模式,设定输出方式,输出方波,不用中断服务程序 3.采用捕获比较器CCR1的比较模式LED5,设定输出方式,输出PWM波形,使LED 亮2s,灭1s。 4.用定时器实现30s倒计时,在液晶模块上显示,每过一秒显示数字变化一次。 5.使用TA1的捕获比较器CCR0捕获按键的间隔时间,在液晶模块上显示。 程序代码: 程序1: #include void main() {WDTCTL = WDTPW + WDTHOLD; //关看门狗 P1DIR |= BIT3; //设置P1.0口方向为输出。 TA0CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1, //CCR0捕获/比较功能中断为允许。 TA0CCR0 = 32767; //捕获/比较控制寄存器CCR0初值为32767 TA0CTL = TASSEL_1 + MC_1+TACLR; //设置定时器A控制寄存器TACTL, //使时钟源选择为SMCLK辅助时钟。 //进入低功耗模式LPM0和开总中断 _BIS_SR(LPM0_bits +GIE); } //定时器A 中断服务程序区 #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) {

MSP430单片机深入学习笔记

复位 1.POR信号只在两种情况下产生: 微处理器上电。 RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。 2.PUC信号产生的条件为: POR信号产生。 看门狗有效时,看门狗定时器溢出。 写看门狗定时器安全健值出现错误。 写FLASH存储器安全键值出现错误。 3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为: RST/MIN管脚功能被设置为复位功能。 所有I/O管脚被设置为输入。 外围模块被初始化,其寄存器值为相关手册上注明的默认值。 状态寄存器(SR)复位。 看门狗激活,进入工作模式。 程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。 4.典型的复位电路有以下3种: (1)由于MSP430具有上电复位功能, 因此,上电后只要保持RST/NMI(设置 为复位功能)为高电平即可。通 常的做法为,在RST/NMI管脚接100k? 的上拉电阻,如图1-5(a)所示。 (2)除了在RST/NMI管脚接100k?的 上拉电阻外,还可以再接0.1μF的电 容,电容的另一端接地,可以使复位 更加可靠。如图1-5(b)所示。 (3)由于MSP430具有极低的功耗,如 果系统断电后立即上电,则系统中电 容所存储的电荷来不及释放,此时系 统电压不会下降到最低复位电压以下, 因而MSP430不会产生上电复位,同时 RST/NMI管脚上也没有足够低的电平 使MSP430复位。这样,系统断电后立 即上电,MSP430并没有被复位。为了 解决这个问题,可增加一个二极管, 这样断电后储存在复位电容中的电荷 就可以通过二极管释放,从而加速电 容的放电。二极管的型号可取1N4008。 如图1-5(c)所示。

单片机原理及应用_第十讲_MSP430单片机的ADC实验报告

单片机原理及应用 第十讲 MSP430单片机的ADC 实验报告 报告人:学号:同组人员: 实验内容 实验1 AD采集输入电压并比较 实验2 AD内部温度采集实验 实验3 验收实验:温度采集与显示 把实验2中的实测温度值以摄氏度数值显示在段码LCD上。 实验步骤 步骤: (1) 将PC 和板载仿真器通过USB 线相连; (2) 打开CCS 集成开发工具,选择样例工程或自己新建一个工程,修改代码; (3) 选择对该工程进行编译链接,生成.out 文件。然后选择,将程序下载到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择

单步调试程序,选择F3 查看具体函数。也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。再按下实验板的复位键,运 行程序。(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议 上电运行程序)。 关键代码: 实验1 AD采集输入电压并比较 #include int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on ADC12CTL1 = ADC12SHP; // Use sampling timer ADC12IE = 0x01; // Enable interrupt ADC12CTL0 |= ADC12ENC; P6SEL |= 0x01; // P6.0 ADC option select P4DIR |= BIT1; // P4.1 output while (1) { ADC12CTL0 |= ADC12SC; // Start sampling/conversion __bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit __no_operation(); // For debugger } } #pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow

MSP430系列单片机特性及应用领域介绍

MSP430系列单片机特性及应用领域介绍 MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点: 1、强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125ns。这些特点保证了可编制出高效率的源程序。 2、在运算速度方面,能在8MHz晶体的驱动下,实现125ns的指令周期。16位的数据宽度、125ns的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如FFT等)。 3、超低功耗方面,MSP430单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。电源电压采用的是1.8-3.6V电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流会在200-400uA左右,时钟关断模式的最低功耗只有0.1uA。 缺点1、个人感觉不容易上手,不适合初学者入门,资料也比较少,只能跑官网去找。2、占的指令空间较大,因为是16位单片机,程序以字为单位,有的指令竟然占6个字节。虽然程序表面上简洁,但与PIC单片机比较空间占用很大。 应用范围:在低功耗及超低功耗的工业场合应用的比较多。 使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列 TMS单片机这里也提一下TMS系列单片机,虽不算主流。由TI推出的8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合。虽然没STM32那么优秀,也没MSP430那么张扬,但是TMS370C系列单片机提供了通过整合先进的外

相关文档
最新文档