科技网

当前位置: 首页 >智能

MSP430G2553系统学习之系统时钟_a

智能
来源: 作者: 2020-01-16 15:41:13

MSP430G2553系统学习之系统时钟

把MSP430G2553的系统时钟作为系统学习的一篇讲解可见他的重要性,那为什么要把时钟放到第一位呢?学过FPGA的朋友都能体会得到,如果把CPU的所有工作任务作为纵坐标(y轴),那么时钟就是他的横坐标(x轴)了,如下图1 时钟概念所示。

图 1 时钟概念

也就是说时钟就是一个微机(小到8位的51单片机大到32位的S3C2440等)在时域上的一个衡量标准。如果学过FPGA的朋友都很清楚,微机是以对输入的时钟源的脉冲计数的方式来确定时域参数的。所以,MSP430单片机也一样,拿到他之后首先从时钟入手,一定要养成这种系统学习的好方法,否则再学一百款单片机也是感觉再学新的,做不到举一反三,事半功倍的效果。如果能够把握这其中的通理,你会有所有的单片机都一样样的感觉,当然学起来也就游刃有余了。废话不多说了,进入正题

一 、硬件

Msp420g2553的系统时钟是由VLOCK、LFXT1CLK和DCOCLK组成,如下图2 系统时钟组成所示:

图2 系统时钟组成

即2553的系统时钟源有三个分别是片内超低功耗12KHz的内部振荡器;由外部时钟源提供的LFXT1CLK时钟源,也即LanuchPad开发板上未焊接的时钟电路,在这里我们可以焊接一个32.768KHz的低频时钟晶体由2553的XIN引脚输入;片内可数字控制的振荡器DCOCLK,在软件的调节下该时钟的输出范围为0.6MHz到26MHz。在这三个时钟源的独立工作或是在三个时钟源相互协调配合(是可以通过软件配置的)下为2553系统提供了系统时钟ACLK、MCLK和SMCLK。

ACLK为辅助时钟,由软件选择来自VLOCK、LFXT1CLK之一经过1,2,4,8分频之后得到,为外围模块提供时钟源。

MCLK为主时钟,由软件选择来自VLOCK、LFXT1CLK和DCOCLK之一经过1,2,4,8分频之后得到,为CPU和系统提供时钟。

SMCLK为子系统时钟,由软件选择来自VLOCK、LFXT1CLK和DCOCLK之一经过1,2,4,8分频之后得到,为外围各个模块提供时钟。

只有灵活掌握了系统时钟的配置之后才能为之后深入学习2553打下扎实的基础,例如之后再调试通用串口通信接口USCI时就不必考虑、担心自己的时钟是否配置错误的问题了,也为调试扫清了道路。

二、软件

了解了硬件构成便可以着手动手编写代码,对msp430g2553的系统时钟进行配置了,该代码的作用就是要实现对ACLK、MCLK和SMCLK的配置以供其他模块儿方便的使用。软件代码的编写笔者采用了模块儿化编程,这也是笔者在学习ARM(S3C2440)的时候体会到的一种对单片机应用的编程方法,今天就把这种布局应用于430单片机的应用之中。

/ ***************************************************************

* File name : clock.c

* Creating time :

* Author : 李帅

* pen-name : 亦然

* Organization : 济南大学

* Function : 该文件可用作模块儿化编程作为MSP430G2553的系统时钟配置文 件,在工程的主函数中直接调用Init_Clk()函数即可对系统时钟

进行配置。

* Declareing : 如有错误的地方请各位指出,交流。交流使我们共同进步!

* E-mail : ls_core@

*************************************************************/

#include

/ *DCOCTL 寄存器*/

/ **********************************************************

* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

* DCO.2 CCO.1 DCO.0 MOD.4 MOD.3 MOD.2 MOD.1 MOD.0

* DCO.0——DCO.2定义8种频率之一,可分段调节DCOCLK频率,相邻两种频率相差10%。

* 而频率由注入直流发生器的电流定义。

* MOD.O——MOD.4定义在32个DCO周期中插入的fdco+l周期个数,而在余下的DCO周期

* 中为fDco周期,控制切换DCO和DCO+1选择的两种频率。如果DCO常数为7,表示已

* 经选择最高颂率,此时不能利用MOD.O-MOD.4进行频率调整。

* *********************************************************/

/ *BCSCTL1 寄存器*/

/ **********************************************************

* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

* XT2OFF XTS DIVA.1 DIVA.0 XT5V Rse1.2 Rse1.1 Rse1.0

*XT2OFF控制 XT2 振荡器的开启与关闭。

*XT2OFF=0,XT2振荡器开启;

*XT2OFF=1,XT2振疡器关闭(默认XT2关闭)。

*XTS控制 LFXTl 工作模武,选择需结合实际晶体振荡器连接情况。

*XTS=0,LFXTl工作在低频模式 (默认低频模式);

*XTS=1,LFXTl工作在高频模式(必须连接有相应高频时钟源)。

*DIVA.0,DIVA.l控制ACLK分频。

*0 不分频(默认不分频);

*1 2分频; *2 4分频;

*3 8分频。

*XT5V此位设置为0。

*Rse1.0,Rsel.l,Rse1.2三位控制某个内部电阻以决定标称频率。

*Rse1=0,选择最低的频率;

*Rse1=7,选择最低的标称频率;

***********************************************************/

/ *BCSCTL2 寄存器*/

/ **********************************************************

* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

*SELM.1 SELM.0 DIVM.1 DIVM.0 SELS DIVS.1 DIVS.0 DCOR

SELM.1,SELM.0= 00 MCLK时钟源为DCOCLK DIVM.1,DlVM.0=00 不分频 DIVS.1,DIVS.0=00 SMCLK对MCLK不分频

SELM.1,SELM.0= 01 MCLK时钟源为DCOCLK DIVM.1,DlVM.0=01 2分频 DIVS.1,DIVS.0=01 SMCLK对MCLK2分频

SELM.1,SELM.0= 10 MCLK时钟源为LFXTICLK DIVM.1,DlVM.0=10 4分频 DIVS.1,DIVS.0=10 SMCLK对MCLK4分频

SELM.1,SELM.0= 11 MCLK时钟源为LFXT1CLK DIVM.1,DlVM.0 =11 8分频 DIVS.1,DIVS.0=11 SMCLK对MCLK8分频

根据以上设定规则:

BCSCTL2=00 00 00 00 MCLK和SMCLK都选DCOCLK不分频 0x00

BCSCTL2=01 00 00 00 MCLK和SMCLK也选DCOCLK不分频 0x40

BCSCTL2=10 00 00 00 MCLK和SMCLK都选LFXTICLK不分频 0x80

BCSCTL2=11 00 00 00 MCLK和SMCLK都选LFXT1CLK不分频 0xc0

BCSCTL2=01 01 00 10 MCLK选DCOCLK 2分频 MCLK2分频 0x52

BCSCTL2=10 10 01 00 MCLK选LFXTICLK 4分频 MCLK4分频 0xA4

BCSCTL2=11 11 0110 MCLK选LFXT1CLK8分频 MCLK8分频 0xF6

.。。。。。。。。。

*选择 MCLK 时钟源。

*0 时钟源为 DCOLCK(默认时钟源);

*1 时钟源为DCOCLK ;

*2 时钟源为LFXTlCLK;

*3 时钟源为 LFXT1CLK 。

*DIVM.1,DlVM.0选择 MCLK 分频。

*0 1分频(默认MCLK=DCOCLK);

*1 2分频;

*2 4分频;

*3 8分频。

*DIVS.1,DIVS.0选择 SMCLK 分频。

*0 1分频(默认 SMCLK=MCLK);

*1 2分频;

*2 4分频;

*3 8分频。

*********************************************************/

/ *BCSCTL3 寄存器*/

/ ********************************************************

* bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

* XT2S1 XT2S0 LFXT1S1 LFXT1S0 XCAP1 XCAP0 XT2OF LFXT1OF

* XT2S1和XT2S0(2553不支持)

* LFXT1S1和LFXT1S0选择LFXT1的范围。

* XCAP1和XCAP0选择LFXT1的匹配电容

* 00 1pf

* 01 6pf

* 10 10pf

* 11 12.5pf

*********************************************************/

/ *******************************************************

* 静态函数声明

******************************************************/

static void DcoClkSet(unsigned char x,unsigned char y); //msp430g2553datasheet P30

static void MClkSet(unsigned char Div);

static void SMClkSet(unsigned char Div);

static void AClkSet(unsigned char Div);

/ *********************************************************

* 函数名 : DcoClkSet

* 函数功能 : 对时钟DCOCLK进行配置

* 函数形参 : 传入的形参为x和y,其值参考2553datsheet第28页中DCO频率表

* 函数返回值 : 无

********************************************************/

void DcoClkSet(unsigned char x,unsigned char y) // msp430g2553datasheet P30

{

DCOCTL &=~( 0xFF);

BCSCTL1 &=~( 0xFF);

unsigned char temp=(x

#include "clock.h"

void main()

{

WDTCTL=WDTPW+WDTHOLD;

P1DIR |=BIT4;

P1SEL |=BIT4; //配置P1.4为SMCLK输出功能

Init_Clk();

}

通过示波器看起输出波形是否正确。下图3 SMCLK波形中示波器所示波形为系统经过8分频DCOCLK后得到的SMCLK,其大小为0.98MHz正好是DcoClkSet(13,3)之后得到的DCOCLK时钟(7.84MHz)经过8分频之后的大小。

图 3 示波器观察SMCLK输出波形

好啦,讲了这些希望初学者对对系统时钟有一个整体把握,希望前辈能多多指正,谢谢!我在后面还会将我的学习心得整理成文,包括FPGA和ARM等。再次声明,文中若有技术错误或是不足望各位多多指正,多多交流。共同交流使得我们共同进步!希望将我的学习心得与您分享,谢谢!下次总结再见。

小孩健脾胃的药有哪些小孩健脾的食物小儿积食发烧怎么办

剖宫产术后预防便秘方法
宝宝突然不爱吃饭怎么办
血管堵塞有斑块通心络能治疗吗
有哪些治疗跟骨刺的药

相关推荐