历史上的今天
今天是:2025年03月01日(星期六)
2020年03月01日 | MSP430的时钟系统问题
2020-03-01 来源:eefocus
MSP430的时钟问题一直是模模糊糊,老是忘记,于是决定写下此文帮助记忆,以下内容均参考网络资料,仅供参考。(MSP430X1XX系列)
该MSP430系列单片机时钟源有3种,分别为:
1.LFXT1CLK:低频/高频时钟源, 可外接晶体振荡器,由于单片机内部集成可供选择的电容,则无需外接两个振荡电容器。较常使用的晶振为32768HZ,可选晶振范围450KHZ-8MHZ。(工作在高频模式下时,需外接振荡电容)
2.XT2CLK:高频时钟源,可外接晶体振荡器,需外接连个振荡电容器。较常使用的晶振为8MHZ,可选晶振范围450KHZ-8MHZ。
3.DCOCLK:数字可控制的RC振荡器,约800KHZ,它的频率随供电电压和温度变化而具有一定的不稳定性。MSP430可以通过操作控制寄存器软件调节来增强振荡频率的稳定性。 当LFXT1和XT2失效时,DCO振荡器会自动被选作MCLK的时钟源。振荡器失效引起的NMI中断请求可以得到响应,甚至在CPU关闭的情况下也可以。
该系列单片机提供3个时钟输出,分别为:
1.ACLK(Auxiliary clolck):辅助时钟,由LFXT1CLK信号经1、2、4、8分频后得到。ACLK可由软件选做各外围模块的时钟信号,一般用于低速外围模块。
2.MCLK(Main clock):主时钟,由软件选择来自LFXT1CLK、XT2CLK、DCOCLK,然后经过1、2、4、8分频得到。MCLK主要用于CPU和系统。
3.SMCLK(Sub-Main clock):子系统时钟,可由软件选择来自LFXT1CLK和DCOCLK(对于MXP430X11X和MSP430X12X)或者XT2CLK和DCOCLK然后经过1、2、4、8分频得到。SMCLK主要用于高速外围模块。
时钟初始化例程:
PUC信号后DCOCLK被自动选作MCLK时钟信号,根据需要MCLK的时钟源可以另外设置为LFXT1或者XT2.顺序如下:
a)复位OSCOFF
b)清除OFIFG
c)延时等待至少50us
d)再检查OFIFG,如果置位,则重复3,4步,直到OFIFG=0
void Initial_Crystal(void)
{
unsigned char i;
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
BCSCTL1 &= ~(XT2OFF + XTS);//使能XT2,LPXT1选择低频
BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0;//主时钟选择XT2,子系统时钟选择XT2
do
{
IFG1&=~OFIFG;
for(i=0xff;i>0;i--);
}
while((IFG1&OFIFG)!=0);
}
下一篇:MSP430F149时钟源选择
史海拾趣
|
TMS320F2812 DSP中while和do……while有何区别? 在基于TMS320F2812 DSP的软件开发过程中,遇到下面问题,至今未找到原因。 开发环境介绍:TI公司提供的 CCS2.21+TMS320F2812系统板+USB2.0仿真器 程序的基本思路:采用EV定时器中断,每隔10ms产生一次中断,在中断服务子程序中设定的记数寄存 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:31 编辑 8279键盘显示电路, 有没有电路图可以参考的啊! 感激啊! [ 本帖最后由 open82977352 于 2009-6-17 18:30 编辑 ] … 查看全部问答> |
|
刚下了个 protues 按照步骤破解了 可是 还是不能打开 说我 这个key是个 bad key 谁有办法么 。。。或者 给个链接 也行 我邮箱:juicy.shuai@qq.com… 查看全部问答> |
|
如何从零开始一步一步制作出颜色跟踪机器人? 要求是: 1、 制作一台简易机器人; 2、 需要有控制机器人运动的控制电路; 3、 实时采集CCD图像; 4、  ...… 查看全部问答> |
|
我知道可以通过.bib文件将快捷方式直接加进NK 然后.dat文件通过例如如下的语句,将快捷方式建立到桌面上,这样建立的快捷方式不会掉电丢失 Directory(\"\\Windows\\LOC_DESKTOP_DIR\"):-File(\"英语.lnk\",\"\\Windows\\CEnglishExp.lnk\") 不过 ...… 查看全部问答> |
|
用USB Multilink调试时出现问题 提示: “Opening USB Port 1 ...MON08 MULTILINK Interface cable detected - Flash Version 2.20 Could not measure target baudrate.” 请各位前辈指教 … 查看全部问答> |
|
我在一程序中遇到这种情况: MOV R0,#30H MOV A,@R0 程序运行正常,如果把R0换成R1,也是正常 但如果将R0换成R2~R7中任一个,编译都通不过,不知道这是什么原因… 查看全部问答> |




