MSP430学习笔记-时钟篇

发布者:DazzlingGaze最新更新时间:2022-03-29 来源: eefocus关键字:MSP430  学习笔记  时钟 手机看文章 扫描二维码
随时随地手机看文章

在前一篇学习笔记架构篇中,我们将整个MSP430的总体架构唠嗑了一遍,今天我们继续来聊聊MSP430的时钟。对于时钟模块,我们要了解两件事:时钟架构与时钟配置寄存器


一、时钟架构

下面我们从MSP430系列单片机的时钟模块组成框图入手,将MSP430的时钟架构梳理一遍。

MSP430基本时钟钟模块+框架图

 

上图就是MSP430 基本时钟钟模块+的框架图(为什么时钟模块后还有个+我也不懂,反正手册上叫这个名字)。最左边是MSP430的时钟生成源,我们看到MSP430的时钟可以从以下地方生成:由内部低频低功耗时钟源(Internat LP/LF Oscillator)生成的VLOCLK,由外部低频时钟源1(LFXT1 Osoillator)配合XIN与XOUT上外接的晶振电路或时钟信号生成的LFXT1CLK, 由外部高速时钟源2(XT2 Osoillator)配合XT2IN与XT2OUT上外接的晶振电路或时钟信号生成的XT12CLK以及内部高速振荡器(DC Generator为核心组成的电路)生成的DCOCLK。


以上就是MSP430时钟的4大来源,值得提一下,这些时钟源并不是所有的MSP430型号都具备的,有些型号考虑到节省引脚缩小体积会省略掉外部高速时钟源。四大时钟源中,前三者:VLOCLK、LFXT1CLK、TX2CLK可在MSP430运行中通过将SR寄存器的OSCOFF位置1来手动关闭,而DCOCLK不允许在正常工作时手动关闭,其相当于MSP430的最后一道防线,用于在所有其他时钟源都失效时确保MSP430最大限度的正常工作,同时在默认情况下,DCOCLK会被设置为1.045MHZ频率作为MSP430的默认时钟。


当然啦,从图上我们可以看出,这四大时钟源并不直接给单片机的的CPU和各大外设提供时钟,而是先驱动MSP430的三大时钟信号:ACLK、MCLK、SMCLK,再由这三大信号来负责给单片机各部分提供时钟。在这三大时钟信号中,ACLK为辅助时钟信号(Auxillary Clock),其由VLOCLK或者LFXT1CLK经过分频后得到,主要负责给各外设提供低速时钟信号(其实设置后也可以当高速时钟信号用,后面会提到);MCLK为系统主时钟信号(Main System Clock),其可以由四大时钟源中的任一时钟源分频后得到,主要用于给CPU与系统提供时钟信号,这也是最重要的时钟信号了;最后是SMCLK,称为系统子时钟信号,其由XT2CLK或DCOCLK分频后得到,主要负责为外设提供高速时钟。


二、时钟模块相关寄存器

下表列出了所有时钟模块相关的寄存器

时钟模块相关寄存器

 

当然啦,我不打算按照表格里的顺序来介绍,首先在刚开始可以不用太在意DCO控制寄存器,这个寄存器用于控制内置的DCO时钟源的振荡频率。一般除非使用没有外部时钟引脚的型号,我上电后是会切换到外置时钟源的,DCO当作外部时钟源失效后的备用时钟源。所以我想先从基本时钟系统控制来介绍,这也是最常用的时钟配置寄存器。


1、 BCSCTL1寄存器

基本时钟系统控制寄存器由3个8位寄存器构成,我们先来看第一个寄存器BCSCTL1。如下为BCSCTL1寄存器各位功能说明:

BCSCTL1寄存器

 

第7位为XT2振荡器的禁用位,置1来禁用XT2CLK,也就是外部时钟。

第6位为LFXT1控制位,用来控制外部低速时钟的工作模式,置1可以配合外部接的高速晶振来当高速时钟用(还记得我们在之前提到的ACLK一般为低速时钟源,但也可以配置为高速时钟的事吗?只需要将LFXT1设置为高速时钟模式,然后选为ACLK时钟信号的时钟源就可以了),置0则为低速时钟,一般配合外部32768HZ晶振用来给RTC时钟模块等低速模块提供时钟信号。


第5-4位为ACLK时钟信号的分频控制位,用于控制ACLK的分频系数,比如我当前时钟源频率为2KHZ,设分频位为01,则实际的ACLK频率为2KHZ/2=1KHZ。


第3-0位为DCO标称范围选择,用于配置DCO内置高速时钟源的频率范围,这里可以先不做深究


2、BCSCTL2寄存器

BCSCTL2寄存器为时钟系统控制寄存器里的第二个寄存器,主要用于配置MCLK与SMCLK。


BCSCTL2寄存器

 

图片里已经说的很清楚了,其实没什么好补充的,第0位一般不用手动去设置它,保持默认即可。


3、BCSCTL3寄存器

BCSCTL3为时钟系统控制寄存器里的最后一个8位寄存器。

BCSCTL3寄存器


7-6位、5-4位分别用于选择XT2CLK以及LFXT1CLK的频率范围,设置的频率范围一定要与实际频率相符合,否则芯片工作可能会不正常。这里着重提一下LFXT1Sx,当BCSCLT1中的XTS位设为0(LFXT1振荡器工作在低频)时,LFXT1Sx用于设置低频时钟源;当XTS位设置为1(LFXT1振荡器工作于高频)时,LFXT1Sx用于设置高频的频率范围。


3-2位一般不用去动它,而第1位和第0位需要关注一下,它们分别叫XT2OF与XT1OF,当XT2或LFXT2上的外部时钟出现问题时,对应的位会被置1以用于阻止不正常的时钟源为单片机提供时钟信号,可以查询这两位得知外部时钟是否正常工作。


4、中断使能寄存器与中断标志寄存器相关位

在中断使能寄存器(IE)的第1位为OFIE位,该位为振荡器故障中断使能. 置1该位可以使能 OFIFG 中断。在中断标志寄存器(IFLG)中的第1位为OFIFG位,称为振荡器故障中断标志,在OFIE位使能的情况下,若发生振荡器故障,该位会被置1以触发相应中断,应在中断服务程序中手动复位OFIFG位为0。


5、DCO控制寄存器

简单提一下DCO控制寄存器。这个寄存器主要用于配置内部的高速DCO时钟源,寄存器的第7-5位为DCOx位,用于选择RSELx 设置的频率范围中的八个离散 DCO 频率中的一个作为DCO频率。第4-0位为MODx位,用于微调DCOCLK的频率,一般用不上,保持默认就行。


三、时钟配置的顺序

1)使能要用的振荡器并选择振荡器的工作模式;

2)清除中断标志寄存器(IFLG)中的OFIFG位;

3)延时50us;

4)检查OFIFG位是否为0,如果为0到第5步,否则返回第2步(说明配置的时钟源有问题);

5)将设置好的时钟源分配给各系统时钟信号(ACLK、MCLK、SMCLK);


下面附上一段时钟配置的示例代码,当时钟配置成功,连接在P1.1脚上的LED将会亮起:


#include

/**

 * main.c

 */

int main(void)

{

    int i;

    WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer

    P1DIR |= 0x01;            // Set P1.0 to output direction

    P1OUT &= ~0x01;           //set the P1.1 to 0

    BCSCTL1 &= ~XTS;          //set LFXT1 work mode to 0

    BCSCTL3 |= LFXT1S1;       //set VLOCLK as the low freq clock source

    BCSCTL3 &= ~LFXT1S0;

    do

    {                   //chk the OFIFG when use extern clock source

        IFG1 &= ~OFIFG; //clear OFIFG

        for (i = 0xff; i > 0; i--)

            ;               //delay

    } while (IFG1 & OFIFG); // is the OFIFG clear?

    BCSCTL2 |= SELM_3;      //select VLOCLK as the clock source for MCLK

    P1DIR |= 0x01;          // Set P1.0 to output direction

    P1OUT |= 0x01;          //set the P1.1 to 1

    return 0;

}


关键字:MSP430  学习笔记  时钟 引用地址:MSP430学习笔记-时钟篇

上一篇:MSP430学习笔记-低功耗与中断系统
下一篇:MSP430 G2553 低功耗模式LPMx

推荐阅读最新更新时间:2024-11-09 23:28

提高MSP430G系列单片机的Flash擦写寿命的方法
摘要 在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了
[单片机]
提高<font color='red'>MSP430</font>G系列单片机的Flash擦写寿命的方法
MSP430简介之我见
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,主要是由于其针对实际应用需求,把许多模拟电路、理器集成在一个芯片上,以提供 单片 解数字电路和微处决方案。 1、MSP430 单片机的发展 MSP430 系列是一个 16 位的、具有精简指令集的、超低功耗的混合型单片机,在 1996 年问世,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为众多单片机系列中一颗耀眼的新星。回忆 MSP430 系列单
[单片机]
基于MSP430单片机的无线信号采集系统
摘要 :为了解风力发电机叶片振动情况,判断其失效类型,设计了一种基于,MSP430单片机的无线信号采集系统。系统采用低功耗的MSP430单片机作为核心控制部件,硬件部分由信号处理模块、无线通信模块、MSP430单片机控制系统组成;软件部分采用模块化设计方法。系统平时处于休眠状态,CPU停止运行,工作时通过软件中断请求唤醒。经实验证明,该模块设计稳定可靠、数据传输速率高、功耗低、通用性强,且误码率仅为1%。 关键词: MSP430;低功耗;无线采集 风能是目前最有开发利用前景的可再生清洁能源,风力发电作为风能利用的主要方式而备受关注。风机叶片是风力发电机的关键部件,其性能的好坏直接影响整机运行的稳定。为了解风机叶片的振动状态,需
[嵌入式]
基于<font color='red'>MSP430</font>单片机的无线信号采集系统
msp430时钟周期、机器周期、指令周期定义及关系
  在学习计算机组成原理,单片机,嵌入式等课程时,经常会遇到各种周期,大致有如下几种周期:   时钟周期、状态周期   节拍周期、振荡周期   指令周期、机器周期、总线周期   这些周期之间有很多联系,一般都是倍数关系,由最原始的周期分频得到      1.时钟周期、振荡周期、节拍周期   时钟周期又叫做振荡周期、节拍周期,定义为时钟晶振频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。 例如晶振为12M,则时钟周期为1/12us。又可以被定义为节拍。   2.状态周期   状态周期是时钟周期的2倍,由时钟周期二分频得到。   3.机器周期   在计算机中,为了便于
[单片机]
<font color='red'>msp430</font><font color='red'>时钟</font>周期、机器周期、指令周期定义及关系
MegaChips收购SiTime MEMS时钟市场再爆发
如果你还没听说过日本MegaChips,那你就out啦。这家公司前两天刚刚收购了MEMS时钟发生器供应商SiTime,收购价达2亿美元现金。 这笔交易是2014年半导体界最大一笔合并案。 根据SiTime市场部执行副总裁Piyush Sevalia高度称赞MegaChips为一家“真正的有创新有进取心快速响应”的企业。“我们公司所有人都认可此次收购。” MegaChips专注于开发网络、游戏及数码相机用SoC与ASSP,最近公司进入传感器协处理器及1GHz以下无线传输领域。SiTime的MEMS时钟发生器与MegaChips推出的可穿戴和手持设备相关产品存在着协同效应。 Piyush表示:“当我们看到M
[嵌入式]
MegaChips收购SiTime MEMS<font color='red'>时钟</font>市场再爆发
ARM学习笔记—RTC编程(一)
要学习RTC的编程,首先我们得知道什么是RTC?RTC是怎样工作的?RTC电路是如何搭建的?RTC编程需要注意什么?要弄清楚这些,最好的方式就是从用户手册上去找寻答案,我按照LPC1788提供的手册一步步分析和学习RTC。 一、基础配置 1、RTC的电源控制:在寄存器PCONP中,置位位PCRTC。注意:复位的时候PCRTC的值也为 1 。(这里需要注意在arm中所有的pin操作都是通过读写寄存器完成的,每一个pin脚都是对应寄存器的一位,不能直接对pin进行置位或复位) 2、时钟源:RTC从RTC晶振中获取1HZ作为内部功能时钟,外部时钟用于接收RTC寄存器的值(目前还没有理解透彻,以后继续研究) 3、中断:中断在后面将
[单片机]
ARM<font color='red'>学习</font><font color='red'>笔记</font>—RTC编程(一)
C51单片机学习笔记(五)——数码管的静态显示和动态显示
1.数码管的显示原理 数码管有一位和多位一体两类,它是由8个LED(a,b,c,d,e,f,g,dp)排列组成,任意一个LED叫作一个“段”。通过给a,b,c,d,e,f,g,dp各个脚加上不同的控制电压可以使不同的LED导通发亮,从而显示0~9各个数字和ABCDEF各个字母。 由于8个LED共有16个引脚,为了减少引脚,形成了共阳极和共阴极两种数码管,如下图,如果是共阴极,点亮方法就是公共脚加低电平,引出脚加高电平,如果是共阳极,公共脚加高电平,引出脚加低电平即可。(我的数码管是共阳极,所以下面我就使用共阳极进行说明) 2.数码管的静态显示 所谓静态显示,就是数码管的笔画点亮后,这些笔画就一直处于点亮状态,而不是处于周期
[单片机]
C51单片机<font color='red'>学习</font><font color='red'>笔记</font>(五)——数码管的静态显示和动态显示
STM32-1-STM32时钟系统
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法 如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理: 1)对于10
[单片机]
STM32-1-STM32<font color='red'>时钟</font>系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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