msp430入门学习15--时钟

最新更新时间:2022-01-10来源: eefocus关键字:msp430  入门学习  时钟 手机看文章 扫描二维码
随时随地手机看文章

MSP430的时钟系统本来是单片机的重点,但是现存的教材中,很少有专门的章节讨论的,大多只是对官方文档的翻译,因此做此文。


一、单片机的时钟我把它分为三个层次,硬件底层,应用抽象层,应用层,分别说明:

  硬件底层:  1、LFXT1,也就是低频时钟电路

         2、XT2,也就是高频时钟电路

           3、DCO振荡器,也就是单片机内部的RC振荡器

  为什么这么设置:0、ti的msp430单片机为了尽可能减小用户使用的难度,降低电路设计的难度,自带了震荡电路便于使用,也就是说无需像51单片机那样最小系统中必须要一个晶振,简化为最小系统只要有供电就基本开始开始干活了;


  1、DCO作为RC振荡器,主要通过对RSELx的配置实现频段的选择,而后通过DCOx实现频率的粗调,通过MODx的混频实现振荡频率的细调,通过DCOR实现配置电阻的内外选择,

  2、DCO振荡器却不够精确,但是有比没有强很多的,主要就是在单片机工作中外接的时钟电路出了问题,可以及时用内部的振荡器电路,相当于对时钟电路做了个备份,单路更可靠;

  3、为了解决DCO不够精确的问题,就允许用户外接时钟,引入了XT1震荡电路可以在800k~8MHz间的晶振,

    1)为了监测外接晶振有问题,设置了中断标志:OFIFG位,当外接晶振有问题时,及时启用DCO;

    2)为了省电设置了SCG0位,置位时,允许用户关闭DCO;

    3)为了更进一步省电,设置了SCG1位,置位时,允许用户关闭CPU,这样当只用外设时,允许用户关闭CPU

    4)为了进一步省电,将外设分为高速和低速外设,低速外设的晶振可以设置为32.768KHz,因此XT1可以在低频模式下,为了区分高频和低频的时钟晶振,将XT1标明为LFXT1,可以通过设置XTS为设置LFXT1工作在高频模式下

    5)后来引入了XT2振荡电路,自然要加上2了,因为在原来XT1的基础上加的,只不过我们现在都习惯将XT1称为LFXT1,XT2主要用于高频晶振,XT2OFF置位时,不使用XT2振荡器;复位时才打开XT2振荡器  

  应用抽象层:LFXT1CLK、SMCLK和MCLK

  4、LFXT1相关的寄存器位:

    1)OSCOFF置位时,关闭LFXT1时钟电路

    2)XTS置位时,LFXT1在高频模式,XTS复位时,LFXT1在低频模式

    3)DIVAx有两位,

        00时  分频系数为1,

        01时  分频系数为2

        10时  分频系数为4

        11时  分频系数为8

  5、SMCLK相关的寄存器位:

    1)SELS选择SMCLK的时钟源,

    SELS置位时,SMCLK选择的时钟源为外接振荡器,

      当XT2振荡器存在时优先用XT2振荡器;  

      当XT2振荡器不存在时,就用LFXT1振荡器;

    SELS复位时,SMCLK选择的时钟源为DCO振荡器

    2)DIVSx有两位,配置SMCLK的分频系数        

        00时  分频系数为1,

        01时  分频系数为2

        10时  分频系数为4

        11时  分频系数为8 

  5、MCLK相关的寄存器位:

    1)SELMx有两位,选择MCLK的时钟源

        00时  选择DCO振荡器为时钟源,

        01时  选择DCO振荡器为时钟源,

        10时  选择XT2振荡器,如果XT2振荡器不在时,选择LFXT1振荡器为时钟源,

        11时  选择LFXT1振荡器为时钟源,

    2)DIVMx有两位,配置MCLK的分频系数        

        00时  分频系数为1,

        01时  分频系数为2

        10时  分频系数为4

        11时  分频系数为8

   6、DCO相关的寄存器位:

               图一 振荡频率示意图

       1)RSELx有三位,选择DCO振荡器的输出频段

        000时  如图一所示的RSEL=0的频段,

        001时  如图一所示的RSEL=1的频段,

        010时  如图一所示的RSEL=2的频段,

        011时  如图一所示的RSEL=3的频段,

        100时  如图一所示的RSEL=4的频段,

        101时  如图一所示的RSEL=5的频段,

        110时  如图一所示的RSEL=6的频段,

        111时  如图一所示的RSEL=7的频段,

      2)DCOx有三位,细分DCO的频率点        

        000时  如图一所示的DCO=0的频段,

        001时  如图一所示的DCO=1的频段,

        010时  如图一所示的DCO=2的频段,

        011时  如图一所示的DCO=3的频段,

        100时  如图一所示的DCO=4的频段,

        101时  如图一所示的DCO=5的频段,

        110时  如图一所示的DCO=6的频段,

        111时  如图一所示的DCO=7的频段,

      3)MODx有五位,进一步配置混频系数,公式为:
        t = (32 - MODx)*  tDCO  + MODx  *  tDCO+1

        公式说明:t表示混频后振荡信号的周期;

             MODx就是MODx五位寄存器中对应的10进制数值;

               tDCO就是混频中的低频信号的周期;

               tDCO+1就是混频中的高频信号的周期;


 1 #include

 2 

 3 int main(void)

 4 {

 5     WDTCTL = WDTPW | WDTHOLD;                   //关闭看门狗

 6     //DCOCTL |= MOD4 + DCO1 + DCO0;             //设置混频系数为16 fDCO=810Kzh,860KHz,890KHz

 7     BCSCTL1 |= RSEL2;                           //设置频段为RSEL=4

 8     DCOCTL |= MOD4;                             //设置混频系统为16

 9     DCOCTL |= DCO1 + DCO0;                      //设置DCO的频率点为3  fDCO=816.32kHz

10     //DCOCTL |= DCO2;                           //设置DCO的频率点为4  fDCO=1.24MHz

11     

12     P5DIR |= 0x70;                              //打开时钟输出接口,选择为输出

13     P5SEL |= 0x70;                              //打开时钟输出接口,选择为第二功能

14 

15         while (1)

16         {

17         }

18 }


例如在上述代码:

当没有混频时,将第8行注释,DCOx=3, RSELx=4时,DCO的频率fDCO=816.32kHz

当没有混频时,将第8行注释,第9行用第10行代替,DCOx=4, RSELx=4时,DCO的频率fDCO=1.24MHz

当有混频时,DCOx=3, RSELx=4时,DCO的混频后的频率fDCO=810kHz、860kHz、890kHz等,可见的确混频了。


MODx=16, 

3)DCOR配置DCO是否使用外置电阻,置位时使用外部电阻,复位时使用内部电阻,使用外部电阻时可以提高振荡器的输出频率,减少DCO振荡器受温度影响的情况,但是不能超过振荡器的振荡频率的最大值。


msp430的时钟设置说明:


 1 #include

 2 

 3 int main(void)

 4 {

 5     WDTCTL = WDTPW + WDTHOLD;                 //停止看门狗

 6 

 7     BCSCTL1 &= ~XT2OFF;                       //开启XT2高频振荡器

 8     unsigned char i;

 9 //    do{

10 //        IFG1 &= ~OFIFG;

11 //        for (i = 0; i < 0xFF; i++)

12 //        {

13 //            ;

14 //        }

15 //    }while ((IFG1 & OFIFG) != 0);

16     while ((IFG1 & OFIFG) != 0)               //从87-94行代码和80-86行代码是一样的,主要是个人更喜欢while的逻辑

17     {               18         IFG1 &= ~OFIFG;                       //清除XT2振荡错误标志

19         for (i = 0; i < 0xFF; i++)

20         {

21             ;                                 //延时一段时间

22         }

23     }

24     IFG1 &= ~OFIFG;                           //经过长时间等待,当晶振起振成功后,再次清除振荡错误标志

25 

26     BCSCTL2 |= SELM1;

27     BCSCTL2 |= DIVM0 + DIVM1;

28     P5DIR |= 0x70;                            //打开时钟输出接口,选择为输出

29     P5SEL |= 0x70;                            //打开时钟输出接口,选择为第二功能

30 

31     while (1)

32     {

33     }

34 }


程序非常简单,说明如下:

一、设置ACLK,没有代码,主要使用寄存器相应位的默认值:

  XTS=0,使用LFXT1的低频模式,DIVAx=0,不分频,因此ACLK的波形为:fACKL=32KHz

二、设置SMCLK,没有代码,主要使用寄存器相应位的默认值:

  SELS=0,默认时钟源为DCO振荡器

  DIVx=0默认不分频

  在PUC或POR后,

    RSELx=4,选择频段为4

    DCOx=3,选择频率点为3

    MODx=0,默认不混频,也就是用低频

    DCOR=0,默认使用内部电阻,因此fDCO=810KHz

三、设置MCLK,使用时钟源为XT2高频时钟,主要使用寄存器相应位为:

  XT2OFF=0,打开XT2振荡器

  SELMx=2,选择XT2时钟源,将时钟源由DCO切换到外部晶振时,必须确定清除了振荡错误标志位,具体就是必须使用9~15行货16~23行的代码,最后加上第24行的代码,进行再次清除振荡器振荡错误标记;

  DIVMx=3,将MCLK8分频

  在PUC或POR后,

    RSELx=4,选择频段为4

    DCOx=3,选择频率点为3

    MODx=0,默认不混频,也就是用低频

    SELMx=0,选择时钟源为DCO振荡器,或者OFIFG--振荡错误标志存在时也选择为DCO振荡器

    DIVMx=0,MCLK不分频

  好了,终于写完了。


关键字:msp430  入门学习  时钟 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic559107.html

上一篇:msp430入门学习04
下一篇:MSP430F5529 单片机 Memory game 记忆游戏 OLED实验

推荐阅读

stm32f103——时钟树的分析与配置
时钟树是用来对单片机系统和各个外设进行时钟配置的,因为不同的外设,其电路不同,对时钟频率的要求也就不同。所以需要我们对时钟源的频率进行改变,变成外设需要的时钟频率。首先时钟树分为俩部分:左边部分是时钟的来源,右边部分是时钟的去向:各类时钟简括:1.HSE时钟(高速外部时钟):来源为外部晶振,通常速度8Mhz。由RCC_CR时钟控制寄存器中的16:HSEON控制。2.HSI时钟(高速内部时钟):来源为芯片内部,大小为8Mhz,当HSE故障时,系统时钟会自动切换到HSI,知道HSE启动成功,相当于HSE的替补。由RCC_CR时钟控制寄存器的位0:HSION控制。3.PLLCLK(锁相环时钟):来源为HSI/2或HSE,经过倍频所得。由C
发表于 2022-09-29
stm32f103——<font color='red'>时钟</font>树的分析与配置
【IAR 】MSP430 IAR 编译报错:error
无编号警告类型:1、Sat Jun 23, 2012 17:41:05: The stack pointer for stack 'Stack' (currently Memory:0xF5336) isIAR相关设置:Tools->Option->Stack->Warn when stack pointer is out of bounds.The stack pointer for stack is outside the stack range1、Debugging using IAR Embedded WorkbenchBecause the IAR debugger is not pres
发表于 2022-09-28
MSP430片内flash|FLASH 读写等操作 学习
【FLASH 操作】FLASH 读写等操作 学习近似型号中文资料:IC型号:N25Q128 http://www.soiseek.cn/NUMONYX/N25Q128/2.htm官方文档:F5438中文全集.pdf_免费高速下载|百度网盘-分享无限制 第60页//******************************************************************************// 参数: adr 为地址 , 范围 0x1000~0xFFFFvoid FlashRead(long adr,uint8 *bBuf,uint8 bLen){ while (bLen--) *bBuf++=*(ui
发表于 2022-09-28
msp430学习经验总结| 心得体会
1.MSP430开发环境建立1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET3.建立一个工程,选择"option"选项,设置 a、选择器件,在"General"项的"Target"标签选择目标器件 b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试 信息用于仿真。 c、若选择"Other",Output下拉框
发表于 2022-09-28
msp430的中断|中断优先级|中断嵌套
MSP430的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的MSP430是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级的中断程序中手动打开全局中断便能位,因为在进入中断服务子程序时全局中断便能位被清零,即禁止响应其它中断。msp430的指令中,DINT和EINT分别指关和开所有中断,也就是包涵P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中断允许的所有中断允许位为“0”和为“1”。当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应要中断嵌套的话,就必须在中断中打开
发表于 2022-09-28
MSP430的IO口中断/中断特性|Px中断进不去 原因
MSP430学习笔记之七:IO口中断MSP430中断嵌套机制(1) 430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT。(2) 当进入中断程序时,只要不在中断中再次开中断,总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行。(3)若在中断A中开了总中断,刚可以响应后来的中断B(不管B的优先级比A高还是低),B执行完现继续执行。注意:进入中断B生总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后中跳出中断程序进入A程序时,总中断会自动打开。(4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断
发表于 2022-09-28

推荐帖子

【无线节点】PCB板
先传一个,剩下的再检查下后马上上传【无线节点】PCB板
dontium ADI参考电路
有没有测试TMS320F2812外部SRAM读写速度的程序
本帖最后由小an于2015-3-611:26编辑 删帖删帖,自己写了一个,其实挺简单的程序 有没有测试TMS320F2812外部SRAM读写速度的程序
小an 微控制器 MCU
TX-1C型单片机实验板原理图(郭天祥)
这是一个号的资料,郭天祥老师亲自教的,现在的郭天祥已经发表啦许多视频资料,和许多产品。单片机开发板也是交给我们的资料,要的话,好好的收藏。 [本帖最后由linming123于2011-8-2222:14编辑]TX-1C型单片机实验板原理图(郭天祥)
linming123 PCB设计
关于多个GPRS MODEM同时拨号的问题?
我电脑两个串口上连接两个GPRSMODEM同时拨号上网,默认情况下是使用一个连接.我想在程序中控制两个连接怎么同时使用呀,即有的数据通过一个连接发送出去,另外一些数据通过另外一个连接发送出去呀,应该怎么办呀,请各位帮忙.非常感谢呀!关于多个GPRSMODEM同时拨号的问题?
mhw1216 嵌入式系统
【T叔藏书阁】锁相技术相关专辑
锁相技术相关专辑38册209M.part1 锁相技术相关专辑38册209M.part2 锁相技术相关专辑38册209M.part3 锁相技术相关专辑38册209M.part4 锁相技术相关专辑38册209M.part5 锁相技术相关专辑38册209M.part6 【T叔藏书阁】锁相技术相关专辑
tyw 下载中心专版
小螃蟹成功诞生,发帖庆祝
魔方机器人,取名小螃蟹,这只小螃蟹可以用两个钳子解开魔方,特发上来和大家分享下 视频地址:http://v.youku.com/v_show/id_XMjU0MTE3Mzgw.html, 详情关注:http://hi.baidu.com/jialaolian629/blog(打个广告) 大家有兴趣可以跟帖交流,嘿嘿 忘了说了,这个小螃蟹的眼睛是一个130万像素的摄像头,摄像头是一个ARM开发板上 自带的,将魔方颜色采集下来以后进行处理然后开始动作解魔方,大家没看到开发板, 在我
jialaolian DIY/开源硬件专区
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved