历史上的今天
返回首页

历史上的今天

今天是:2024年10月21日(星期一)

正在发生

2019年10月21日 | 浅谈msp430f5529入门(1)——时钟模块DCO

2019-10-21 来源:eefocus

刚开始摸索430F55系列,我也是菜鸟一名,折腾了两天它的时钟系统,总算自认为有点眉目。想到入门不易,趁热把我的一些体会分享一下。菜鸟才疏学浅,如有不妥之处,请务必指出。


DCO


5系列中比149多了个FLL——锁频环,初学者对着他确实有点头疼。另外,还有一个名为DCOCLKDIV的时钟源,它只是由DCOCLK分频而得,但请谨记:


        ·PUC后MCLK和SMCLK的默认时钟源并不是DCOCLK,而是DCOCLKDIV!频率是DCOCLK的二分之一!


        ·DCOCLKDIV的分频值为D,由FLLD所确定,PUC后D默认为2,所以DCOCLKDIV的频率是DCOCLK的二分之一。


如果把锁频环关闭不用的话,这样的DCO和1xx系列的几乎没有区别,只要配置好DCO,MOD,和DCORSEL就行了。


这里主要说一下这个FLL:


        ·PUC后FLL默认为工作


        ·置位SR中的SCG0或SCG1和将其禁止。


FLL的主要作用是稳定DCO,利用它硬件可以自动地配置DCO和MOD,使得DCO比以往更加稳定,也就是说DCO和MOD都不用我们用户去操心,即使你配置了它,FLL也会去改变它。那么,这里出现了一个需要注意的问题!:


        ·使用FLL时还需配置DCORSEL!


根据DCO目标值的范围来配置DCORSEL,若目标值超出DCORSEL所规定的范围,那你所得到的fDCO将不会是所计算的值。详细每个值对应范围请参阅datasheet。


        ·FLL具有它的时钟FLLREFCLK,默认为TX1LF提供,TX1失效自动转为REFCLK。


        ·TX1一般外接32768Hz晶振,所以TX1LF模式的频率为32768Hz。


        ·REFOCLK为低频修正内部参考振荡器,典型值为32768Hz。


        ·PUC后,TX1默认是关闭的,也就是说FLLREFCLK是由REFOCLK提供,但不论哪个提供,频率都为32768Hz。


接下来介绍fdco的计算式子,在user guide里面有给出:


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

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


其中:


        ·D为DCOCLK分频为DCOCLKDIV的分频数,由FFLD确定,可取1,2,4,8,16,32,默认值为2。


        ·N由FLLN确定,值取1-1023,最小值为1,如果写0会被置位1,默认值为31。


        ·n为FLLREFCLK的分频值,游FLLREFDIV确定,可取1,2,4,8,12,16.默认值为1。


        ·fFLLREFCLK默认由REFOCLK提供,除非打开了TX1,但值都为32768Hz。


这样,我们就能计算出PUC后,fDCOCLKDIV的值为1,048,576Hz。所以MCLK和SMCLK的默认频率为1MHz,但应注意的是:fDCOCLK的值是这个值得两倍!也就是说PUC后DCOCLK的频率为2MHz。


所以,对于设置DCO频率,使用FLL的确会方便和稳定很多,根据目标值频率通过公式反推,一般fFLLREFCLK就是32768,n为1,D为2,这些值取默认值就好,那么我们只要计算出N,只要N的值落在了1023之内,它就符合范围,而且一般都不会超出的。那么只要设置好DCORSL和FLLN,我们就可以得到想好的DCO频率了。但一定要记住:


·MCLK和SMCLK的默认时钟源是fDCOCLKDIV!是(N + 1) × (fFLLREFCLK÷ n)!


根据以上两条公式,我将DCOCLK和DCOCLKDIV的关系理解为,fFLLREFCLK,N,n,这三个值确定了DCOCLKDIV,而DCOCLK则是在DCOCLKDIV的基础上乘上了D,是DCOCLKDIV确定了DCOCLK。


关于XT1LF和REFOCLK,虽说它们两个都是32768Hz,不过如果PUC后不处理XT1,而让ACLK和FLLREFCLK的时钟源自动转为REFOCLK,那么XT1LFOFFG(XT1晶振失效标志位(低频模式))将会一直被置位,而OFIFG也跟着一直置位。


所以,解决办法无非是两种:


1.操作简单的方法,重新配置ACLK和FLLREFCLK的时钟源,一般就是将它们的源取为REFOCLK。只需两行代码:


   UCSCTL3 |= SELREF_2;                      // Set DCO FLL reference = REFO

  UCSCTL4 |= SELA_2;                        // Set ACLK = REFO


2.打开XT1LF,只要将XT1成功起振,并成功取为时钟源,TX1LFOFFG便不会被置位。因为ACLK和FLLREFCLK的时钟源默认就是XT1LF,所以我们只需(1)将XIN和XOUT的I/O口选为XIN和XOUT模式,使得晶振接通,(2)再将XT1OFF置0,打开晶体振荡器,(3)配置XCAP,选择好电容,一般TX1是32768Hz的话,电容取12pf,不过这个是默认值,所以可以不配置。


  P5SEL |= BIT4+BIT5;                       // Port select XT1

  UCSCTL6 &= ~(XT1OFF);                     // XT1 On

  UCSCTL6 |= XCAP_3;                        // Internal load cap


我测试过这两种方法,第一种获得的时钟频率,无论是ACLK还是MCLK和SMCLK,与目标值有约百分之零点几到一点几的误差,而且频率有波动。而第二种使用了外部晶振,频率非常接近目标值,ACLK只相差了0.5Hz,而且非常稳定,几乎没有波动。


所以,我推荐在不考虑功耗和要求精确的情况下,尽量使用XT1LF。


参照TI提供的例程,在设置DCORSEL和FLLN前,需要暂时禁止FLL,即将SR中的SCG0置位,然后再配置UCSCTL1和UCSCTL2,配置好后再将SCG0置0,如下:


  __bis_SR_register(SCG0);                // Disable the FLL control loop

UCSCTL1 = DCORSEL_5;                    // Select DCO range 16MHz operation

UCSCTL2 |= 249;                         // Set DCO Multiplier for 8MHz

// (N + 1) * FLLRef = Fdco

// (249 + 1) * 32768 = 8MHz

__bic_SR_register(SCG0);                // Enable the FLL control loop


关于msp430f5529时钟模块的DCO的分享就到这里。感谢阅读,若有疑问或错误,请留言指出。


推荐阅读

史海拾趣

科达嘉CODACA公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

Bombardier Inc公司的发展小趣事

1976年,庞巴迪公司的航空业务经历了重大变革。其加拿大航空子公司被加拿大政府收购,成为加拿大主要的航空企业。在此期间,庞巴迪在电子系统方面的研发能力得到了进一步提升。公司开始涉足更先进的航空电子技术,如自动驾驶系统、导航系统等,为现代航空业的发展做出了重要贡献。

台湾町洋(dinkle)公司的发展小趣事

町洋公司创立于1983年,由一群志同道合的电子工程师创立。创业初期,町洋专注于接线端子及相关产品的研发与生产,凭借其独特的设计理念和精湛的生产工艺,逐渐在台湾市场上崭露头角。公司创始人深知产品质量的重要性,因此始终坚持严格的品质控制,赢得了客户的信赖。

富满电子(FM)公司的发展小趣事

町洋注重企业文化建设,倡导以人为本的管理理念。公司为员工提供了良好的工作环境和福利待遇,并积极开展各种培训和学习活动,帮助员工提升自身素质和专业技能。这种关注员工成长和发展的企业文化使得町洋的凝聚力不断增强,为公司的持续发展提供了有力保障。

EECO Switch公司的发展小趣事

作为薄膜开关的先驱和专家,EECO Switch公司在该领域拥有超过30年的丰富经验。公司凭借其精湛的制造工艺和严格的品质控制,成功打造出了众多优质的薄膜开关产品。这些产品广泛应用于医疗设备、航空电子设备、军用产品和工业控制等领域,赢得了众多客户的信任和好评。

B&F Fastener Supply公司的发展小趣事

随着电子产品的日益小型化和复杂化,对紧固件的要求也越来越高。B&F Fastener Supply公司紧跟行业趋势,投入大量资源进行技术创新。公司成功研发出一系列适用于微型电子设备的紧固件产品,不仅满足了市场的迫切需求,还凭借出色的性能和稳定的品质赢得了客户的广泛认可。

问答坊 | AI 解惑

Cortex-M3,你选择STM还是LM?

STM32系列芯片由于它的低价与高性能,现在是火的不行了,各式各样的开发板到处都是,之前我也有购买一块STM的开发板,不过没怎么去用,最近打算拿出来试着点亮LED,结果发现STM给的数据手册简直无法阅读.扯来扯去的,最简单的GPIO寄存器地址我都差不多找到 ...…

查看全部问答>

请教内存管理问题

请教各位高手, 在win32工程下开发, 内存管理这块,主要用到那些api函数, 小弟头一次要在win32下动态管理内存, 不太熟悉windows系统内存管理, 有劳各位了。…

查看全部问答>

wince下不能使用webServices求助~~

/-----------------webServices 代码----------------------- using System; using System.Collections.Generic; using System.Web; using System.Web.Services; /// /// Summary description for testService /// [WebService(Namespace ...…

查看全部问答>

PC机中IDE接口的端口地址

PC机有个IDE 接口,我通过他接个小硬盘,如何知道这个IDE接口的端口地址呢?我要通过这个地址进行 通讯,高手请指教…

查看全部问答>

EVC单步调试很慢。帮帮忙啊!

我用的acer本子,内存1G,cpu双核1.73,用evc单步调试程序时执行一步大概要个6~7s时间啊,怎么会这么慢呀?要设置吗?…

查看全部问答>

BT 移植:需要在uclinux 2.4中运行,急!现金5K-1W购买原码.另外招嵌入式开发经理。详细见我们公司网站。

如题,我公司有一个项目需要在uclinux 2.4上移植BT 及emule ,可现金购买。硬件平台是sigma designs 8623。 希望大家帮顶。 另外公司高薪招STB软件开发经理要求如下: 要求: 1、电子、通信、自动化专业,本科以上学历; 2、精通数字电视系统知识 ...…

查看全部问答>

USB RNDIS的下载和调试

最近使用MAINSTONEIII的BSP,使用其USB模拟网口,确不能下载:其调试信息如下: Microsoft Windows CE Ethernet Bootloader Common Library Version 1.1 Built Nov 9 2005 06:15:26 Microsoft Windows CE Ethernet Bootloader 1.11 for the Intel ...…

查看全部问答>

MDK中STM32调试出现assert_param()函数未定义错误(用3.0的库)

在MDK3.50中调试3.0库所带的例程,在链接过程中出现assert_param函数未定义的错误:Error: L6218E: Undefined symbol assert_param (referred from misc.o),无论将stm32f10x_conf.h头文件中的“ #define USE_FULL_ASSERT 1”打开还是关闭都出 ...…

查看全部问答>

真想骂ST

去年就一直关注STM8L系列. STM8L101系列,晶振都不能接,要串口有个屁用. 波特率不准,工业场合根本不敢用.…

查看全部问答>

建议

斑竹,能不能将广告图片弄的短点啊,原有广告把网页拉得太长了。…

查看全部问答>