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.

MSP430F5529DCO倍频出现问题

Other Parts Discussed in Thread: MSP430F5529, MSPWARE

DCO选用XT2晶振4MHZ作为参考源,想要倍到12MHZ,但是发现实际MCLK输出只有4.35MHZ。

时钟设置如下:

void UCSSet2()
{
   P2DIR |= BIT2;                            // SMCLK输出
   P2SEL |= BIT2;
   P7DIR |= BIT7;                            // MCLK输出
   P7SEL |= BIT7;

   P5SEL |= BIT2+BIT3;                       // 选择XT2

   UCSCTL6 &= ~XT2OFF;                       // 打开XT2
   UCSCTL3 |= SELREF_2;                      // FLL基准选择
   do          //直到振荡稳定
   {
     UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
                                             // 清除XT2,XT1,DCO错误标志
     SFRIFG1 &= ~OFIFG;
   }while (SFRIFG1&OFIFG);
   //UCSCTL6 &= ~XT2DRIVE0;                     __delay_cycles(375000);
   UCSCTL3 |= SELREF_5;                      // Set DCO FLL reference = XT2

   __bis_SR_register(SCG0);                  // Disable the FLL control loop
   UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
   UCSCTL1 = DCORSEL_5;                      // Select DCO range 24MHz operation
   UCSCTL2 = FLLD_0+2;                   // Set DCO Multiplier for 12MHz

   __bic_SR_register(SCG0);                  // Enable the FLL control loop
   __delay_cycles(375000);

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

   UCSCTL4 = SELA__XT1CLK+SELS__DCOCLK + SELM__DCOCLK;                }