TI中文支持网
TI专业的中文技术问题搜集分享网站

请教,430外部晶振不起振问题

大家好!调试MSP430FR5969板子时, 配置成外部HFXT晶振时,晶振不起振,代码如下:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "msp430fr5969.h"

#define POWER_3ON()      P4OUT |=BIT5 //3V Power on
#define POWER_3OFF()    P4OUT &=~BIT5 //3V Power off
#define POWER_5ON()      P2OUT |=BIT2 //5V Power on
#define POWER_5OFF()    P2OUT &=~BIT2 //5V Power on
#define LCD_ON()               P4OUT |=BIT4 //LCD Power on
#define LCD_OFF()             P4OUT &=~BIT4 //LCD Power off

int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT

// Configure GPIO
P1DIR &= ~BIT2;
//P1REN |= BIT2;
//P1OUT |= BIT2;
P4OUT &= ~BIT5; // Clear P4.5 output latch for a defined power-on state
P4DIR |= BIT5; // Set P4.5 to output direction
P4OUT &= ~BIT4;
P4DIR |= BIT4;
P2OUT &= ~BIT2;
P2DIR |= BIT2;
P2DIR |= BIT0;
P2SEL0 |= BIT0; // Output ACLK
P2SEL1 |= BIT0;

P3DIR |= BIT4;
P3SEL1 |= BIT4; // Output SMCLK

PJSEL0 |= BIT6 + BIT7;
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;

// Clock System Setup
CSCTL0_H = CSKEY >> 8; // Unlock CS registers
CSCTL2 = SELA__VLOCLK | SELM__HFXTCLK | SELS__HFXTCLK ; // MCLK=SMCLK=HFXTIN
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers to 1
CSCTL4 |= HFFREQ_1 | HFXTDRIVE_3 ; // 4-8Mhz / Maximum drive strength HFXT oscillator
CSCTL4 &= ~HFXTOFF;
/*
CSCTL1 = DCOFSEL_6; // Set DCO to 8MHz
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK; // Set SMCLK = MCLK = DCO
// ACLK = VLOCLK
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1; // Set all dividers to 1
*/
do
{
CSCTL5 &= ~HFXTOFFG; // Clear XT1 fault flag SFRIFG1 &= ~OFIFG;
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
CSCTL0_H = 0; // Lock CS registers
POWER_3ON();
POWER_5ON();
LCD_ON();
while (1) {
// __delay_cycles(8000000); // Wait 8,000,000 CPU Cycles
if((P1IN&BIT2)==0)
{
__delay_cycles(800000);
if((P1IN&BIT2)==0)
{
POWER_3OFF();
}
}
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

上电后一直停在 do{ } while,语句。

用示波器查看,晶振未起振,P2.0输出8.9KHz方波,P3.4输出4.8MHz方波,应该是以默认的内部晶振运行。

晶振加27pF、20pF、15pF电容均无效,上面代码配置有问题吗?

灰小子:

这类晶振不起振的原因,大部分是硬件问题。建议先更换不同厂家晶振试试,排查下是否是晶振的原因。

imbean:

回复 灰小子:

430这么挑晶振吗,用STC的单片机,随便一个晶振都能起振

赞(0)
未经允许不得转载:TI中文支持网 » 请教,430外部晶振不起振问题
分享到: 更多 (0)