alading 发表于 2011-8-2 16:41:33

请教msp430f5438外接晶振不起振

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晶振,示波器能观察到波形,但是波形很小。请教这是什么原因。

wozai2513 发表于 2011-8-2 19:56:45

回复【楼主位】alading
-----------------------------------------------------------------------

看看外接的晶振电容

aida66 发表于 2011-8-2 20:31:37

找一下TI写的晶振电路的注意事项把。估计是硬件问题。我也遇到过类似问题,换了块板子就好了。。。

alading 发表于 2011-8-3 09:55:21

电容接了15p的

dujinglun 发表于 2011-8-3 09:59:30

电容调大一些试试,连线的话看看能不能缩短些

xuming07 发表于 2011-8-4 17:01:08

学习下了

german010 发表于 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)
{
uintmeteraddr = 1;
uchar metertype = 0;
uinti= 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;
uchargstate =0x01;

uchar data=0xbb;
uchar hbflg = 3;   


volatile uchar heartstate = 0x22;

//------------------------------
uchar front = {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 焊接完后 就出现上述情况,是什么原因?

jlhgold 发表于 2011-8-6 14:25:31

用TI的example 测试一下你的晶振是否启振了

german010 发表于 2011-8-6 14:33:19

我拿示波器看了下,
7.3728mhz的起振了, 管脚上有波形;
32.768khz的有一块 刚才起振了(程序可以正常运行了)
我用示波器看了下该板子,32。768khz 管脚上有波形
另外3块 32。768khz管脚上没有波形,

german010 发表于 2011-8-6 14:34:13

如果这样的话 ,也太难搞了,
我用普通电烙铁+ 助焊剂 焊接的

german010 发表于 2011-8-6 14:34:44

最奇怪的是有问题的板子,有时候 32。768能起振,有时候 不能起振?

german010 发表于 2011-8-6 14:36:37

程序中 对32.768khz 低频晶振的 程序设定有问题吗?
我在外部 又加了两个 20pF的电容,此电容 去掉也不行啊?

jlhgold 发表于 2011-8-6 17:56:05

如果用外部震荡 32768是必须要有的所以 他的好坏影响了整个板

alading 发表于 2011-8-8 12:51:26

我加了这两句就好了
UCSCTL3 |= SELREF_3;
UCSCTL4 |= SELA_2;

yigang 发表于 2011-9-18 23:12:20

问题解决了。
首先,XT1HFOFFG在有的版本的F5525.H头文件中,没有这一项(REVERSED)。其次,有的晶体不需要外接稳定电容---跟我的板子布线有关?。。。。
 

a403588784 发表于 2011-9-18 23:51:18

是不是晶振有问题还不能确定吧   你用仪器测下晶振    看看有没有起振。有起振的话那是软件有问题了。

aida66 发表于 2011-9-21 01:10:25

芯片晶振的引线不要太长。尽量短些。。注意下两个电容。。
页: [1]
查看完整版本: 请教msp430f5438外接晶振不起振