This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F6723外部32K晶振不起振问题

Other Parts Discussed in Thread: MSP430F6723, MSP430F6736

试了例程里面所有关于UCS的程序,用示波器测量32K外部晶振都没有方波输出!

以MSP430F673X_UCS_6程序为例

int main(void)
{
WDTCTL = WDT_ADLY_1000;     // WDT 1000ms, ACLK, interval timer
SFRIE1 |= WDTIE;     // Enable WDT interrupt

// Setup P1.0 output, J1.3 ACLK
P1DIR |= BIT0;     // Set P1.0 to output direction
P1OUT &= ~BIT0;     // Clear P1.0
PJDIR |= BIT3;     // ACLK set out to pin
PJSEL |= BIT3;     // PJ.3 for debugging purposes.

// Setup LFXT1
UCSCTL6 &= ~(XT1OFF);     // XT1 On
UCSCTL6 |= XCAP_3;      // Internal load cap

// Loop until XT1, XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG;      // Clear fault flags
} while (SFRIFG1 & OFIFG);      // Test oscillator fault flag
UCSCTL6 &= ~(XT1DRIVE_3);      // XT1 stable, reduce drive strength

__bis_SR_register(LPM3_bits | GIE);      // Enter LPM3 w/ interrupts
__no_operation();     // For debugger
}

// Watchdog Timer interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
#else
#error Compiler not supported!
#endif
{
P1OUT ^= BIT0;       // Toggle P1.0 using exclusive-OR

程序进不了WDT中断,示波器量外部晶振没有输出波形:

匹配电容XCAP_3  ~   XCAP_0都试过,没有作用;

换新的晶振,没有作用(晶振在4系列单片机的板子上均起振);

把WDT定时器WDT_ADLY_1000换成WDT_MDLY_xx,可以进入中断。

这是不是说明外部晶振没有起振?PCB布板应该没有问题,晶振用的是圆柱晶振DT-26的,没有接外部电容。谁遇到过或者知道的麻烦指导一下,谢谢!

  • 有条件的话,换颗晶振试试,其次是检查焊接是否有问题。

  • 如果晶振没起振,一般do while那一段程序都出不来。

  • do while是正常的,晶振焊接用万用表打也正常,晶振距离芯片引脚距离也不远关键现在只有这一种晶振,同种的换了几次没有效果。程序其他模块用到MCLK的都正常,用到ACLK的就不行。现在只能 Set  ACLK = REFO 进行调试。MSP430F6723这款芯片,有没有其他引脚的硬件连接可能会影响到晶振的起振?

  • 其他引脚一般不会影响晶振,量晶振引脚都没有波形明显没有起来

    匹配电容现在多少?在两个管脚之间跨接一个1M的大电阻试一试

  • 内部匹配电容CAP_0~CAP_3都试过,晶振两脚间接外部电容试过从8pF~22pF,两脚间接电阻试过1M欧~7.5M欧,都不起振。芯片的外围电路基本参考的TI的资料Implementation of a Single-Phase Electronic Watt-Hour Meter Using the MSP430F6736(A),晶振也和该资料中的晶振一样是圆柱晶振DT-26。考虑重新焊接一块板子,只焊MSP430F6723的最小系统,看能不能起振。

  • 恩,可以考虑重新换个片子或板子

  • // Loop until XT1, XT2 & DCO stabilizes
    do
    {
    UCSCTL7 &= ~(XT2OFFG | XT1LFOFFG | DCOFFG);
    // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;      // Clear fault flags
    } while (SFRIFG1 & OFIFG);      // Test oscillator fault flag

    程序这里应该加一个延时,OFIFG刚刚清零,起作用需要一段时间,  for (i = 50000; i; i--);                // Delay

    看看能不能从循环中跳出了。

    跳不出来就是晶振没有起振。硬件问题。换换硬件再试!