2747|0

445

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

[LaunchPad学习心得]+时钟学习 [复制链接]

 

1、在MSP430单片机中一共有三个或四个时钟源

1LFXT1CLK,为低速/高速晶振源,通常接32.768kHz,也可以接(400kHz16Mhz);

2XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接(400kHz16Mhz);     

3DCOCLK,数控振荡器,为内部晶振,由RC震荡回路构成;

4VLOCLK,内部低频振荡器,12kHz标准振荡器。

2、在MSP430单片机内部一共有三个时钟系统

1ACLKAuxiliary Clock,辅助时钟,通常由LFXT1CLKVLOCLK作为时钟源,可以通过软件控制更改时钟的分频系数;    

2MCLKMaster Clock,系统主时钟单元,为系统内核提供时钟,它可以通过软件从四个时钟源选择;

3SMCLKSub-Main Clock,系统子时钟,也是可以由软件选择时钟源。

Basic Clock Module Registers(基础时钟寄存器)

DCO control register                         DCOCTL

Basic clock system control 1                   BCSCTL1

Basic clock system control 2                   BCSCTL2

Basic clock system control 3                   BCSCTL3

SFR interrupt enable register 1                 IE1

SFR interrupt flag register 1                   IFG1

3MSP430的时钟设置包括3个寄存器,DCOCTLBCSCTL1BCSCTL2BCSCTL3

DCOCTLDCO控制寄存器,地址为56H,初始值为60H

DCO2

DCO1

DCO0

MOD4

MOD3

MOD2

MOD1

MOD0

DCO0~DCO2: DCO Select Bit,定义了8种频率之一,而频率由注入直流发生器的电流定义。

MOD0~MOD4: Modulation Bit,频率的微调。

一般不需要DCO的场合保持默认初始值就行了。

BCSCTL1Basic Clock System Control 1,地址为57H,初始值为84H

XT2OFF

XTS

DIVA1

DIVA0

XT5V

RSEL2

RSEL1

RSEL0

RSEL0~RSEL2: 选择某个内部电阻以决定标称频率.0最低,7最高。

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复位就可以了.

BCSCTL2Basic Clock System Control 2,地址为58H,初始值为00H

SEM1

SELM0

DIVM1

DIVM0

SELS

DIVS1

DIVS0

DCOR

DCOR: Enable External Resistor. 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

我用的时候一般都把SMCLKMCLK的时钟源选择为XT2

其它:

1. LFXT1: 一次有效的PUC信号将使OSCOFF复位,允许LFXT1工作,如果LFXT1信号没有用作SMCLKMCLK,可软件置OSCOFF关闭LFXT1.

2. XT2: XT2产生XT2CLK时钟信号,如果XT2CLK信号没有用作时钟MCLKSMCLK,可以通过置XT2OFF关闭XT2PUC信号后置XT2OFF,即XT2的关闭的。

3. DCO振荡器:振荡器失效时,DCO振荡器会自动被选做MCLK的时钟源。如果DCO信号没有用作SMCLKMCLK时钟信号时,可置SCG0位关闭DCO直流发生器。

4. PUC信号后,由DCOCLKMCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1XT2,设置顺序如下:

(1)OSCOFF/XT2

(2)OFIFG

(3)延时等待至少50uS

(4)再次检查OFIFG,如果仍置位,则重复(1)-(4)步,直到OFIFG=0为止。

(5)设置BCSCTL2的相应SELM

这是最慢的时钟,在约12千赫兹下运行。因此,我们将通过可视化的LED闪烁的红色慢慢地在约每3秒钟率。我们可以让时钟系统默认这种状态,设置专门来操作VLO。我们将不使用任何ALCK外设时钟在此实验室工作,但你应该认识到,ACLK来自VLO时钟。

#include <msp430g2231.h>

void main(void)

{

WDTCTL = WDTPW + WDTHOLD;           // 关闭看门狗定时器

P1DIR = 0x40;                          // P1.6 配置输出

P1OUT = 0;                            // 关闭LED

BCSCTL3 |= LFXT1S_2;                   // LFXT1 = VLO

IFG1 &= ~OFIFG;                       // 清除OSCFault标志

__bis_SR_register(SCG1 + SCG0);          // 关闭 DCO

BCSCTL2 |= SELM_3 + DIVM_3;           // MCLK = VLO/8

while(1)

{

P1OUT = 0x40;                       // 开启LED

_delay_cycles(100);

P1OUT = 0;                          // 关闭 LED

_delay_cycles(5000);

}

}

2CPU运行在晶振(32768Hz)时钟下:

晶体频率为32768赫兹,约3倍的VLO。如果我们在前面的代码中使用晶振,指示灯应闪烁大约每秒一次。你知道为什么32768赫兹是一个标准?这是因为这个数字是215次方,因此很容易用简单的数字计数电路,以每秒一次获得率 ——手表和其他时间时基。认识到ACLK来自外部晶振时钟。

#include <msp430g2231.h>

void main(void)

{

WDTCTL = WDTPW + WDTHOLD;        // 关闭看门狗定时器

P1DIR = 0x41;                       // P1.0 P1.6配置输出

P1OUT = 0x01;                      // 开启P1.0

BCSCTL3 |= LFXT1S_0;                // LFXT1 = 32768Hz 晶振

while(IFG1 & OFIFG)

{

IFG1 &= ~OFIFG;                   // 清除OSCFault标志

_delay_cycles(100000);             // 为可见的标志延时

}

P1OUT = 0;                      // 关闭P1

__bis_SR_register(SCG1 + SCG0);     // 关闭 DCO

BCSCTL2 |= SELM_3 + DIVM_3;      // MCLK = 32768/8

while(1)

{

P1OUT = 0x40;                   // 开启 LED

_delay_cycles(100);

P1OUT = 0;                     / / 关闭LED

_delay_cycles(5000);

}

}

3CPU运行在晶振(32768Hz)DCO时钟下:

最慢的频率,我们可以运行DCO约在1MHz(这也是默认速度)。因此,我们将开始切换MCLKDCO下。在大多数系统中,你会希望ACLK上运行的VLO32768赫兹晶振。由于ACLK在我们目前的代码是在晶体上运行,我们会打开DCO计算。

#include <msp430g2231.h>

void main(void)

{

WDTCTL = WDTPW + WDTHOLD;            // 关闭看门狗定时器

if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

{

while(1);                               // If calconst erased, 挂起

}

BCSCTL1 = CALBC1_1MHZ;                // Set range

DCOCTL = CALDCO_1MHZ;                //设置DCO模式

P1DIR = 0x41;                          // P1.0 P1.6配置输出

P1OUT = 0x01;                         // P1.0 开启

BCSCTL3 |= LFXT1S_0;                   // LFXT1 = 32768Hz

while(IFG1 & OFIFG)

{

IFG1 &= ~OFIFG;                       // 清除OSCFault标志

_delay_cycles(100000);                 // 为可见标志延时

}

P1OUT = 0;                           // P1.6 关闭

// __bis_SR_register(SCG1 + SCG0);       // 关闭DCO

BCSCTL2 |= SELM_0 + DIVM_3;          // MCLK = DCO

while(1)

{

P1OUT = 0x40;                       // P1.6 开启

_delay_cycles(100);

P1OUT = 0;                         / / P1.6 关闭

_delay_cycles(5000);

}

}

4CPU运行在DCO时钟下:

最慢的频率,我们可以运行DCO约在1MHz(这也是默认速度)。因此,我们将开始切换MCLKDCO下。在大多数系统中,你会希望在VLO或者是晶振下运行ACLK。由于ACLK在我们目前的代码是在VLO上运行,我们会打开DCO运行。

#include <msp430g2231.h>

void main(void)

{

WDTCTL = WDTPW + WDTHOLD;                // 关闭看门狗定时器

if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

{

while(1);                                   // If calconst erased,挂起

}

BCSCTL1 = CALBC1_1MHZ;                     // Set range

DCOCTL = CALDCO_1MHZ;                     // 设置DCO模式

P1DIR = 0x40;                               // P1.6 配置输出

P1OUT = 0;                                 // P1关闭

BCSCTL3 |= LFXT1S_2;                        // LFXT1 = VLO

IFG1 &= ~OFIFG;                             // 清除OSCFault标志

//__bis_SR_register(SCG1 + SCG0);              // 关闭DCO

BCSCTL2 |= SELM_0 + DIVM_3;                 // MCLK = DCO/8

while(1)

{

P1OUT = 0x40;                          // P1.6 关闭

_delay_cycles(100);

P1OUT = 0;                            // P1.6 开启

_delay_cycles(5000);

}

}

点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表