[MSP-EXP430F5529LP] 系统时钟的设计制作

[复制链接]

150

主题

445

帖子

1908

积分

审核员

Rank: 9Rank: 9Rank: 9

积分
1908
楼主
查看: 4009回复: 3 发表于 2019-6-28 11:10:02   只看该作者
本帖最后由 secret 于 2019-6-28 11:13 编辑

这是一个基于TI公司开发板MSP430F5529的系统时钟设计,分为以下几个部分:

一、时钟系统模块设计要求
单片机各部件能有条不紊自动工作,实际上是在其系统时钟作用下,控制器指挥芯片内各个部件自动协调工作,使内部逻辑硬件产生各种操作所需的脉冲信号而实现的。为适应系统和具体应用需求,单片机的系统时钟必须满足
以下不同要求:
  • 高频率 用于对系统硬件需求和外部事件快速反应;
  • 低频率 用于降低电流消耗;
  • 稳定的频率 以满足定时应用,如实时时钟RTC;
  • 低Q值振荡器 用于保证开始及停止操作最小时间延迟。



从上图可以看出,时钟模块有 5 个时钟输入源:
  • XT1CLK 低频或高频时钟源:可以使用标准晶振,振荡器或者外部时钟源输入4MHz~32MHz。XT1CLK可以作为内部FLL模块的参考时钟。
  • XT2CLK 高频时钟源:可以使用标准晶振,振荡器或者外部时钟源输入4MHz~32MHz。
  • VLOCLK 低功耗低频内部时钟源:典型值为10KHZ;
  • REFOCLK 低频修整内部参考时钟源:典型值为32768Hz,作为FLL基准时钟源;
  • DCOCLK 片内数字控制时钟源:通过FLL模块来稳定。

基础时钟模块可提供3种时钟信号:
  • ACLK 辅助时钟: ACLK可由软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV、XT2CLK(由具体器件决定)这几个时钟源之一。然后经1、2、4、8、16、32分频得到。ACLK可由软件选作各个外设模块的时钟信号,一般用于低速外设模块。
  • MCLK 系统主时钟: MCLK可由软件选择来自上述5种时钟源,同样可经过分频得到。MCLK主要用于CPU和系统。
  • SMCLK 子系统时钟: 可由软件选择来自上述5种时钟源,同样可经过分频得到。 SMCLK可由软件选作各个外设模块的时钟信号,主要用于高速外设模块。

二、五个时钟输入源振荡器模块,包括:
  • XT1 振荡器
  • XT2 振荡器
  • 低功耗低频内部振荡器(VLO)
  • 低频修整内部参考振荡器(REFO)
  • 片内数字控制振荡器(DCO)

接下来将详细的说明这五个时钟输入源振荡模块

一、XT1  振荡器
  • XT1工作在低频(LF)模式时(XTS=0),提供支持32768HZ时钟的超低功耗模式。晶振只需经过XIN和XOUT两个引脚连接,不需要其他外部器件,所有保证工作稳定的元件和秱相电容都集成在芯片中。
  • 在一些设备中当XT1选择高频(HF)模式时(XTS=1)也支持高频晶振或者振荡器。高频晶振或谐振器连接到XIN和XOUT引脚,需要在两个端口配置电容。

二、XT2  振荡器
  • 一般称之为第二振荡器XT2,它产生时钟信号XT2CLK,它的工作特性不XTl振荡器工作在高频模式时类似。
  • 系统频率和系统的工作电压密切相关,某些应用需要较高的工作电压,所以也需要系统提供相应较高的频率。系统频率和系统工作电压之间的关系下图所示:



三、低功耗低频内部振荡器(VLO )
  • 低频低功耗内部振荡器 (VLO)能够提供典型10kHz的振荡频率(具体参数见数据手册),而不需要外接任何晶振。
  • VLO可以对时钟精确要求不高的的应用提供低成本和超低功耗的时钟源。

四、低频修整内部参考振荡器(REFO )
  • REFO可以产生一个比较稳定的频率,其典型值为32768Hz,它可以用作FLLREFCLK。
  • 低频修整内部参考振荡器(REFO)可以在没有外部晶振,对成本又比较敏感的场合得到很好的应用。

五、片内数字控制振荡器(DCO )
  • DCO振荡器是一个可数字控制的RC振荡器,它的频率随供电电压、环境温度变化而具有一定的丌稳定性。
  • DCO频率可以通过选择锁频环FLL的频率FLLRENCLK/n)来增强振荡频率的稳定性。

三、片内数字控制振荡器(DCO)操作
锁频环(FLL)
  • DCOCLK可用作ACLK、MCLK、SMCLK,但它的频率随供电电压、环境温度变化而具有一定的不稳定性,FLL通过频率积分器和调制器的自动调节使DCOCLK的频率趋于稳定。
  • FLL通过在两个最相近的邻居频率之间迚行切换,产生两个频率的加权频率,最终获得我们所需的频率。

四、外设模块请求时钟系统
  • 外设模块可以控制3个时钟请求信号中的一个来获得时钟ACLK_REQ、MCLK_REQ、SMCLK_REQ。
  • 不管在任何模式下,外设模块的正常操作都可以从标准时钟系统(UCS)请求时钟信号。

例如:如果定时器选择了ACLK作为时钟源,只要定时器允许,ACLK_REQ信号就一直有效并向UCS申请时钟,而UCS则不管当前是在什么LPM低功耗模式都会输出ACLK信号。
如下图所示,为外设模块请求时钟系统。


五、模块振荡器(MODOSC)
  • UCS模块还有一个内部的振荡器(MODOSC)。它主要给FLASH模块控制器或其他任意需要的模块提供时钟。
  • MODOSC产生时钟信号MODCLK。

例:ADC12_A可以选择使用MODOSC作为转换时钟源,用户选择ADC12OSC作为转换时钟源时,ADC12OSC就来自MODOSC。

六、故障安全逻辑操作
  • 时钟系统模块包含有晶振故障保护的功能。这个功能可以检测XT1、XT2、DCO的振荡器故障。
  • 当晶体振荡器启用后,没有正常工作时,则相应的故障位XT1LFOFFG、XT1HFOFFG、XT2OFFG将被置位。
  • 可检测的故障有:XT1的LF模式下低频晶振故障(XT1LFOFFG)

七、时钟应用模块举例
基于MSP430F5529的例程:设ACLK = XT1 = 32768Hz,ACLK通过P1.0输出。
程序代码如下:
#include <msp430.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //  关闭看门狗

P1DIR |= BIT0; // ACLK  通过 P1.0输出, 输出, 输出方向 输出方向
P1SEL |= BIT0; // P1.0  为外设功能(ACLK  )

//  选择IO 端口功能为 XT1 ,外设功能
P5SEL |= BIT4+BIT5;
UCSCTL6 &= ~(XT1OFF); //  使能 XT1 ,设置寄存器UCSCTL6
UCSCTL6 |= XCAP_3; //  配置内接电容值,选择典型电容值XCAP_3

do
{ //  清零XT1 、DCO 故障标志位
UCSCTL7 &= ~( XT1LFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG; //  清零SFR 中的故障标志位
}while (SFRIFG1&OFIFG); //  检测振荡器故障标志位

UCSCTL4 |= SELA_0; //  选择 ACLK 的时钟源,设置寄存器UCSCTL4
while(1)
{
; //  循环等待, 空操作
}
}
希望同学们能够进行点赞,投币,毕竟赫兹币比较紧缺,提前在这里谢谢大家,_(:з」∠)_


打赏

参与人数 1赫兹币 +2 积分 +5 收起 理由
shengxiang + 2 + 5 赞一个!

查看全部打赏

39

主题

84

帖子

243

积分

二氧化硅

Rank: 2

积分
243
沙发
发表于 2019-6-28 14:25:27   只看该作者
谢谢分享

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
板凳
发表于 2019-7-1 09:59:52   只看该作者

手动给你点个赞~~ 可以来一些配合外部器件的文档~

150

主题

445

帖子

1908

积分

审核员

Rank: 9Rank: 9Rank: 9

积分
1908
4#
发表于 2019-7-1 10:55:08   只看该作者
shengxiang 发表于 2019-7-1 09:59
手动给你点个赞~~ 可以来一些配合外部器件的文档~

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