历史上的今天
返回首页

历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2019年10月25日 | MSP430时钟模块详解

2019-10-25 来源:eefocus

刚开始学习5438,感觉这款单片机的时钟模块特别灵活,也是为了低功耗而设计的。但是灵活的代价是使得对时钟模块的操作复杂化了。我研究了很久终于略微懂了些,写出来希望能帮到和我一样的初学者。


所有的答案都在这一张图上了,这张图我看了很久,方向是我后来加上的。如果你想灵活使用它的时钟,这张图一定好好看看。

时钟源有六个,就是那六个红色的箭头,经过选择最终可以提供三个时钟信号ACLK,MCLK,SMCLK。


这个图主要部分有三块,我们分别来看:


OSC

首先是时钟源的选择,可以使用32768Hz的手表晶振、标准晶体、谐振器或4—16Mz的外部时钟源。


通过XT1BYPASS(由寄存器UCSCTL6中设置)可以选择是晶振或谐振器还是外部时钟源。


当XT1BYPASS为1时XT1CLK选择外部时钟源。为0时选择为晶振或谐振器,此时还需要设置XTS、XCAP、XT1DRIVE(寄存器UCSCTL6中)。


XTS为0时工作在低频模式下,设置XCAP为晶振选择内部负载电容。XTS为1时工作在高频模式下,支持高频晶振,但要在XIN和XOUT引脚上接外部负载电容。


XT1DRIVE用于设置驱动能力。以使XT1快速启动和支持不同频率的晶振或振荡器。


内部VLO 在无需外部晶振的情况下提供12kHz 的典型频率,VLO为对时钟要求不高的应用系统提供了低成本、超低功耗的时钟源。当VLO 被用作ACLK、MCLK 或 SMCLK 时(SELA=1SELM=1或SELS=1),VLO被选中。


REFO为内部调整低频参考时钟振荡器,在不要求或不允许使用晶振的应用中,REFO可以用作高灵敏时钟。REFO是内部调整过的32768Hz 时钟,提供一个稳定的参考时钟用作FLLREFCLK。REFOCLK 与 FLL 组合在无需外部晶振的情况下提供灵活的大范围的系统时钟。不使用REFO时,REFO不消耗电源。


FLL

这一块是比较难懂的了。待我细细分析。


FLL模块的核心是DCO振荡器、DCO频率调节器和一个十位的频率积分器。


DCO振荡器由DCORSEL(UCSCTL1中)的三个控制位选择8 个标称频率范围中的一个。DCO的5个控制位将由DCORSEL 位选择的DCO 频率范围分成32 等份,间隔大约为8%。具体参数参见手册。

MOD的5个位,使频率在DCOx 和下一个频率DCOx+1 之间转换。采用32周期调制法,32个周期中有MOD个周期的频率是 。当 DCO=31 时,MODx 位功能失效,因为此时DCO的频率已经是DCORSEL位选择的频率范围的最高频率了。操作过程如下图所示:

由于DCO的频率会受温度以及电压的影响,所以为了保持频率稳定,通过了频率积分器产生一个十位的偏差。FLLREFCLK/FLLREFDIV使积分器加1,DCOCLK/FLLD/(N+1)使积分器减1.积分器通过这个偏差调整DCOCLK的频率。形成一个调整反馈环。


FLLREFCLK的来源有三个,分别是XT1CLK、REFOCLK和XT2CLK。通过设置SELREF(UCSCTL3中)来选择。


如果状态寄存器SR中的SCG0和SCG1位为1时,FLL被禁止,DCO以预先选择的频拍运行且不会自动稳定。 当DISMOD被置位时DCO调制器被禁止,DCOCLK被调整到由DCO位选择的的DCO频率上。


XT2

XT2模块和OSC模块类似,但比它简单些,主要应用于对时钟要求较高的情况。


UCS模块寄存器

 

UCS模块共有10个寄存器,但是很多位都是保留的,具体用到的不是很多。可以结合上面的结构图对寄存器进行设置,初始化值在图中有表示。


系统初始化

系统复位后系统的初始化如下:


XT1处于LF(低频)模式且被选为XT1CLK时钟源。


ACLK被选作 XT1CLK


MCLK选择DCOCLKDIV


SMCLK选择DCOCLKDIV


FLL操作使能,XT1CLK作为FLL的参考时钟FLLREFCLK


XIN和XUOT被设置为普通I/O,XT1失效


XT2IN和XT2UOT被设置为普通I/O,XT2失效


由于XT1失效所以会产生时钟错误,而ACLK和FLLREFCLK都是选择XT1CLK作为时钟源,此时错误控制逻辑会使ACLK和FLLREFCLK选择REFOCLK。DCOFFG和XT1LFOFFG默认为置位状态,使用时必须先清除错误标志.


以上是手册中的内容,下面是我的疑惑:


1、为何不把XIN和XOUT对应的引脚初始化设置为晶振接口,这样就省去了产生错误之后再转换时钟的麻烦。或者是把ACLK和FLLREFCLK直接选择REFOCLK。


2、产生时钟错误时,手册上说会通过错误控制逻辑自动切换时钟源,但是没有改变时钟选择位SELx,需要在用户程序中操作。但不知道是怎样的原理。不知道如果程序中不改变控制位会是什么情况。


当时钟刚打开或没有正常工作时晶体振荡器错误标志位XT1LFOFFG,XT1HFOFFG或XT2OFFG相应的位将被置位,一旦被置位即使已经恢复正常状态也将一直保持置位。如果还存在错误时用户用软件将错误标志位清零,则错误标志位将自动置位,否则将保持清零。


时钟运行在除LF模式下的XT1时,如果发生时钟错误ACLK、MCLK、SMCLK都自动转换选择DCOCLKDIV。而工作在XT1的LF模式下时,三个时钟都会切换为REFOCLK。但是选择位SELx不会改变,需要由用户程序操作。

推荐阅读

史海拾趣

Daito Communication Apparatus Co Ltd公司的发展小趣事

随着微电子学的快速发展,电子设备对元器件的要求也越来越高。Daito公司敏锐地捕捉到了这一市场趋势,决定对保险丝进行进一步的创新。在1995年,他们成功开发出了适用于电路板安装的高精度小型报警保险丝。这一产品的推出,不仅满足了市场对小型化、高精度保险丝的需求,也进一步巩固了Daito公司在电子行业中的领先地位。

随后,Daito公司又针对微电子学的进一步发展,推出了可以连续自动安装的方形微型保险丝。这一产品的推出,大大提高了生产效率,降低了成本,同时也为客户提供了更加便捷的使用体验。近年来,随着面安装技术的兴起,Daito公司又迅速推出了适用于面安装技术的片状保险丝,再次展示了他们在电子行业中的创新实力。

请注意,由于篇幅限制,以上仅为两个故事示例。如果需要更多故事,可以进一步深入研究和探索Daito公司在电子行业中的发展历程和创新实践。

Amerace Electronic Components公司的发展小趣事

为了确保产品质量和客户满意度,Amerace Electronic Components公司建立了严格的质量管理体系。公司引进了先进的生产设备和技术,并对生产过程进行严格的监控和管理。同时,Amerace还注重员工培训和技能提升,确保员工具备高度的专业素养和责任意识。这些措施使得Amerace的产品质量得到了有效保障,赢得了客户的信任和支持。

Global Power Technologies Group公司的发展小趣事
在电源保护、过流保护等场合,集基耦合单稳态电路可以检测异常信号并产生相应的保护动作。
Bytesonic Corporation公司的发展小趣事

经过几年的艰苦打拼,Bytesonic Corporation在1987年迎来了重要的转折点。这一年9月,公司资本金增至新台币500万元,为公司的进一步扩张提供了坚实的资金基础。有了更多的资本支持,公司开始加大在研发和市场推广上的投入,逐渐在行业内树立起了一定的品牌影响力。

CalAmp公司的发展小趣事

在业务拓展方面,CalAmp公司始终保持着敏锐的市场洞察力。某年,公司成功推出了RFID动物溯源和共享单车智能等新业务。这些新业务不仅为公司带来了新的增长点,也进一步拓宽了其业务范围。虽然新产品线的毛利率较低,对公司的整体毛利率和净利率产生了一定影响,但公司通过优化成本结构和提升运营效率,逐步改善了这一状况。同时,公司与澳大利亚利德品有限公司签订的品牌授权及合作协议,也为公司未来的盈利能力提升奠定了基础。

Digilent公司的发展小趣事

作为电子行业的领军企业之一,DIALIGHT始终将技术创新作为公司发展的核心驱动力。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有创新性和竞争力的LED产品。同时,DIALIGHT还积极与高校、科研机构等合作,共同推动LED照明技术的进步和应用。

问答坊 | AI 解惑

【SynPlify技术问题】综合时出错,错误很奇怪

在用SYNPLIFY综合时出现以下错误:internal error in m_proasic.exe我用的ACTEL的开发软件,但是相同的代码如果用QUARTUS综合的话,就不会出现这种错误,并且QUARTUS的综合工具我也是选用的SYNPLIFY。哪位知道原因的,请告诉我,不胜感激。谢谢。…

查看全部问答>

51单片机

今天自己总算有焊有了属于自己的单片机最小系统!!!!!…

查看全部问答>

logMsg()的详解

DESCRIPTION This routine logs a specified message via the logging task. This routine\'s syntax is similar to printf( ) -- a format string is followed by arguments to format. However, the logMsg( ) routine takes a char * rather th ...…

查看全部问答>

搞单片机开发有前途吗?

最近上网看了很多贴子,感觉单片机开发工资偏低,且没什么前途,我明年毕业也是搞单片机开发的,感觉很前途迷茫。希望那些资深单片机工程师能给点建议。…

查看全部问答>

赛前训练(失真度测试仪)

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑  …

查看全部问答>

机顶盒主板缺控制板咋整?芯晟CSM1800H芯片

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑  到手几张机顶盒的主板,但没有控制板,更没有连接图。想用上去,不知道那个大虾有见过或者此资料。谢谢 …

查看全部问答>

求助停车场道闸地感检测电路设计

各位高手,有没有做过停车场道闸地感检测电路设计,希望给些建议,兄弟刚入门,学习学习,谢谢…

查看全部问答>

51单片机C语言数组的使用方法(易懂)

新手小白,自学单片机中。对数组的使用完全不了解啊,网上看的好多资料看不明白。哪位大神能讲解讲解么。。。在线求助。…

查看全部问答>