历史上的今天
今天是:2025年02月17日(星期一)
2020年02月17日 | MSP430G2553时钟外部晶振配置说明
2020-02-17 来源:eefocus
摘要:关于MSP430G2553的时钟分类以及ACLK,MCLK和SMCLK的时钟源以下均不会做具体解释,在百度或者CSDN能搜到好多相关的说明文章。本文主要论证一下ACLK,MCLK和SMCLK可选作为时钟源的LFXT1CLK的频率是多少。在BAIDU以及TAOBAO中搜索不到下图电路板中的无源晶振,所以想要自己动手对其进行推导。(2553的技术文档介绍中该晶振为32kHz晶振)

主要思路:
配置相关时钟寄存器,将外部晶振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的引脚的波形如下:

可以看到,周期为0.7899ms,即定时器计数800次所用时间,则可以得到此时定时器的时钟源频率即SMCLK的频率为1/(0.7899ms/800) = 1.012MHz, 满足在1.1MHz附近波动的要求,所以使用这种方法验证外部晶振的频率是可行的。
史海拾趣
|
欲运行pword 运行windows下一个文件 不成功 显示到了all folders 文件夹下 求各位大大赐教!!!!! 程序是这样写的 SHELLEXECUTEINFO si; si.cbSize=sizeof(si); si.fMask=SEE_MASK_NOCLOSEPROCESS; &n ...… 查看全部问答> |
|
从安全角度考虑, 我们常希望保证我们设计的私有性.一个有效的方法就是利用Quartus@II Exported Partition file(.qxp)创建用于综合或布局布线网表文件(不包括源代码).这种增量编译的特点需要一个完整Quartus@II 许可的支持( ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 04:07 编辑 2012年大学生电子设计竞赛黑龙江赛区TI杯竞赛题B题:炮台打靶(本科)一、任务 设计并制作1个简易的炮台和电子靶,并在炮台上安装电动机驱动装置,可使炮塔在水平方向左右转动;在炮塔上安装电动机, ...… 查看全部问答> |




