6158|9

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430F169的MCLK为何不能选择XT2? [复制链接]

我在应用MSP430F169时,晶振2用8MHz,MCLK不能选择,而SMCLK可以选择,不清楚原因,请指教!
我的程序:

#include <msp430x16x.h>


void main(void)
{

WDTCTL = WDTHOLD + WDTPW; //关闭看门狗
BCSCTL1 &= ~XT2OFF; //启用XT2
BCSCTL2 = 0;
BCSCTL2 |= SELS + DIVS0; // SMCLK选用XT2,2分频
BCSCTL2 |= SELM1; //MCLK选用XT2

P5SEL = 0x30;
P5DIR = 0x30;

while(1);
}
现象:P5.4输出频率700多KHz,为DCO的频率,随温度变化;P5.5的输出频率为4MHz,令我不明白的是为什么MCLK加载不了XT2,而SMCLK可以,原以为是8MHz高且对电源要求3.6V,换成4MHz,现象对应的性质是相同的,请指教。

最新回复

视具体情况而定,也不是说每一块板子都要这样!和晶振的布局也有很大的关系!不管怎样,XT2没有输出可以通过OFIFG来观察,楼主说SMCK可以配置,MCLK不可以配置。也就是说XT2起振了啊! 应该不会有这样的问题啊,在测测应该是可以的。  详情 回复 发表于 2009-2-21 12:19
 
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
//******************************************************************************
// MSP-FET430P140 Demo - Basic Clock, MCLK Sourced from HF XTAL XT2
//
// Description: Proper selection of an external HF XTAL for MCLK is shown
// by first polling the OSC fault until XTAL is sta××e - only then is MCLK
// sourced by XT2. MCLK is on P5.4.
// ACLK= n/a, MCLK= XT2, SMCLK= DCO,
// //* HF XTAL NOT INSTALLED ON FET *//
// //* Min Vcc required varies with MCLK frequency - refer to datasheet *//
//
// MSP430F149
// -----------------
// /|\| XT2IN|-
// | | | XTAL (455k - 8Mhz)
// --|RST XT2OUT|-
// | |
// | P5.4|-->MCLK = XTAL
//
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//******************************************************************************

#include <msp430x14x.h>

void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5DIR |= 0x10; // P5.4= output direction
P5SEL |= 0x10; // P5.4= MCLK option select
BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL

do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?

BCSCTL2 |= SELM_2; // MCLK= XT2 (safe)

for (;;); // Do nothing
}
 
 

回复

123

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
同意楼上。唯一需要改变一点的就是把for (i = 0xFF; i > 0; i--); // Time for flag to set

改成for (i = 0xFFFF; i > 0; i--); 因为之前做过测试发现 即使跳出
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
这个循环也不能肯定XT2已经稳定 退出这个循环之后 OFIFG还是又可能置位的
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
Yes!!
多谢!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
LSDFAE51我写的是TI 管方例程,你把FF 改成FFFF没实质性变化,,只不过是你的晶震起振时间太长了。
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

6
 
回TAGE :是的 虽然只是延长了晶振时间 但是已经有实际变化 你可以打开不可屏蔽中断 然后看
2种延时 对进不可屏蔽中断的影响
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP18PF;
FLL_CTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG;
for(unsigned int t=0xff;t>0;t--);
_NOP();
}
while(IFG1 & OFIFG);
FLL_CTL1 = SELM1; //MCLK-->XT2=4MHz
IE1 |= OFIE;
………………
………………
}

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP18PF;
FLL_CTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG;
for(unsigned int t=0xffff;t>0;t--);
_NOP();
}
while(IFG1 & OFIFG);
FLL_CTL1 = SELM1; //MCLK-->XT2=4MHz
IE1 |= OFIE;
………………
………………
}

#pragma vector = NMI_VECTOR
__interrupt void NMI_ISR(void)
{
_NOP(); //可设置断电观察
}

还又种做法是:
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP18PF;
FLL_CTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG;
for(unsigned int t=0xff;t>0;t--);
_NOP();
}
while(IFG1 & OFIFG);
FLL_CTL1 = SELM1; //MCLK-->XT2=4MHz
for(unsigned int t=0xffff,t>0;t--);
IE1 |= OFIE;
………………
………………
}
虽然只是延时时间不同 但是情况却变了。不妨尝试下
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
没电路板我也没法试验,我想知道有什么变化,,为什么会有变化?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
第一个IE1 |= OFIE;后经常就调到不可屏蔽中断
第2个IE1 |= OFIE;后一般就不会跳到不可屏蔽中断

这个晶振稳定时间跟晶振本身工艺有关系

晶振稳定过程是一个“上下抖动”的过程 它时而置位OFIFG 时而又没有置位OFIFG 所以即使程序能够跳出
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
这个循环 也不意味着 此时IFG & OFIFG 就肯定是0

所以加大延时时间 确保晶振真正完全稳定了 才能说IFG & OFIFG ==0了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
加大延时时间 确保晶振真正完全稳定了 ,,这是关键点,,明白了。。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
视具体情况而定,也不是说每一块板子都要这样!和晶振的布局也有很大的关系!不管怎样,XT2没有输出可以通过OFIFG来观察,楼主说SMCK可以配置,MCLK不可以配置。也就是说XT2起振了啊!
应该不会有这样的问题啊,在测测应该是可以的。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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