搜索
bottom↓
回复: 2

求助,msp430f5438A内部时钟倍频问题

[复制链接]

出0入0汤圆

发表于 2014-11-12 09:39:55 | 显示全部楼层 |阅读模式
最近做一个项目要求低功耗,原先使用的是外部8M晶振,但8M晶振一直起振使功耗无法去到想要的水平(3.6v供电,50微安电流)。如果进入低功耗时强制把外部晶振引脚关掉的话,退出低功耗重新初始化时钟也无法让8M晶振重新起振,这样就无法正常工作。后来为了解决这个问题就想到用内部时钟,但内部时钟倍频始终没办法调整到8M,频率好像被哪里限制了,最高输出的频率测得是2.358M。请各位帮忙看看,谢谢!
下面是我的时钟初始化程序(不好意思,这个程序也是网上找来的):
void McuSetFrequency(void)
{
    // 关看门狗
    WDTCTL = WDTPW+WDTHOLD;
   
    // 关FLL,等设置完成后,再开启FLL
    __bis_SR_register(SCG0);

    // MCLK=SMCLK=1MHz; ACLK=32.768kHz; FLL允许
    UCSCTL0    = 0x0000;
    UCSCTL1    = 0x0010;
    UCSCTL2    = 0x103C;
    UCSCTL3    = 0x0022;
    UCSCTL4    = 0x0233;
    UCSCTL5    = 0x0000;
    UCSCTL6    = 0x0101;
    UCSCTL7    = 0x0000;
    UCSCTL8    = 0x0007;
   
    // 重新开启FLL
    __bic_SR_register(SCG0);

    // 延时等待FLL自动调整DCO,250000是根据8MHz时钟设置的。
    // 最惨的状况是FLL把DCO从0开始调到31后才稳定,这个延时即是根据这种情况算得的。
    __delay_cycles(250000);

    // 等待异常标志清除
    // 用VLO和REFO做MCLK的时钟源的时候,不需要考虑这些标志,直接用。
    do
    {
        // 清异常标志
        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
        SFRIFG1 &= ~OFIFG;                    
    }while (SFRIFG1&OFIFG);     // 看看异常是否还在
}

按芯片说明倍频是通过UCSCTL2寄存器调整的,但我无论怎么更改都无法把频率调上去,就如上面所说频率好像被哪个地方限制住了,请各位帮忙看看。

出0入0汤圆

 楼主| 发表于 2014-11-12 10:17:51 | 显示全部楼层
请大家出出主意,这问题困扰了我好久。

出0入0汤圆

 楼主| 发表于 2014-11-12 21:13:20 | 显示全部楼层
怎么都没人回复我?是不是我的问题有问题?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 23:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表