14259|18

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

急~请教MSP430F5438A 的MCLK工作在最高频25MHz时如何设置内核工作电压? [复制链接]

请问F5438A 的工作在主频25MHz时该如何设置内核工作电压Vcore?
目前芯片工作在16MHz时正常,但当将MCLK设置在24M后不能进入主程序...看资料上说需要设置Vcore,但对着寄存器弄了半天也没搞定,求指教~~!!

最新回复

感谢楼楼提问,我也解决问题啦  谢谢  详情 回复 发表于 2015-8-13 22:56
 
点赞 关注(1)

回复
举报

99

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
顶,我试了半天也不行,我最多跑过18M的,这msp430f5438小姑娘不给力啊!求高手指导
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
再顶,求版主现身回答
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

4
 

版主版主版主~~~论坛好像不太...是不是问题太低级啦~ 呵

顶顶顶
 
 
 

回复

60

帖子

0

TA的资源

纯净的硅(初级)

5
 

回复 沙发 水货老手 的帖子

MSP430F5438的datasheet注明MCLK支持的最高频率为18MHZ
MSP430F5438A的datasheet注明MCLK支持的最高频率为25MHZ
 
 
 

回复

60

帖子

0

TA的资源

纯净的硅(初级)

6
 

参考datasheet所示,要达到25MHZ

需要设置PMMCOREVx=3,VCC在2.4V-3.6V之间。

PMMCOREVx在寄存器PMMCTL0

[ 本帖最后由 3g465 于 2011-8-22 10:20 编辑 ]
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

7
 
Vcc用3.3V,寄存器PMMCTL0已经设置过了:PMMCTL0 |= PMMCOREV_3;
好像光设置这个还不行~~(谢3g465
 
 
 

回复

60

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 7楼 MSP430_WZR 的帖子

你的MCLK是用DCO倍频得到的吗?它的频率范围的设置需要注意一下。
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

9
 
查了下5438的手册,确实在电路上内核电源要高些
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

10
 
MCLK从设置从XT2取的~直接外接24M晶振,2分频后工作没问题,不分频就不行了~(DCO倍频也试过,可以跑16M)~~
 
 
 

回复

60

帖子

0

TA的资源

纯净的硅(初级)

11
 

回复 7楼 MSP430_WZR 的帖子

PMMCTL0_H = 0xA5;                                         //开PMM电源管理                             
     SVSMLCTL |= SVSMLRRL_1 + SVMLE;                            //配置SVML电压
     PMMCTL0 =  PMMPW + PMMCOREV_2;                             //配置内核电压
     while((PMMIFG & SVSMLDLYIFG ) == 0);                       //等待设置完成
     PMMIFG &= ~(SVMLVLRIFG + SVMLIFG + SVSMLDLYIFG);
     if((PMMIFG & SVMLIFG) == 1)                                //判断内核电压是否上升到VSVML
           while((PMMIFG & SVMLVLRIFG) == 0);                   //如果没有等待
     SVSMLCTL &= ~SVMLE;                                        //关掉SVML模块
     PMMCTL0_H = 0X00;                                          //锁存配置
--------
给你贴段例程代码吧
原来这个PMM跟WDT一样也有PASSWORD的,之前我都没注意

赞赏

1

查看全部赞赏

 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

12
 
~~3g465 已经可以了~感激涕零,大恩不言谢~呵呵呵
PMMCTL0 = “ PMMPW ” + PMMCOREV_3;   是这个没 +PMMPW 了~哎
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

13
 
谢谢楼上,我今晚可以跑25M了,我设置的vcore的为1.4V,请问资料上说要多少的?我只有一本用户手册。求说明你资料上的电压
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

14
 
手册上说要看器件特殊资料,只懂得用户手册,求高人告诉器件特殊资料身在何方!
 
 
 

回复

60

帖子

0

TA的资源

纯净的硅(初级)

15
 

回复 14楼 水货老手 的帖子

手册上这个一般都是值具体型号的MCU的datasheet。因为手册一般是一个系列通用的指引,个别的参数需要参考具体的datasheet。这也是非常重要的资料哦
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

16
 

感谢12楼

一直想跑到24M一直跑不到,贴了12楼的代码,可以了,感谢!
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

17
 
void SetVcoreUp (unsigned int level)
{           
  // Open PMM registers for write
  PMMCTL0_H = PMMPW_H;                                            // Set SVS/SVM high side new level
  SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new level
  SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;                   // Wait till SVM is settled
  while ((PMMIFG & SVSMLDLYIFG) == 0);                            // Clear already set flags
  PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);                              // Set VCore to new level
  PMMCTL0_L = PMMCOREV0 * level;                                  // Wait till new level reached
  if ((PMMIFG & SVMLIFG))
  while ((PMMIFG & SVMLVLRIFG) == 0);                             // Set SVS/SVM low side to new level
  SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write access
  PMMCTL0_H = 0x00;
}
void TIME(void)
{
  SetVcoreUp (0x01);
  SetVcoreUp (0x02);  
  SetVcoreUp (0x03);  
  UCSCTL3 = SELREF_2;                       // Set DCO FLL reference = REFO
  UCSCTL4 |= SELA_2;                        // Set ACLK = REFO
__bis_SR_register(SCG0);                  // Disable the FLL control loop
  UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
  UCSCTL1 = DCORSEL_7;                      // Select DCO range 50MHz operation
  UCSCTL2 = FLLD_1 + 762;                   // Set DCO Multiplier for 25MHz
                                            // (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz // 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 25 MHz / 32,768 Hz ~ 780k MCLK cycles for DCO to settle
  __delay_cycles(782000);
// Loop until XT1,XT2 & DCO stabilizes - In this case only DCO has to stabilize
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
}

void sysclk_init(void)
{
          /* Using 22.1148MHz for XT2 */   
    P5SEL  |= BIT2 + BIT3;                    // Port select XT2
    UCSCTL6 &= ~XT2OFF;                       // Enable XT2
    UCSCTL3 |= SELREF_2;                      // FLLref = REFO
    UCSCTL4 |= SELA__REFOCLK;                 // ACLK=REFO(32.768kHz),SMCLK=DCO,MCLK=DCO
    do
    {                                         // Clear XT2,XT1,DCO fault flags                                             
        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);                                                   
        SFRIFG1 &= ~OFIFG;                    // Clear fault flags
    }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

    UCSCTL6 &= ~(XT2DRIVE0 + XT2DRIVE1);      // Decrease XT2 Drive according to expected frequency                                             
    UCSCTL6 |= XT2DRIVE_2;                    // XT2 Drive Level mode: 2, XT2: 16MHz~24MHz                     
    UCSCTL4 |= SELS_5 + SELM_5;               // SMCLK=MCLK=XT2
}
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

18
 
我5438外接25MHz, 跑起来未发现问题。
void initClock(void)
{
  
  // 初始化P7.0(#13)和P7.1(#14)为复用功能, XT1 外部时钟晶体接线
  GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P7 , GPIO_PIN0 | GPIO_PIN1 );  
  // 启动XT1  
  //Initializes the XT1 crystal oscillator with no timeout
  //In case of failure, code hangs here.
  //For time-out instead of code hang use UCS_LFXT1StartWithTimeout()
  UCS_LFXT1Start( UCS_XT1_DRIVE0 , UCS_XCAP_3);   
  // DCO参考时钟选择XT1,选择了默认参数  
  //UCS_clockSignalInit(  UCS_FLLREF, UCS_XT1CLK_SELECT , UCS_CLOCK_DIVIDER_1 );
  
  
  // 初始化P5.2(#89)和P5.3(#90)为复用功能, XT2 外部时钟晶体接线
  GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_P5 , GPIO_PIN2 | GPIO_PIN3 );  
  // 启动XT2
  UCS_XT2Start( UCS_XT2DRIVE_24MHZ_32MHZ );  
  
  // DCO参考时钟选择XT1,选择了默认参数  
  //UCS_clockSignalInit(  UCS_FLLREF, UCS_XT1CLK_SELECT , UCS_CLOCK_DIVIDER_1 );
  
  
  // ACLK参考时钟源选择REFO, 32768Hz
  //UCS_clockSignalInit(UCS_ACLK, UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1);   
  // DCO参考时钟源选择REFO,32768Hz
  //UCS_clockSignalInit(UCS_FLLREF, UCS_REFOCLK_SELECT , UCS_CLOCK_DIVIDER_1);
  
  // DCO时钟16MHz, used as MCLK and SMCLK frequency
  // 该函数第1个参数为系统工作频率 16384KHz/1024=16MHz,第2个参数为 工作频率/DCO参考频率=16*1024*1024/32768=512
#define FRQ_DIV 1
  //UCS_initFLLSettle(16384/FRQ_DIV , 512/FRQ_DIV);  
  
  //! Initializes the XT2 crystal oscillator, which supports crystal frequencies
  //! between 4 MHz and 32 MHz, depending on the selected drive strength. Loops
  //! until all oscillator fault flags are cleared, with no timeout. See the
  //! device-specific data sheet for appropriate drive settings.
  UCS_clockSignalInit(UCS_MCLK,UCS_XT2CLK_SELECT ,UCS_CLOCK_DIVIDER_1);
  
  
  //SMCLK参考时钟源选择DCO,16MHz/4=4MHz,4*1024*1024=4194304Hz
  //UCS_clockSignalInit(UCS_SMCLK,UCS_DCOCLK_SELECT,UCS_CLOCK_DIVIDER_4);
  UCS_clockSignalInit(UCS_SMCLK,UCS_XT2CLK_SELECT,UCS_CLOCK_DIVIDER_4);
  
  //延时0.5秒, 让时钟源稳定
  delay_ms(500);
  
   UCS_setExternalClockSource(32768,MCLK_FRQ);  
  
  cvMCLK = UCS_getMCLK();  
  cvSMCLK = UCS_getSMCLK();  
  cvACLK = UCS_getACLK();  
  
}
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

19
 
水货老手 发表于 2011-8-20 09:53
顶,我试了半天也不行,我最多跑过18M的,这msp430f5438小姑娘不给力啊!求高手指导

感谢楼楼提问,我也解决问题啦  谢谢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表