社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 997|回复: 0

[资料分享] MSP430时钟系统三

[复制链接]

3360

TA的帖子

421

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2013-11-29 18:20:01 | 显示全部楼层 |阅读模式
上一篇最后的部分我们用一个例程来对时钟系统的设置有了个正面的认识,只给出了程序没有仿真图示,原因是我所使用的仿真环境下对时钟系统的设置是无效的,选择时钟源没有效果,设置通过指定的引脚同步输出波形也没有效果,只有在通过外部时钟源输入时钟信号才可以设置,这个的使用我们将在定时器的说明时给出。其实还是用块板子比较踏实,仿真和实际有时候真是搞笑,那天他们用单片机做个东西,仿真可以过的在板子上就没反应。倒是仿真没反应的到了板子上竟然很随意的样子,搞不懂。

寄存器
符号
寄存器类型
地址
初始化状态
DCO控制寄存器
DCOCTL
读/写
056H
带PUC的060H
基础时钟系统控制寄存器1
BCSCTL1
读/写
057H
带POR的087H
基础时钟系统控制寄存器2
BCSCTL2
读/写
058H
带PUC的复位
基础时钟系统控制寄存器3
BCSCTL3
读/写
053H
带PUC的005H
SFR中断使能寄存器1
IE1
读/写
000H
带PUC的复位
SFR中断标志寄存器
IFG1
读/写
002H
带PUC的复位

上表给出了设置时钟模块时需要操作到的寄存器,下面让我们去这些寄存器的内部去游览一番。
20110727154853509.jpg
DCOx:DCO频率选择。这几位选择由RSELx设置位已经选定的REL基础上的8个离散的DCO频率。
MODx:调节器选择。这几位决定在32个DCOCLK周期内频率出现的次数。
20110727154853261.jpg
XT2OFF  7位  关闭XT2。
  • XT2打开
  • XT2不用于SMCLK或MCLK则关闭
XTS     6位  LFXT1模式选择
  • 低频模式
  • 高频模式
DIVAx   5-4位ACLK分频
  • /1
  • /2
  • /4
  • /8
XT5V    3位   未使用
RSELx    2-0位 范围选择。通过内部寄存器来8种频率阶次。

20110727154853399.jpg
SELMx  Bits 7-6  选择MCLK的时钟源
  • DCOCLK
  • DCOCLK
  • 当有XT2时选择XT2CLK,否则选择LFXT1CLK
  • LFXT1CLK
DIVMx  Bits5-4    MCLK的分频系数
  • /1
  • /2
  • /4
  • /8
SELS   Bit 3     选择SMCLK的时钟源
  • DCOCLK
  • 当有XT2时选择XT2CLK,否则选择LFXT1CLK
DIVSx  Bit2-1   SMCLk分频系数
  • /1
  • /2
  • /4
  • /8
DCOR  Bit0     DCO电阻选择
  • 内部电阻
  • 外部电阻


20110727154853182.jpg       
          Bits7-2 这些位被其他模块使用。
IFIE   Bit1    振荡器失效中断使能。此位使能OFIFG中断。
                       0 禁止中断
                       1 使能中断
          Bit0    该位可用于其他模块。

20110727154853702.jpg
              Bits7-2  这些位被其他模块使用。
OFIFG  Bit1    振荡器失效中断标志位。
                            0 没有未相应的中断
                            1 有未被相应的中断
              Bit0    该位可用于其他模块。
当然这些寄存器、标志位不需要过分记忆。不用的话记住也没用,用的话自然而然的就能想起,大不了查找下手册看看而已。

下面我们来看一个比较特别的模块。作为一款优秀的MCU,MSP430可谓为用户使用考虑到了极致,对于基础时钟模块而言,不仅提供了灵感便捷色时钟模块,而且还提供了一个时钟模块自动放故障操作。
在基础时钟模块中整合了一个振荡器失效保护自动防故障模块。通过一个振荡器失效检测器的模拟电路来监视LFXT1CLK(in HF mode)和XT2CLK。当任意的这两个时钟源信号失效后50us内振荡器失效保护模块就会自动工作。如果这个时候MCLK的时钟源选自失效振荡器,那么就会自动转到DCO作为其时钟源,这样就可以在晶体振荡器失效的情况下仍然能够保证代码的执行。
20110727154853923.jpg
上图是其运行的时序图。
当OFIFG和OFIE标志位被置位时将产生一个NMI请求。NMI中断服务程序将检测OFIFG标志位来决定是否有振荡器失效发生。OFIFG标志位必须由软件清除。
当产生振荡器失效信号时OFIFG被置位。当LFXT1(in HF mode)产生振荡器失效或者当XT2产生振荡器失效时,在POR中XT_OscFault将被置位。也就是当XT2或者LFXT1 在高频模式下因为软件原因停止后XT_OscFault信号将立即有效,并且持续有效直到振荡器重启。


作者:aerkate
此帖出自MSP430论坛


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-6-24 00:19 , Processed in 0.057282 second(s), 18 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表