打印

关于MSP430F6736 UCS的问题!

[复制链接]
1378|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinpaidianzi|  楼主 | 2015-1-31 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用6736做了一块板子,在进行UCS的初始化时,运行初始化代码如下:
PJDIR |= BIT0 | BIT1 | BIT3;           // ACLK, MCLK, SMCLK set out to pins
PJSEL |= BIT0 | BIT1 | BIT3;           // PJ.0,1,3 for debugging purposes.
UCSCTL6 &= ~(XT1OFF);                   // Enable XT1
   UCSCTL6 |= XCAP_1;                      // Internal load cap
   // 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
       //for(unsigned int i=0;i<50000;i++);
   }
   while (SFRIFG1 & OFIFG);              // Test oscillator fault flag



相关帖子

沙发
jinpaidianzi|  楼主 | 2015-1-31 21:38 | 只看该作者
虽然能够从while( SFRIFG1 & OFIFG )里面跳出来,可是OFIFG的值仍然是1,同时DCOFFG的值也是1,从PJ.3管脚也看不到32k的波形。换了好几个晶振了仍然不行,这是为什么,OFIFG置位了自检还能通过?
同时我看到了UG上说,DCO=0或者31时DCOFFG会置位,可是DCO的值似乎不是用户软件可以设置的啊,请大神赐教啊!
补充一个,在单步运行时,运行完了SFRIFG1 &= ~OFIFG; 这一句之后,UCSCTL0寄存器会变成0x00F8也就是DCO的值变成了0。DCOFFG为1,XT1LFOFFG和XT2OFFG为0。在清空OFIFG之前,从PJ管脚读出来的ACLK,SMCLK和MCLK都是正确的。执行清空操作之后就不对了。

使用特权

评论回复
板凳
Unshining| | 2015-2-1 15:24 | 只看该作者
我用的是MSP430F6726,和6736貌似只少了一组SD24,其余一样。
我的代码可以用,代码如下:


    UCSCTL6 &= ~(XT1OFF);                   // Enable XT1
    UCSCTL6 |= XCAP_2;                      // Internal load cap, 12pF

        __bis_SR_register(SCG0);               // Disable the FLL control loop
            UCSCTL0 = 0x0000;                      // Set lowest possible DCOx, MODx。这两部分会由硬件自动更新
            UCSCTL1 = DCORSEL_5;                   // Select DCO range 16MHz operation。参见datasheet 57页
            UCSCTL2 = FLLD_1 | 243;                // Set DCO Multiplier for 8MHz
                                                   // (N + 1) * FLLRef = Fdcodiv
                                                   // (243 + 1) * 32768 = 8MHz
                                                   // Set FLL Div = fDCOCLK/2
            __bic_SR_register(SCG0);               // Enable the FLL control loop

            // Worst-case settling time for the DCO when the DCO range bits have been
            // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
            // UG for optimization.
            // 32 x 32 x 8 MHz / 32,768 Hz = 250000 = MCLK cycles for DCO to settle
            __delay_cycles(250000);

            // 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

使用特权

评论回复
地板
Unshining| | 2015-2-1 15:29 | 只看该作者
我的代码是打开了DCO与FLL。如果不需要的话,按LZ这样写应该是可以的。LZ可以改变一下XCAP值试试。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

1489

帖子

1

粉丝