283|0

6805

帖子

19

资源

纯净的硅(中级)

MSP430G2553时钟外部晶振配置说明

 关于MSP430G2553的时钟分类以及ACLK,MCLK和SMCLK的时钟源以下均不会做具体解释,在百度或者CSDN能搜到好多相关的说明文章。本文主要论证一下ACLK,MCLK和SMCLK可选作为时钟源的LFXT1CLK的频率是多少。在BAIDU以及TAOBAO中搜索不到下图电路板中的无源晶振,所以想要自己动手对其进行推导。(2553的技术文档介绍中该晶振为32kHz晶振)

         image-20200815214447-1.png         

主要思路:

    配置相关时钟寄存器,将外部晶振LFXT1CLK作为SMCLK的时钟源,SMCLK作为定时器A的时钟源,配置定时器使相应引脚输出PWM波,根据PWM波的频率,最终推导出LFXT1CLK对应的外部无源晶振的频率。

 

小试牛刀
    本步主要实现使用系统默认的时钟配置,定时器A模块以MCLK为时钟源输出PWM波,根据PWM周期反向推导MCLK的频率,根据用户手册可知,在默认时钟情况下,MCLK的时钟源是DCOCLK,且频率为1.1MHz。

 

以下为定时器A的寄存器配置:

 

void PWM_Init(void)
{
  unsigned const PWMPeriod = 800;//const 限定一个变量不允许被改变
 
  P1DIR |= BIT6;              // 设置P1.6为输出
  P1SEL |= BIT6;              // 设置P1.6为TA0.1输出
 
  CCR0 = PWMPeriod;           // 设置PWM 周期
  CCTL1 = OUTMOD_7;           // 设置PWM 输出模式为:7 - PWM复位/置位模式,
                              // 即输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
  TACTL = TASSEL_2 + MC_1;    // 设置TIMERA的时钟源为SMCLK, 计数模式为up
}
 
 
void PWM_SetDuty(unsigned int duty)
{
  CCR1 = duty;
}
unsigned int Timer_A_duty = 200;

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
 
  PWM_Init();                   //PWM初始化
  PWM_SetDuty(Timer_A_duty);    //
 
  while(1)
  {
    
  }

}
使用逻辑分析仪测量P1^6的引脚的波形如下:

image-20200815214514-2.png

可以看到,周期为0.7899ms,即定时器计数800次所用时间,则可以得到此时定时器的时钟源频率即SMCLK的频率为1/(0.7899ms/800) = 1.012MHz, 满足在1.1MHz附近波动的要求,所以使用这种方法验证外部晶振的频率是可行的。


回复
您需要登录后才可以回帖 登录 | 注册

关闭
站长推荐上一条 1/5 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表