TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

ACLK VLO是否受DCOCLK影响?

Other Parts Discussed in Thread: MSP430G2553

#include  <msp430g2553.h>

unsigned char s;

void delay(void);

void main(void)

{

 WDTCTL = WDTPW +WDTHOLD;                  // Stop Watchdog Timer

 BCSCTL2=SELM_3+DIVM_0+DIVS_0;

 BCSCTL3 |= LFXT1S_2;                      // LFXT1 = VLO

 if(CALBC1_16MHZ!=0xff)

 {

 delay();

 DCOCTL = 0;

     BCSCTL1 = CALBC1_16MHZ;

     DCOCTL = CALDCO_16MHZ;

 }

 //SMCLK Sub-System Main Clk, ACLK和SMCLK可以通过复用引脚输出,MCLK不能直接输出体现, MCLK可以配置为VLO或者DCO

 //振荡频率是时钟频率的12倍~~~!!!!!

     P1DIR |= 0x31;                            // P1.0,5 and P1.4 outputs

     P1SEL |= 0x11;                            // P1.0,4 ACLK/VLO, SMCLK/DCO output

 while(1)

 {   P1OUT |= 0x20;

 P1OUT &= ~0x20;//20;

                           // P1.5 = 1, 通过开关P1.5来体现MCLK,这两条指令的周期大概为SMCLK的1/12

 }

}

void delay(void)

{

volatile unsigned int i;

for (i=10;i>0;i--);

}

你好,我现在用的是MSP430G2553的开发板,刚学,上面是我改的一个例程。

请问1、ACLK从P1.0口输出的VLO频率是否与SMCLK有关?2、为什么测试中上述程序我P1.0ACLK我测的是17KHZ,SMCLK是8MHZ,而我把DCO部分注释掉后,ACLK才变成正常值12KHZ,而SMCLK却变成900KHZ?3、怎么才能让ACLK输出VLO12KHZ又能让SMCLK输出8MHZ?

  • 1.VLO不受DCO影响,但是VLO不是很准确,其受到温度,供电电压等影响很大。

     2.DCO补偿这一段写得不是很合适,建议换成如下写法

     if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)                                    

     {  

       while(1);                               // If calibration constants erased

                                                     // do not load, trap CPU!!

     }

    //8Mhz

     BCSCTL1 = CALBC1_8MHZ;                    // Set range

     DCOCTL = CALDCO_8MHZ;                     // Set DCO step + modulation */

    3.这两条指令的周期大概为SMCLK的1/12,不理解,能够解释一下?

  • 这也是我看的一个官方例程,上面说的是“1/10”,但是我用示波器再怎么测,得到的只是差不多是1/12,所以我自己改了下,原理我也不是很清楚。。。。

  • 具体是多少要看编译后的汇编代码在这一段执行循环时用了多少条指令,再把每条指令需要的cycle加起来行了