怎样只用一个XT2晶振得到精确的高频----msp430f5529单片机

发布者:飘然出尘最新更新时间:2020-04-18 来源: eefocus关键字:XT2晶振得  高频  msp430f5529  单片机 手机看文章 扫描二维码
随时随地手机看文章

最近在用msp430f5529,终于在上周弄清了时钟方面的原理,在此记录下,唔,这也是俺第一篇博客······


首先呢,我先插入它的原理框图

从图中可以看出ACLK、SMCLK、MCLK都可以由XT1CLK/VLOCLK/REFOCLK/DCOCLK/DCOCLKDIV/XT2CLK得到,而TI例程里面给的大多是由FLLREFCLK倍频得到DCOCLK或DCOCLK,从而得到SMCLK和MCLK,而ACLK都是由XT1CLK或REFOCLK直接获得。例程里面的FLLREFCLK来源于XT1CLK或REFOCLK。所以例程里面得到的高频都是经过大的倍频得到,这里面有个弊端,就是如果你需要很精确的频率的话由大的倍频得到的频道误差大。


这里呢我就讲下怎么只用一个高频晶振得到ACLK/SMCLK/MCLK,我得先抱怨下,不知道哪位前辈在网上说430单片机如果只用一个晶振的话只能用低频晶振,这个理论我纠结了很久,终于证明了是错的,至少在msp430f5529里面是错的。言归正传,我只用了XT2,没有用XT1。由XT2得到XT2CLK=4MHz,然后将XT2CLK作为FLLREFCLK的时钟源,也就是FLLREFCLK现在是4MHZ了,不是32khz了。通过下面的公式得到DCOCLK:


f(DCOCLK)=D*(N+1)*(f(FLLREFCLK)/n)


默认情况下,D=2,n=1,N是自己随意配置的整数。这里我要得到DCLCLK=16MHZ,我取的是D=16,N=1,n=8,当然你可以自己计算,不限于这个值。由DCOCLK/D=DCOCLKDIV,最终由DCOCLKDIV分频得到ACLK=31.5khz,当然跟32khz相差还挺大的,我也没有办法了。


另外也要扩大DCO倍频的赔率范围,5529数据手册上有指示的。特别要注意的是,这里你千万不能打开XT1,会出错的。


最后,我帖上我的的程序,已经验证过了完全正确的


 P1DIR |= BIT0;

 P1SEL |= BIT0;              //可以看ACLK的频率

 P2DIR |= BIT2;

 P2SEL |= BIT2;             //SMCLK

 P7DIR |= BIT7;

 P7SEL |= BIT7;             //MCLK


 P5SEL |= BIT2+BIT3;

 UCSCTL6 &= ~XT2OFF;          //打开XT2


/*********************寄存器配置部分******************************/


 __bis_SR_register(SCG0);

 UCSCTL0 = DCO0+DCO1+DCO2+DCO3+DCO4;

 UCSCTL1 = DCORSEL_4;       //DCO频率范围在28.2MHZ以下

 UCSCTL2 = FLLD_4 + 1;       //D=16,N=1

 UCSCTL3 = SELREF_5 + FLLREFDIV_3;    //n=8,FLLREFCLK时钟源为XT2CLK;DCOCLK=D*(N+1)*(FLLREFCLK/n);DCOCLKDIV=(N+1)*(FLLREFCLK/n);

 UCSCTL4 = SELA_4 + SELS_3 +SELM_3;    //ACLK的时钟源为DCOCLKDIV,MCLKSMCLK的时钟源为DCOCLK

 UCSCTL5 = DIVA_5 +DIVS_1;      //ACLK由DCOCLKDIV的32分频得到,SMCLK由DCOCLK的2分频得到

             //最终MCLK:16MHZ,SMCLK:8MHZ,ACLK:32KHZ

 

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


/**********************************************************************/


 __delay_cycles(8192);

 do

 {

  UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); //Clear XT2,XT1,DCO fault flags

  SFRIFG1 &= ~OFIFG;       //Clear fault flags

 }while (SFRIFG1&OFIFG);

关键字:XT2晶振得  高频  msp430f5529  单片机 引用地址:怎样只用一个XT2晶振得到精确的高频----msp430f5529单片机

上一篇:[MSP430DriverLib-2]使用延时让LED闪烁
下一篇:小白的MSP432学习之路(1)

推荐阅读最新更新时间:2024-11-04 05:13

AVR单片机—(五)、ATMEGA16的USART与PC机串行通信—03
五、ATMEGA16的USART与PC机串行通信 五—(03)、PC机发送控制指令控制单片机工作~(这个控制还是比较简单的~~ ,不过个人认为还是有水平的~) 还是先上图片~~,然后程序,程序师模块化的,我尽量贴全点~~ 然后就是程序了 IAR5_2.c //------------------------------------------------------------------------------ //控制指令的定义(个人感觉这个才是真正应用呢~~给力~) //上位机界面中,用户需要输入控制下位机的指令 //由于传送的数据比较简单,因此控制指令也可定义的相对简单一些((*^__^*) 嘻嘻……,那本书上
[单片机]
AVR<font color='red'>单片机</font>—(五)、ATMEGA16的USART与PC机串行通信—03
STM32G031G8U6单片机内部FLASH读写简单学习
此篇限定研究范围为FLASH区域的访问规则。 以下结论均为实测所得: 一、读 1.单字节读例程,单字节读可以从任意地址开始读 uint8_t STMFLASH_ReadByte(uint32_t faddr) { return *(volatile uint8_t*)faddr; } 2.半字(2个字节)读例程, 半字读只能从偶数地址开始读 ,从奇数地址读的话单片机就死机了 uint16_t STMFLASH_ReadHalfWord(uint32_t faddr) { return *(volatile uint16_t*)faddr; } 3.字(4个字节)读例程, 按字读只能从4的整数倍地址开始读
[单片机]
飞思卡尔推出基于ARM Cortex-M技术的业界最安全的微控制器
新的Kinetis K8x MCU系列旨在应对IoT安全挑战,集先进的安全性、功率效率、大容量存储器及功能可扩展性于一身,打造安全的未来互联网 飞思卡尔半导体日前推出新的Kinetis K8x多应用微控制器(MCU)系列,使ARM Cortex -M级平台获得最高水平的集成安全性。 过去创建安全的嵌入式应用需要3个IC,包括主处理器、执行加密功能的安全协处理器,有时还需要用于物理防篡改保护的 IC。Kinetis K8x MCU系列只需要一个MCU便能执行上述所有功能,可降低成本、缩小尺寸、降低功耗。飞思卡尔将卓越的安全性集成至这个面向普通市场的MCU系列中,使物联网(IoT)应用(如销售点设备、智能能源网
[单片机]
单片机最小系统电路和PCB设计案例
写在前面 本文以STM32F401RCT6为例,讲解单片机最小系统的设计方法,以及一些相关的原理。 上图所示即为单片机最小系统电路,我们将其分为三个部分,即电源电路、复位电路、时钟电路。在了解最小电路之前,我们先看看下面几个问题 设计最小系统电路的时候,常常在芯片的VDD和VSS之间连接一个104电容,为什么这些电容要放得离引脚足够近? VDD和AVDD有什么区别?VSS和AVSS又有什么区别? 同样是接地,为什么会有AGND和GND?为什么又会有VCC和AVCC?这些不同的电源和地在PCB设计的时候有什么注意事项? 为什么两个标上OSC的引脚上都需要接晶振?这两个引脚有什么不同吗?晶振的作用是什么? 复位电路是如何实现复位的?
[单片机]
<font color='red'>单片机</font>最小系统电路和PCB设计案例
MCS-51单片机汇编中的“指针”
111条单片机指令中让我想起高级语言中的指针的功能。 数据传送类指令中的 指针 1)MOV A,@Ri 2)MOV direct,@Ri 3)MOV @Ri,A MOV @Ri,direct MOV @Ri,#data8 4)MOVX A,@Ri MOV A,@DPTR 5)MOVX @Ri,A 6)MOVX @DPTR,A @:指向的意思。
[单片机]
51单片机实现光源的跟踪
AD采集两路电压,并比较,控制电机转动方向,并将数据传至上位机 西安理工大学--自动化与信息工程学院 邹艺良 编写(2014.08.25) 邮箱:262276047@qq.com //******************************* //西安理工大学--自动化与信息工程学院--邹艺良 //******************************* #include #include #include void ADC_init(); int get_ADC_result(char ch); unsigned int show_ADC_result_ch0(); unsigned in
[单片机]
单片机第六次作业
作业:第29题,已知R0中值为n,计算1^2+2^2+3^2+ +n^2并放入30h.(n较小不考虑求和的溢出) 1、先file new 建asm文件29.asm MOV R1,#00H LOOP:MOV A,R0 MOV B,R0 MUL AB ADD A,R1 MOV R1,A DJNZ R0,LOOP MOV 30H,R1 END 为了调试时看数据,预先在r0中赋值为3,所以程序前加: MOV R0,#3 所以程序变为: MOV R0,#3 MOV R1,#00H LOOP:MOV A,R0 MOV B,R0 MUL AB ADD A,R1 MOV R1,A DJNZ
[单片机]
爱普特32位MCU在电机控制上的应用
在物联网飞速发展的科技时代,电机作为各类设备的动力核心,其控制技术的优劣直接决定了设备的性能和效率。而爱普特 32 位 MCU 的出现,为电机控制领域带来了全新的突破和变革。 电机,这个看似普通却又至关重要的装置,如同现代社会的“隐形引擎”,默默驱动着我们生活和工业生产的方方面面。从日常的家用电器,到复杂的工业机械,电机无处不在。然而,要让电机稳定、高效、精准地运行,并非易事。这背后离不开先进的控制技术,而其中的关键之一,就是高性能的 MCU 芯片。 在电机的广泛应用中,其工作环境往往十分苛刻。各种外界因素,如温度的剧烈变化、机械振动的冲击、电流的波动以及复杂的电磁干扰等,都可能对电机的正常运行造成影响。为了应对这些挑战,
[嵌入式]
爱普特32位<font color='red'>MCU</font>在电机控制上的应用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved