[求助] 为什么我的MSP430F5529时钟初始化使用高速XT1模式,XT1HFOFFG一直是高

yg776   2019-7-10 19:21 楼主

MCU:MSP430F5529

本人想使用这款单片机的XT1高速频率模式,但是经过配置之后,XT1HFOFFG标志位一直为高。

我现在外部接的是12M无源晶振和2个30PF负载电容。

板子是自己做的,之前尝试过用32768HZ的晶振使用低速频率模式就能正常工作。换成告诉就有问题,网上的类型情况我也百度了,该改的都改了,可是还是有问题,下面是我的初始化代码:

求大佬帮我看看哪里有问题,谢谢了!

 

P5SEL |= BIT4+BIT5;
    UCSCTL6 |= XTS + XT1DRIVE_1;
    UCSCTL6 &= ~XT1OFF;


    UCSCTL3 = SELREF__REFOCLK + FLLREFDIV__1 ;//FLL参考时钟XT1 FLL参考时钟1分频
    __bis_SR_register(SCG0);//关闭FLL
    UCSCTL0 = 0x0000;//DCO MOD最低
    UCSCTL1 = DCORSEL_2 + 0 ;//DCO频率范围选择2 + 使能调制器
    UCSCTL2 = FLLD__1 + 61 ;//预分频1  + 31倍倍频
    __bic_SR_register(SCG0);//开启FLL
    while(SFRIFG1 & OFIFG)
    {
        UCSCTL7 &= ~(DCOFFG + XT1HFOFFG + XT1LFOFFG +XT2OFFG);//清除XT1 XT2 DCO时钟错误标志
        SFRIFG1 &= ~OFIFG;//清除时钟错误标志
    }
    UCSCTL4 = SELA__XT1CLK + SELM__XT1CLK + SELS__XT1CLK  ;
    UCSCTL5 = DIVPA__1 + DIVM__1 + DIVS__1 + DIVA__1 ;

回复评论 (3)

XT1HFOFFG标志位一直为高,说明还是配置的不对,还得仔细看下说明书上MSP430F5529时钟的配置。

点赞  2019-7-11 09:00
引用: alan000345 发表于 2019-7-11 09:00 XT1HFOFFG标志位一直为高,说明还是配置的不对,还得仔细看下说明书上MSP430F5529时钟的配置。

嗯 我就是看了才不明白 我明明已经开了XT1的高频模式,也选择了高频模式的范围。我真的不明白哪里还有问题了。我百度了很多这个案例,有人这个标志位没清零是因为寄存器配置有问题,我现在配置我确定是没错的,晶振用的无源加负载电容,可是就是标志位不能清零。

点赞  2019-7-13 10:04

此问题已经解决。

我将以下程序进行了更改。

    while(SFRIFG1 & OFIFG)
    {
        UCSCTL7 &= ~(DCOFFG + XT1HFOFFG + XT1LFOFFG +XT2OFFG);//清除XT1 XT2 DCO时钟错误标志
        SFRIFG1 &= ~OFIFG;//清除时钟错误标志
    }
    UCSCTL4 = SELA__XT1CLK + SELM__XT1CLK + SELS__XT1CLK  ;
    UCSCTL5 = DIVPA__1 + DIVM__1 + DIVS__1 + DIVA__1 ;

 

改为了

    UCSCTL4 = SELA__XT1CLK + SELM__XT1CLK + SELS__XT1CLK  ;
    UCSCTL5 = DIVPA__1 + DIVM__1 + DIVS__1 + DIVA__1 ;

    while(SFRIFG1 & OFIFG)
    {
        UCSCTL7 &= ~(DCOFFG + XT1HFOFFG + XT1LFOFFG +XT2OFFG);//清除XT1 XT2 DCO时钟错误标志
        SFRIFG1 &= ~OFIFG;//清除时钟错误标志
    }
 

我的理解是要先让各个时钟分配到时钟源,只有当XT1知道自己没有被3个时钟的任何一个使用,它才会自己关闭。

点赞  2019-8-2 17:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复