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.

>>>>>关于MSP430F1611的时钟问题!!

Other Parts Discussed in Thread: MSP430F1611

TI你好,我再使用MSP430F1611开发的时候发现几个问题如下,想请教解决方法:

1,XT1外接8MHz的水晶振子,当我把MCLK和SMCLK的时钟源切换为外部晶振的时候,IFG1:OFIFG位会自动置1且无法清零,请问如何才能解决?
代码如下:

    do  //wait stable
    {
        IFG1 = 0;  //clear flag
        for(i=0; i<0x50; i++);  //wait about 50us
    }while((IFG1&0x02) == 0x02);  //check flag
    
    BCSCTL2 |= 0xC8;    //switch MCLK=XT1 SMCLK=XT1

就是在最后一句这里执行过后,IFG1:OFIFG就会自动置1,且无法清零。

2. 执行MCLK和SMCLK时钟源切换后P5.5/SMCLK就无法输出SMCLK的频率

使用默认时钟源DCO时,P5.5可以清除的输出SMCLK的频率,但是切换到外部晶振以后P5.5就无法输出SMCLK的频率了,输出是一个固定高电平,请问如何解决?

代码如下:

    P5SEL |=  0x20;    //p5.5 SMCLK output
    P5DIR |= 0x20;     //p5.5 SMCLK output

    //如果下面这段时钟切换,P5.5可以输出SMCLK,但是执行这段以后P5.5就无输出了

    do  //wait stable
    {
        IFG1 = 0;  //clear flag
        for(i=0; i<0x50; i++);  //wait about 50us
    }while((IFG1&0x02) == 0x02);  //check flag

    BCSCTL2 |= 0xC8;    //如果没有这段,P5.5可以输出SMCLK,但是执行这段以后P5.5就无输出了

3. SPI的TX中断使能位,IE1:UTXIE0和IE1:URXIE0时钟无法被置1。

代码如下:

IE1     |=  0xC0; //RIE enable, TIE enable,执行这句话以后IE1无任何变化

求大虾指点,多谢!

  • 你好!

    1.你的情况看上去像XT1没有起振,在MSP430F1611中XT1配置为HF模式时,一定要设置XTS位为1,另外XT1内部已经集成了12PF的负载电容,故外面的电容需要根据晶体的手册适当设置。

    2. BCSCTL2 |= 0xC8;将SMCLK配置的时钟源从XT2来的,如果XT2没有接,肯定就没有输出了啥,所以一定要对照MCU的手册看懂这个代码写的意思。

    3.IE1是中断的使能寄存器,在接受或者发送数据时得查看IFG1。

    建议根据代码对照着user's guide上先看看。

  • Hi Hardy

    谢谢你的恢复!关于你的回答有几点疑问,烦请确认。

    1. XTS已经置1,示波器显示晶振也已起振,但是IFG1:OFIFG还是为1,代码如下:

        BCSCTL1 |= 0x40;    //set XTS as High frequency mode
        do  //wait stable
        {
            IFG1 = 0;  //clear flag
            for(i=0; i<0x50; i++);  //wait about 50us
                
            TimOutCnt++;  //time cnt++
            if(TimOutCnt >= 100000)  //if time out break
            {
                break;
            }
        }while((IFG1&0x02) == 0x02);  //check flag
        
        BCSCTL2 |= 0xC8;        //switch MCLK=XT1 SMCLK=XT1

    外部晶振的旁路电容也已按照水晶手册配置,去掉外部旁路电容也试过了,现象依然无法改变。具体现象请参照附件图片,请问有没有其他地方需要注意?

    2.MSP430F1611的用户指南里关于BCSCTL2 写道:

    SELS Bit 3 Select SMCLK. This bit selects the SMCLK source.
    0 DCOCLK
    1 XT2CLK when XT2 oscillator present on-chip. LFXT1CLK when XT2
    oscillator not present on-chip.

    大致意思应该是说,如果XT2有晶振就切换为XT2,如果XT2没有晶振就用XT1,我现在XT1上有晶振,XT2上没有晶振,我把BCSCTL2设为0xC8,理论上SMCLK应该切换为XT1才对。为什么在P5.5/SMCLK上看不到CLOCK的输出?另外补充一点,P5.4/MCLK可以看到CLOCK的输出。请教该如何做才能够要把SMCLK切换为XT1?

    3.这个问题已解决,必须先把U0CTL:SWRST置0以后,才能对IE1:UTXIE和IE1:URXIE 做设定,关于这点,硬件手册上并没有说明先后次序,希望及时更新手册,以免给更多用户造成困扰,谢谢。

  • 刚才忘记贴附件了,现补上。

  • 你好!

    XT2 oscillator是指的MCU内部的晶体起振回路,不是说没有接XT2就是没有XT2 oscillator,F1611是有XT2的,见下图。

    所以如果按照前面的那个代码来设置,如果没有接XT2,SMCLK的频率就相当于一致是0。

  • 你好!

    如果XT2没有接,把XT2OFF置高。

  • OK!谢谢你的回答我再试试看!