搜索
bottom↓
回复: 21

请教msp430f5438外接晶振不起振

[复制链接]

出0入0汤圆

发表于 2011-8-2 16:41:33 | 显示全部楼层 |阅读模式
INT16U i,iq0;
    P7SEL|=BIT0+BIT1; //Port select XT1
    //P5SEL |= BIT2+BIT3;
    UCSCTL6 &= ~XT1OFF;
    //UCSCTL6 &= ~XT2OFF;
    UCSCTL6 |= XTS;
    //UCSCTL6 |= XCAP_3;
    UCSCTL6|=XT1DRIVE_1;
    UCSCTL6 &= ~XT1BYPASS;
    UCSCTL4=SELM__XT1CLK+SELS__XT1CLK;//SMCLK Source Select XT1CLK , MCLK Source Select XT1CLK
    do
    {
        SFRIFG1 &= ~OFIFG;
        for (iq0=0xfff;iq0>0;iq0--) P6OUT ^= BIT4;  //延时,等待XT1起振
    }
    while (SFRIFG1&OFIFG);
    外接12m晶振,示波器能观察到波形,但是波形很小。请教这是什么原因。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-8-2 19:56:45 | 显示全部楼层
回复【楼主位】alading
-----------------------------------------------------------------------

看看外接的晶振电容

出0入0汤圆

发表于 2011-8-2 20:31:37 | 显示全部楼层
找一下TI写的晶振电路的注意事项把。估计是硬件问题。我也遇到过类似问题,换了块板子就好了。。。

出0入0汤圆

 楼主| 发表于 2011-8-3 09:55:21 | 显示全部楼层
电容接了15p的

出0入0汤圆

发表于 2011-8-3 09:59:30 | 显示全部楼层
电容调大一些试试,连线的话看看能不能缩短些

出0入0汤圆

发表于 2011-8-4 17:01:08 | 显示全部楼层
学习下了

出0入0汤圆

发表于 2011-8-6 14:21:27 | 显示全部楼层
遇到同样问题,
msp430f169 两个外部 晶振,一个7.3728Mhz,  一个32.768khz
一共做了 4块板子,
我的晶振初始化程序如下:
//--------------------------
void TimerA_Init(void)
{
TACTL = TASSEL_1 + ID0 + TACLR ; //ACLK=32768Hz ,清除tar ,2分频
CCTL0 = CCIE; //
CCR0 = 16384;//32768*2  // (1/32768)*819 =20 ms ??
TACTL |= MC0+MC1; //Up/Down mode   
}

//    * 定时器B 初使化 ****
void TimerB_Init (void)
{
TBCTL = TBSSEL_1  + TBCLR ; //ID_2 + ID1 +
TBCCTL0 = CCIE; // INTERRUPT ENABLE
TBCCR0 = 8192; //250ms
TBCTL |= MC0;
}
   

/****** 定时器 A 中断 处理 ***********/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{   
      
          timer_aflg = 1;
}

#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_B (void)
{   
      
   timer_bflg = 2;
}

//--------------------------
void InitClock(void)
{
unsigned int oscdly;
BCSCTL1=RSEL2+RSEL1+RSEL0; //X2T Enable ; LFXT1 operation at 32768Hz; Highest nominal DCO   
DCOCTL=DCO2+DCO1+DCO0; //Definition the Highest frequency for DCO
do
{
  IFG1 &=~OFIFG;
  oscdly=255;
  while(oscdly--);
}while(IFG1 & OFIFG); ////////////////////////////////不能跳出
BCSCTL2=SELM_2+SELS; //SMCLK and MCLK uses XT2
}
void main(void)
{
uint  meteraddr = 1;
uchar metertype = 0;
uint  i= 0;

uchar getflag =0;

//uint temp;
uint mi = 0;
//-----------------------------------

//uchar cmd8cnt;
uint cntdelay =0;
uchar *pointer;
//------------------------------------
//uint heat_time = 0;
      
uint m_time = 0;
uint am_time = 0;
uint heart_time=26;
     // cmd8cnt =0;

  //uchar gstate = 0x41;
  uchar  gstate =0x01;

  uchar data=0xbb;
  uchar hbflg = 3;   


  volatile uchar heartstate = 0x22;

//------------------------------
uchar front[5] = {0xaa,0xaa,0xaa,0x7E,'\0'};

uchar maflag = 0;
volatile uchar vaflag = 0;

WDTCTL=WDTPW+WDTHOLD;
InitClock();
TimerA_Init();

//======================= 串口初始化 =======================//
uart0Init();
uart1Init();


DRE_out
RE

//------------------
init_ad();
  //启动

   P2DIR |=0x20;   
   P2OUT  &=~0x20;
  //-----------------------------------------------------p5.2置位
   
  P5DIR |=0x04;     
  
  
  P5OUT |=0x04;
  
_EINT();
//======================= 主循环 =======================//  

//定时器中断


  while(1)
  {
   
    WDTCTL = WDT_ARST_1000;   
   
    if(1 == timer_aflg )
    {
      timer_aflg = 0;  
      ... ...
     }
... ...
}
看到 我程序什么意思了吗 ?每隔2s我 去 if(1 == timer_aflg ){   } 处理一些事情;

几块板子 都能运行到 if(1 == timer_aflg )处;
板子1:两个晶振正常工作 两天,
今天 忽然发现 timer_aflg 永远等于0,即没有进入 定时中断里去 进行 timer_aflg = 1;的操作;
板子2   3   4 焊接完后 就出现上述情况,是什么原因?

出0入0汤圆

发表于 2011-8-6 14:25:31 | 显示全部楼层
用TI的example 测试一下你的晶振是否启振了

出0入0汤圆

发表于 2011-8-6 14:33:19 | 显示全部楼层
我  拿示波器看了下,
7.3728mhz的起振了, 管脚上有波形;
32.768khz的  有一块 刚才起振了(程序可以正常运行了)
我用示波器看了下该板子,32。768khz 管脚上有波形
另外3块 32。768khz管脚上没有波形,

出0入0汤圆

发表于 2011-8-6 14:34:13 | 显示全部楼层
如果这样的话 ,也太难搞了,
我用  普通电烙铁+ 助焊剂 焊接的

出0入0汤圆

发表于 2011-8-6 14:34:44 | 显示全部楼层
最奇怪的是  有问题的板子,有时候 32。768能起振,有时候 不能起振?

出0入0汤圆

发表于 2011-8-6 14:36:37 | 显示全部楼层
程序中 对32.768khz 低频晶振的 程序设定有问题吗?
我在外部 又加了两个 20pF的电容,此电容 去掉也不行啊?

出0入0汤圆

发表于 2011-8-6 17:56:05 | 显示全部楼层
如果用外部震荡 32768是必须要有的  所以 他的好坏影响了整个板

出0入0汤圆

 楼主| 发表于 2011-8-8 12:51:26 | 显示全部楼层
我加了这两句就好了
UCSCTL3 |= SELREF_3;
UCSCTL4 |= SELA_2;

出0入0汤圆

发表于 2011-9-18 23:12:20 | 显示全部楼层
问题解决了。
首先,XT1HFOFFG在有的版本的F5525.H头文件中,没有这一项(REVERSED)。其次,有的晶体不需要外接稳定电容---跟我的板子布线有关?。。。。  
 

出0入0汤圆

发表于 2011-9-18 23:51:18 | 显示全部楼层
是不是晶振有问题还不能确定吧   你用仪器测下晶振    看看有没有起振。有起振的话那是软件有问题了。

出0入0汤圆

发表于 2011-9-21 01:10:25 | 显示全部楼层
芯片晶振的引线不要太长。尽量短些。。注意下两个电容。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 10:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表