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

MSP430时钟初始化异常,可能跟流片有关,希望能够解答

1、首先,芯片型号是MSP430F437,初始化方式参考官方例程,如下:

void clock_init()
{
unsigned int i;
FLL_CTL0 |= XCAP18PF; // Set load capacitance
FLL_CTL1 &= ~XT2OFF; // Turn on XT2

// Loop until 32kHz crystal stabilizes
do
{
IFG1 &= ~OFIFG; // Clear oscillator fault flag
for (i = 50000; i; i–); // Delay
}
while (IFG1 & OFIFG); // Test osc fault flag

FLL_CTL1 = SELS+SELM_2; // Select SMCLK source as XT2CLK
}

采用该驱动方式之后,外部焊接两个晶振,一个32.768kHz的,一个8MHz的,但是经常出现无法初始化现象,也就是一直卡在语句

do

{

IFG1 &= ~OFIFG; // Clear oscillator fault flag
for (i = 50000; i; i–); // Delay
},只能通过更换芯片来实现初始化。

2、第二个芯片是MSP430F169,其时钟初始化也存在隐患,其程序如下

void clock_init_8M()
{
unsigned int i;
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?
for (i = 0x0FFF; i > 0; i–); // Time for flag to set
BCSCTL2 |= SELM_2+SELS; // MCLK= XT2 (safe)

}

一般情况下可以正常开关机,但是,反复开关机之后,偶尔会出现时钟主时钟无法初始化,仍然是默认时钟800k左右。

gaoyang9992006:

上电第一部初始化相关寄存器,清理时钟相关的标识寄存器。再试试

灰小子:

这种情况建议先用示波器测量下晶振,看看是否起震了

Liang Chen6:

回复 灰小子:

加入说,没有起振,但是为什么会出现没有起振的情况呢?就STM32或者飞思卡尔的也从来没出现这种奇怪状况

Liang Chen6:

回复 gaoyang9992006:

初始状态下,相关寄存器的值不是默认值吗?另外,以您的经验,哪种寄存器会影响这个呢?

gaoyang9992006:

回复 Liang Chen6:

晶振的问题或者寄存器哪儿没设置正确。更严重的电路出现的物理性故障。

灰小子:

如果是晶振没有起震的话,一般是负载电容和寄生电容的问题。可以尝试更换下电容,pcb布线时晶振和电容尽量靠近相应引脚等等。

对于32.768kHz的晶振,外壳接地我也曾经遇到过受电源纹波影响的情况。

赞(0)
未经允许不得转载:TI中文支持网 » MSP430时钟初始化异常,可能跟流片有关,希望能够解答
分享到: 更多 (0)