TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430g2231配置时钟

我是个软件新手,我最近用MSP430g2231在编一个应用软件(编译仿真用的是IAR),刚开始我配置的主频是其“出厂自带校准的1Mhz DCO”,且已调通程序正常工作;现在我想将主频设到2Mhz左右(不需要校准,只要将DCO频率设置到2MHz左右就行),虽然MSP430g2231的手册中有这方面介绍(如23页DCO介绍部分),但我看了半天还是没搞懂如何具体地配置主频,比如如何去写那几个寄存器?特请专家帮我具体描述一下,最好帮我把这段语句写出来,特致一只菜鸟的十分感谢!

 以下是我目前正常使用的1MHz DOC 的时钟配置函数

void Clockinit(void)

{

 DCOCTL = 0x00;                  // Safe Flow

 if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    

 {  

   while(1);        // If calibration constants erased, do not load, trap CPU!!

 }  

 BCSCTL1 = CALBC1_1MHZ;        // 主频 run at 1Mhz (内部DCO)

 DCOCTL = CALDCO_1MHZ;

}

Hardy Hu:

 

void Clockinit(void)

{

 DCOCTL = 0x00;                  // 先设置DCO到最慢

 if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)           //检查DCO校正数据空间是否为FF,FF就是说明这两个校正数据丢失,如果丢失则一直死循环,程序相当于挂掉了                         

 {  

   while(1);        // If calibration constants erased, do not load, trap CPU!!

 }  

 BCSCTL1 = CALBC1_1MHZ;        // 把校正数据赋值给DCO的寄存器,主频 run at 1Mhz (内部DCO)

 DCOCTL = CALDCO_1MHZ;        // 把校正数据赋值给DCO的寄存器,主频 run at 1Mhz (内部DCO)

}

 

Peter_Zheng:

回复 Hardy Hu:

DCO的配置,由于对于1MHZ/8MHZ/12MHZ/16MHZ在flash  0x10F8-0x10FF的地址进行了出场设定,那么就可以直接对DCO寄存器就行配置。如果对于其他频率,不需要校正的,可以通过对DCOCTL,BCSCTL1中的DCOx/MODx/RSELx进行配置,具体参数查看数据手册的第25页。

Young Hu:

回复 Hardy Hu:

您好!

您测一下下面的代码

   DCOCTL = 0x00;

   DCOCTL = MOD1 + MOD2 + DCO0;

   BCSCTL1 = XT2OFF + DIVA_0 + RSEL0 + RSEL3;

我还没来得及测。

然后,有个很有用的外设配置工具是GRACE,集成在CCS5和IAR中的,如果以后遇到类似的问题您可以自己来配置。

Fuchong Wang:

回复 YM lee:

楼上说:最后俺又用高级示波器细测了一下时钟信号,发现一个特殊现象——–出厂校准的1MHzDCO,频率准确度比较高,但方波上下沿抖动厉害;其它自选配置的DCO频率准确度差一些,但波形非常稳定。希望大家在选取时留意参考这点。

 

请大侠确定一下是否真的有这种现象?什么原因引起的?有什么影响?

Fuchong Wang:

回复 YM lee:

看了下手册,好像是这么回事,好像MODx位就是控制这个的,不过看文档好像碰巧了的配置却可以无此现象

Hardy Hu:

回复 Fuchong Wang:

modulator造成的,DCO进行频率补偿时,只能在两个相近的频率中进行加权后输出,所以会在两个频率点上不停装换,公式为:t = (32 – MODx) × tDCO + MODx × tDCO+1

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430g2231配置时钟
分享到: 更多 (0)