找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14050|回复: 7
打印 上一主题 下一主题
收起左侧

MSP430F5529时钟模块总结

[复制链接]
跳转到指定楼层
楼主
ID:50962 发表于 2013-7-20 22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  

   最近开始学习MSP430系列一款新CPU,F5529。按照之前学430的方法,我开始了解他的时钟部分,我参照TI官方例程学习,其中有段程序让我在实验室困惑了很久,这句注释如下:

ACLK=n/a, MCLK=SMCLK=BRCLK=default DCO=1.048576 MHZ

都知道 msp430的时钟系统灵活多变,他的USC模块有三个时钟(MCLK,SMCLK,ACLK)和五个时钟源(XT1CLK,VLO,REFOCLK,DCO,XT2)

PUC之后,UCS模块的默认配置如下:

1.      XTI为LF模式,作为XT1CLK的时钟源。XT1CLK作为ACLK.

2.      DCOCLKDIV作为MCLK

3.      DCOCLKDIV作为SMCLK

4.      FLL模块使能,XTI作为FLL基准时钟FLLREFCLK

5.      XIN,XOUT管脚为普通I/O

6.      XT2IN,XT2OUT脚为普通I/O

让我困惑的是后半句,MCLK=SMCLK=BRCLK=defaultDCO=1.048576  MHZ

首先我不太清楚1.045M是怎么来的,后来在5/6系列的Family  User’s  Guide中找到了相关解释

As previously stated,FLL operation with XT1 is selected by default. If the crystal pins (XIN, XOUT)are

shared withgeneral-purpose I/Os, XT1 will remain disabled until the PSEL bits associatedwith the crystal

pins are set. If XIN andXOUT are not shared with general-purpose I/O, XT1 is enabled. When a 32,768

Hz crystal is used forXT1CLK, the fault control logic immediately causes ACLK to be sourced by the

REFOCLK, because XT1 isnot stable immediately (see Section5.2.12). Once crystal startup is obtained

and settled, the FLL stabilizes MCLK and SMCLK to1.048576 MHz and fDCO = 2.097152 MHz.

这段英文前半段解释了FLL和XT1上电后默认状态。关键在后句,说一段晶振启动比稳定,ACLK将取自外部的32.768KHZ晶振,FLL将使MCLK和SMCLK稳定为1.048576M和fDCO = 2.097152 MHz.

我想1.048576M应该取自这个地方,但是此处的fDCO = 2.097152 MHz.

出不多是1.048576M的两倍,为什么说MCLK=SMCLK=BRCLK=default DCO=1.048576  MHZ,于是我将这句话粘贴去百度,结果大部分是照搬TI官方的例程,对着注释也没太关注。

经过自己的摸索,发现其实是这样的;刚才在说PUC后的默认状态是MCLK,SMCLK都是取自DCODIV的,而DCODIV从字面上看是DCO的分频,而坐几分频是由UCSCTL2中的FLLD决定的,该位的默认状态是001,即2分频。所以应该是MCLK=SMCLK=DCODIV=DCO/2.所以说TI官网的那个注释严格来说是不对的。

那DCO的默认频率是多少呢?上面的2.097152M又是怎么来的。我觉得网友们普遍提到DCO的默认值是1.048576M的说法是不够准确的,应该是通过使用DCO产生的MCLK和SMCLK是1.048576M,而不是DCO本身,DCO的默认值应该翻倍。这里有出现了一个要关注的东西FLL,4,5系列内有FLL,这是1,2系列所没有的,所以即便不外接晶振,只是用内部DCO也可获得很稳定的频率,那FLL与DCO的产生有什么关系呢?我从5/6系列的Family  User’s  Guide截了一个图(可惜不能显示),看到DCOCLK和DCOCLKDIV从FLL模块输出,通过用户手册,我理解到DCO的产生途径有两种:

   第一种就是直接配置UCSCTL0和UCSCTL1寄存器中的DCORSELx,DCOx,MODx来设置。其中DCORSELx负责DCO频率范围的选择,DCOx负责频率阶梯的选择,MODx负责混合两个DCO频率。由于1系列单片机内部没有FLL因此DCO的频率不太精确,从5/6系列的Family  User’s Guide看到这种方式设置DCO频率有一个很大的范围。

第二种就是通过FLL自动调节DCO。根据手册中公式

fDCOCLK = D × (N + 1) × (fFLLREFCLK ÷ n)

fDCOCLKDIV = (N + 1) × (fFLLREFCLK ÷n)

这里的D是FLLD,N是FLLN,他们都是UCSCTL2中的位,n由UCSCTL3中的FLLREFDIV决定,默认状态下D取2,N去31,n       取1。

7.          那FLLREFCLK又怎么确定呢?本文上面提到      FLL模块使能,XTI作为FLL基准时钟FLLREFCLK

此外手册中对REFO也作了介绍:内部参考时钟可以在没有外部晶振,对成本有很敏感的场合得到很好的应用,内部参考时钟可以会产生一个很稳定的频率,其典型值为32.768K,他也可作为FLLREFCLK,这样外部低频晶振和REFO可以为系统提供灵活多变的时钟

PUC后,XT1不能作为FLLREFCLK的时钟源,个人认为FLLREFCLK会选择REFO。那我就来验证下自己的是否正确。(默认D=2,N=31,n=1,   FLLREFCLK=32.768K)

fDCOCLK = D × (N + 1) × (fFLLREFCLK ÷ n)

fDCOCLKDIV = (N + 1) × (fFLLREFCLK ÷n)

2*(31+1)*32768=2.097152M与用户指南中默认一致。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:58503 发表于 2014-1-19 14:54 | 只看该作者
5529开发板挺复杂的,我现在一团雾水。我觉得它不同系列的430,寄存器有很大的差别,给我的学习带来了很多的困扰,不知道楼主有什么好的学习方法
回复

使用道具 举报

板凳
ID:62121 发表于 2014-5-21 22:21 | 只看该作者
。。。。。。。厉害
回复

使用道具 举报

地板
ID:62622 发表于 2014-7-2 23:09 | 只看该作者
楼主威武!!!
回复

使用道具 举报

5#
ID:126959 发表于 2016-6-16 11:19 | 只看该作者
一个富有探索精神的人,敬佩
回复

使用道具 举报

6#
ID:558624 发表于 2019-7-20 09:57 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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