历史上的今天
返回首页

历史上的今天

今天是:2024年10月19日(星期六)

正在发生

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

2019-10-19 来源: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的分享就到这里。感谢阅读,若有疑问或错误,请留言指出。

推荐阅读

史海拾趣

Catalyst / ON Semiconductor公司的发展小趣事

在追求经济效益的同时,Catalyst / ON Semiconductor公司也高度重视可持续发展和社会责任。公司积极推行环保政策,减少生产过程中的污染排放;同时,公司还关注员工福利和社会公益事业,积极参与各种社会公益活动。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

这五个故事涵盖了Catalyst / ON Semiconductor公司从初创到发展壮大的不同阶段和方面,展现了公司在电子行业中的成长轨迹和贡献。虽然这些故事是基于假设和一般逻辑构建的,但它们旨在呈现一个企业在发展过程中可能遇到的挑战和机遇,以及企业如何应对这些挑战并抓住机遇。

捷嘉电子(Chequers Electronic)公司的发展小趣事

在国内市场取得一定成绩后,捷嘉电子开始将目光投向国际市场。通过与国外知名企业的合作,公司成功将产品出口到数十个国家。这一过程中,捷嘉电子不仅面临着文化差异、法律法规等挑战,还需要应对国际市场竞争的复杂性。然而,凭借着过硬的产品质量和专业的服务,捷嘉电子逐渐在国际市场上赢得了良好的口碑。

ET Enterprises Ltd公司的发展小趣事

在竞争激烈的电子行业中,ET Enterprises Ltd公司始终保持对技术创新的重视。公司不断投入研发资源,推动光电倍增管技术的不断进步。同时,公司也注重人才培养和团队建设,为公司的持续发展提供了有力保障。

CBM_America_Corporation公司的发展小趣事

CBM_America_Corporation在电子行业的初期,专注于研发具有创新性的半导体技术。通过不懈的努力,公司成功开发出一种高效能、低能耗的芯片,受到了市场的广泛欢迎。这一技术突破为公司带来了大量的订单,也吸引了众多投资者的关注。随着资金的注入,CBM开始扩大生产规模,并进军国际市场,逐步成为了电子行业的领军企业。

Edcon Components Netherlands Cv公司的发展小趣事

为了进一步扩大市场份额,Edcon Components Netherlands Cv开始积极拓展国际市场。公司通过对不同国家和地区的市场进行深入分析,制定了精准的市场拓展策略。通过与当地经销商建立合作关系,Edcon的产品逐渐进入国际市场,并在多个国家和地区取得了成功。国际市场的拓展不仅为公司带来了更多的商机,也提升了公司的品牌影响力。

Easy Magnet Corp公司的发展小趣事

随着环保意识的提高,Easy Magnet Corp公司开始关注产品的环保性能。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提升了公司的社会形象,也吸引了更多注重环保的消费者。

问答坊 | AI 解惑

矽玛特推出基于STMP3600的优化视频参考平台

北京—全球领先的混合信号多媒体半导体供应商矽玛特公司(SigmaTel,NASDAQ 交易代号:SGTL)宣布基于STMP3600的优化多媒体播放器已准备就绪,可以开始供货。这些播放器可支持每秒30帧的QCIF格式或每秒24帧的QVGA格式视频播放,为矽玛特客户的 ...…

查看全部问答>

我国广播电视直播卫星 中星9号

中星九号广播电视直播卫星点火发射| “中星九号”广播电视直播卫星(腾讯科技配图) 2008年6月9日20时15分,“中星九号”广播电视直播卫星点火发射。 中新网西昌六月九日电(唐振宇 齐彬)北京时间六月九日晚八时十五分,中国在西昌用“长征三号 ...…

查看全部问答>

小型变压器的绕制

本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 小型变压器的绕制  …

查看全部问答>

哪位大虾了解EM78P458单片机

在网上很少有其资料。还有这种51内核20引脚的单片机如果用40引脚的开发办可以烧写程序么?…

查看全部问答>

今天做了个网口转串口模块

郁闷的是我只能做到双向9600bps,单向115200bps,人家8位单片机都能做到双向56000bps,受打击了,我再优化算法。。。。       2011.1.8总结汇报,这个模块已经完成了很久了,当时主要问题不是8962或者算法的问题,而是上位机测试 ...…

查看全部问答>

为什么串口得到的发动机转速是 字节乘以256的权?为什么是256的权呢?

看不懂  串口啊    老大  帮帮我啊    怎么个算小数点的位置啊        申明情况下要转为二进制要转为ASC2   申明情况下用16进制处理呢?????555…

查看全部问答>

Linux下如何检测SATA热插拔?

我们的程序需要时钟保持着对SATA硬盘的检测,当硬盘被拔掉或者插上时,都应该要有提示信息。那么在Linux下面,我需要去读取、检测哪儿才能获取该信息呢?如果有人对USB的热插拔也比较了解的,欢迎过来帮我扫盲!(我大致看了驱动层,整个SATA的中断 ...…

查看全部问答>

ADS scatter描述文件

在ADS的“ARM Link”中设置 “-info totals -info unused -entry 0x40000000 -mangled -map -symbols -scatter D:\\work-wincetest\\uC-GUI\\ucosforphilips\\scatter.scf -info veneers -info sizes -xref  -callgraph” 生成了EXET_E ...…

查看全部问答>

关于vxworks中网络的问题?

小弟最近研究vxworks时遇到一个问题,请大侠们多指教! 我的板子把ip地址设置成192.168.1.135,子网掩码设置为255.255.0.0,主机ip为192.168.1.45,子网掩码是255.255.0.0,我从板子上去ping主机,出现问题,ping不通,而相同情况下板子跑linux系统 ...…

查看全部问答>

GSM AT指令怎么取得本机号码?

GSM AT指令怎么取得本机号码?…

查看全部问答>