历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2020年02月16日 | (5)MSP430F5529 统一时钟系统UCS

2020-02-16 来源:eefocus

之前有一点漏说明了,先补充上:还有一个模块时钟源:MODOSC,产生MODCLK时钟源信号,一般只为闪存控制模块和ADC12模块提供服务。


该模块不被使用时自动关闭,任何模块对该时钟源提出使用要求时,MODOSC无需被使能即可响应该请求。430F5529中MODCLK为5MHZ。

***************************************************************

MSP430F5529有多个时钟源,而且很多模块其时钟源都是可以自由选择的。此外,由于一般情况下,系统功耗是和工作频率成正比的,因此有些时候通过选择较低频率的时钟源,在满足正常工作条件下,是可以有效降低功耗的。虽然函数库HAL_UCS.c/h,有完整的各个控制函数,但我觉得对于这一章还是对寄存器直接操作比较简单,因为函数太短、太多了。


3.1统一时钟系统(UCS)的简介

Unified Clock System,UCS。合理的配置时钟,可以达到平衡系统且降低功耗的目的。


MSPF5529时钟系统包含5个时钟源:

①LFXT1 外部低频振荡源,32.768KHZ,可以用作FLL的参照源;

②XT2 外部高频振荡源,4MHZ;

③VLO (Internal very low)内部低耗低频振荡源,典型为10KHZ,精度一般;

④REFO 内部低频参照源,32.768KHZ,常被用作锁相环FLL的基准频率,精度很高,不使用时不消耗电源,其设置往往要参考LPM模式的的设置;

⑤DCO (Internal digitally-controlled)内部数字控制振荡源,一般通过FLL来设置;(很有用,很重要,之后会详细讲)


通常使用3种时钟信号,它们都来自于上述5个信号源:

①ACLK (Auxiliary clock)辅助时钟,其时钟源可由软件控制从XT1、REFOC、VLO、DCO、DCOCLKDIV、XT2里面选取。其中DCOCLKDIV是由DCO经1、2、4、8、16或者32分频得到。注意,ACLK同样可以再次被1、2、4、8、16或者32分频。

②MCLK (Master clock)主时钟,其特性与ACLK一模一样。

③SMCLK (Subsystem master clock)子系统时钟,其特性与ACLK一模一样。


3.2 UCS的操作说明

开机上电时默认的时钟情况为(必须记清楚!!!!):

ACLK:XT1(低频模式被选择为XT1CLK时钟振荡器,XT1CLK被选择为ACLK的时钟源32.768KHZ)

MCLK:DCOCLKDIV(为1.048576MHZ,DCOCLK=2.097152MHZ)

SMCLK:DCOCLKDIV(为1.048576MHZ)

此外,FLL的参照源默认XT1;

如果连接XT1和XT2的引脚不进行PXSEL的设置,那么这两个时钟源都是无效的;

 REFOCLK、VLOCLK、DCOCLK默认状态下是可用的;

系统稳定后,DCOCLK默认为2.097152MHZ,FLL默认2分频,则MCLK和SMCLK的频率都为1.048576MHZ。(实验三会提到如何计算)


另外,系统复位、系统工作模式LPM的选择都会对UCS有一定影响,这里限制太多,具体可参考TI官方资料UCS部分。LPM以及系统复位下章将会讲到。


关于操作说明的简单总结:(下面基本都是废话,了解即可)

①VLO的选择是最简单的,不需要顾及其它情况;

②REFO的选用,需要参考不同的工作模式,有多种限制;

③XT1和XT2特点相同。使用的时候,不仅要配置与其相连的引脚,还要配置电容,还要注意其本身工作在低频还是高频模式。而且,在不同工作模式下也有不同的要求;

④DCO作为数控振荡器,其频率的调节不仅可以通过自身设定,也可以通过FLL锁相环设定;

⑤FLL锁相环,是变换频率的灵活选择。它既可以设置基准频率,也可以选择分频数,还可以被直接关闭来实现降低功耗等目的;

⑥UCS系统带有时钟信号错误保护机制;

⑦对有严格时序要求的地方,要选择精度高的时钟源,并且做好FLL和DCO部分的调制设置;

⑧不同模式下(有些时钟源是禁止的)的时钟控制图:(只需用到的时候注意一下即可,查表)


3.3 UCS寄存器控制操作

共有10组16位读写寄存器,为UCSCTL0-UCSCTL9。同样支持字和字节操作,即UCSCTL0包括UCSCTL0_H和UCSCTL0_L。


注:凡是标记“Reserved”的位,如果没有特意声明,则读回时都按0处理。


UCSCTL0

DCO  :DCO频拍选择。选择DCO的频拍并在FLL运行期间(因MOD位的变化)自动调整。DCO 的5个控制位把由DCORSELx选择的DCO频率分为32等份,间隔大约8% 。

MOD:调制位计数器。选择调制类型,所有的MOD位在FLL运行期间自动调整,无需用户干预。

UCSCTL1

DCORSEL:DCO频率范围选择

DISMOD:调制器禁止使能位。0—使能调制器;1—禁止调制器。


UCSCTL2

FLLD:预分频器(即fDCO分频)。000-1分频,001-2分频,010-4分频,011-8分频,100-16分频,101-32分频,110以及111都是备用的,默认为32分频。

FLLN:倍频系数。设置倍频值N,N必须大于0,如果FLLN=0,则N被自动设置为1。


UCSCTL3

SELREF:FLL参考时钟选择。000-XT1,001-待用,默认为XT1,010-REFO,101-XT2,其余均为待用,默认为REFO。

FLLREFDIV:FLL参考时钟分频器。000-1分频,001-2分频,010-4分频,011-8分频,100-12分频,101-16分频,110以及111都是备用的,默认为16分频。


UCSCTL4

SELA:ACLK时钟源选择。 000-XT1,001-VLO,010-REFO,011-DCO,100-DCOCLKDIV,101 -XT2有效时为XT2,否则为DCOCLKDIV 110 、111保留以备后来使用。当XT2有效时默认为XT2CLK,否则默认为DCOCLKDIV 

SELS:SMCLK时钟源选择。设置同SELA

SELM:MCLK时钟源选择。设置同SELA


UCSCTL5

DIVPA:ACLK外部有效输出分频000-1分频,001-2分频,010-4分频,011-8分频,100-16分频,101-32分频,110以及111都是备用的,默认为32分频。

DIVA:ACLK时钟源分频,设置同DIVPA

DIVS:SMCLK时钟源分频,设置同DIVPA

DIVM:MCLK时钟源分频,设置同DIVPA


UCSCTL6

XT2DRIVE:XT2振荡器电流驱动能力调整 ,00 最低电流消耗。XT2振荡器工作在4MHz到8MHz …

XT2BYPASS:XT2旁路选择          0-XT2来源于内部时钟(使用外部晶振)         1-XT2来源于外部引脚输入(旁路模式)

XT2OFF:关闭XT2振荡器        0 -当XT2引脚被设置为XT2功能且没有被设置位旁路模式时,XT2被打开;  1 -当XT2没有被用作时钟源以及没有用作FLL参考时钟时,XT2被关闭。

XTS:XT1工作模式选择  0-低频模式(XCAP定义XIN和XOUT引脚间的电容) 1-高频模式(XCAP位没有被使用)

XCAP:振荡器负载电容选择

SMCLKOFF:SMCLK关闭控制位  0-SMCLK开           1-SMCLK关闭 

XT1OFF:同XT2OFF


UCSCTL7

XT2OFFG:XT2出错时置位,同时OFFIFG也会置位,需要软件清零。

XT1HFOFFG:高频工作模式下XT1出错时置位,同时OFFIFG也会置位,需要软件清零。

XT1LFOFFG:低频工作模式下XT1出错时置位,同时OFFIFG也会置位,需要软件清零。

DCOOFFG:DCO出错时置位,但当DCO=1或31时,也会置位,同时OFFIFG也会置位,需要软件清零。


UCSCTL8

信号请求使能:0-相应的信号请求禁止      1-相应的信号请求允许


UCSCTL9

XT1、XT2旁路模式输入摇摆电平(范围)必须被设置 0-输入范围0~DVCC  1-输入范围0~DVIO


3.4实验总结

实验一:将MCLK和SMCLK配置为REFOCLK、VLOCLK(需要示波器测量)

/* REFOCLK和VLOCLK是芯片默认提供的,只要芯片正常工作,这两个时钟就会正常工作,因此,该时钟配置非常简单,只需要修改UCSCTL4,将SELS和SELM配置为对应的选项VLOCLK或者REFOCLK即可*/

#include  

void main(void){

    WDTCTL = WDTPW+WDTHOLD;

    P1SEL |= BIT0;//声明有特殊功能,将不被用作普通I/O

    P1DIR |= BIT0;//ACLK输出端,用来测量ACLK频率,外接频率计测

    P2SEL |= BIT2;P2DIR |= BIT2;//SMCLK输出端

    P7SEL |= BIT7;P7DIR |= BIT7;//MCLK用输出端

    //UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_1|SELM_1; //将SMCLK和MCLK配置为VLOCLK

    UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_2|SELM_2; //将SMCLK和MCLK配置为REFOCLK

/* UCSCTL4&(~(SELS_7|SELM_7))这一语句相当于先把SELS和SELM清零*/

while(1);

}

推荐阅读

史海拾趣

HAHN - Elektrobau GmbH & Co KG公司的发展小趣事

1991年,高通的CDMA技术首次被商用于美国卫星通信公司的无线电话网,标志着高通在移动通信领域的重大突破。与此同时,高通开始向智能手机芯片方向转型,目标是利用芯片技术使手机具备更强大的计算能力。随着技术的不断成熟,高通推出了多款性能卓越的移动应用处理器,如Snapdragon系列,迅速占据了智能手机芯片市场的主导地位。这一转型不仅巩固了高通在移动通信领域的地位,也为公司的长期发展奠定了坚实基础。

Dialog Semiconductor(戴乐格半导体)公司的发展小趣事

为了进一步增强市场影响力,Dialog Semiconductor通过一系列的收购策略来扩大其业务范围。例如,在2020年,公司收购了Adesto Technologies,这是一家专注于非易失性存储器(NVM)解决方案的公司。此次收购为Dialog Semiconductor带来了近5,000家新客户,并补充了其在无线连接产品之外的有线连接解决方案。同年,Dialog Semiconductor还收购了另一家公司,获得了强大的核心IC产品组合和经验丰富的工程师团队,进一步巩固了其在IoT市场的地位。

明波通信(BWAVE)公司的发展小趣事

经过多年的发展,明波通信在技术和市场上都取得了显著成绩。为了进一步推动公司的发展,明波通信成功在新三版上市。这一举措不仅为公司筹集了更多的发展资金,也提升了公司的品牌影响力和市场竞争力。上市后的明波通信,在资本市场上展现出了强劲的发展势头。

Allied Electronic & Semiconductor Technology Inc公司的发展小趣事

近年来,电子行业正经历着深刻的变革,传统半导体市场逐渐饱和,新兴领域如物联网、人工智能等蓬勃发展。面对这一行业变革,AE&ST公司果断进行转型升级。公司调整战略方向,加大在新兴领域的研发投入,同时优化生产流程,降低成本。通过一系列的改革措施,AE&ST公司成功实现了从传统半导体制造商向新兴技术领域的转型。

CHERRY公司的发展小趣事

1953年,一位名叫Walter Lorain CHERRY的德国年轻人在美国创立了Cherry公司,地点选在了一家餐厅的地下室。当时,Cherry的主要业务是生产微动开关,这种开关被广泛应用于各种电子设备中。Cherry的微动开关因其高品质和可靠性而赢得了市场的广泛认可,逐渐成为了行业内的佼佼者。

Dowosemi公司的发展小趣事

随着业务的不断发展,Dowosemi公司开始积极拓展海外市场。他们通过参加国际展会、与海外客户建立合作关系等方式,将产品推向全球。在海外市场拓展的过程中,Dowosemi公司也遇到了不少挑战,但他们凭借优质的产品和服务,成功克服了这些困难。如今,Dowosemi公司的产品已经遍布全球多个国家和地区,为公司的发展注入了新的活力。

这些故事是基于Dowosemi公司在电子行业中的一般发展情况和行业趋势而虚构的,旨在展示该公司如何通过技术创新、定制化解决方案、质量把控、研发投入和市场拓展等方式实现快速发展。

问答坊 | AI 解惑

一个实用雕刻机

[localimg=400,225]3[/localimg][localimg=400,225]3[/localimg]f…

查看全部问答>

教你读懂MOSFET datasheet说明书

教你读懂MOSFET datasheet说明书所有功率MOS制造厂商都会提供每种型号产品的详细说明书。 说明书用来说明各种产品的性能。这对于在不同厂商之间选择相同规格的器件很有用。在一些情况下,不同厂商所提供的参数所依据的条件可能有微妙的区别,尤其在 ...…

查看全部问答>

独立式键盘识别程序

小弟求一独立式键盘识别程序按下弹起之后才识别!!求各位大虾指点!…

查看全部问答>

有串口但不能下载程序

我的单片机在下载程序时 用两个USB不能下载程序   但用一个USB 和一个九针可以用 不知道为什么  有哪位高手知道其中的原因 请指点一下  谢谢…

查看全部问答>

用Kiel汇编一个最简单的程序通不过,怎么回事.

用Kiel汇编一个最简单的程序通不过,怎么回事. 代码如下: ORG 000H LJMP MAIN ORG 030H MAIN:SET P1.0 CLR P1.0 END 操作步骤如下: 1.建立工程->设置芯片AT89C51->使用片内ROM 2.建立文件->保存为test.asm 3.把文件添加到建立的工程里面. ...…

查看全部问答>

急问用DialogBoxParam()打开窗口,但是如何得到窗口中的控件的句柄呢

用这个函数自己打开我自己定制的窗口 ,但是我想得到窗口中的控件的句柄,但是我怎么也得不到 函数很简单: int WINAPI WinMain(HINSTANCE hInstance,                   HINST ...…

查看全部问答>

DisPlay驱动 与 LCD驱动的关系

WinCE菜鸟求救: 好心大哥大姐帮忙了: 在LCD的驱动程中必然包括相关的引脚配置和寄存器设置了,然而在Display的驱动程序中,竟然也有跟LCD一样的引脚配置跟寄存器配置,问:       为什么会这样呢:      ...…

查看全部问答>

WCE Application程序可不可以使用MFC类库?

WCE Application程序可不可以使用MFC类库?如果可以,要怎样使用?小弟直接包含MFC的头文件,结果当在程序中使用了new时,出现编译错误: uafxwced.lib(afxmem.obj) : error LNK2005: \"void * __cdecl operator new(unsigned int)\" (??2@YAPAXI@ ...…

查看全部问答>

我西门也做了个应急灯的方案

我西门是个没什么水平的人,这次的原理图是我画的,比较匆忙,也比较粗糙.不妥之处,希望高手给予指点和帮助.不胜感激! [ 本帖最后由 西门 于 2010-9-7 17:40 编辑 ]…

查看全部问答>

对LED和锂电池的一些使用体会

    我的应急灯做好有大概一个月的时间了。我住的地方从没有停过电,所以平时也没有派上什么用场。只是拍了几张照片,偶尔照照找东西,呵呵!仅有的体会就来自平时偶尔的体验。     1、LED     设 ...…

查看全部问答>