历史上的今天
今天是:2025年01月18日(星期六)
2020年01月18日 | MSP430--时钟模块
2020-01-18 来源:eefocus
1.时钟:用低频晶体和含有倍频器的振荡器可以满足时钟系统速度与低功耗这两个要求。
2.基础时钟模块有三个时钟输入源:
LTXTICLK,低频时钟源(32768HZ)
XT2CLK,高频时钟源
DCOCLK,数字控制RC振荡器
这些模块可提供三种时钟信号:
ACLK辅助系统时钟:由LFXTICLK经分频得到的。一般用于低速外设,可以用软件选择各个外围模块的时钟信号。
MCLK系统主时钟:主要用于CPU和系统。可由上述三种任意来源提供。
SMCLK子系统时钟:可选择LTXICLK+DCOCLK,或者XT2CLK+DCOCLK,主要用于高速外围模块。
3.低频晶体振荡器默认工作在低频模式,即32768HZ。也可以外接高频晶体450kHZ-8MHZ。
高频晶体振荡器的限定了外接450kHZ-8MHZ的晶振。
DCO振荡器:当振荡器失效时,DCO自动被选作MCLK的时钟源。

BCSCTL2:

SELM.0,SELM.1:选择MCLK时钟源。0为DCOCLK(默认)。1为DCOCLK. 2为XT2CLK. 3为LFXTICLK.
DIVM.0,DIVM.1:选择MCLK分频(1,2,4,8)。
SELS:选择SMCLK时钟源。 0(DCOCLK),1(XT2CLK).
DIVS.0,DIVS.1:选择SMCLK分频(1,2,4,8).
DCOR:选择DCO电阻,0为内部电阻,1为外部电阻。
BCSCTL1:

XT2OFF:XT2振荡器的开启和关闭。0为开启,1为关闭。默认关闭。
XTS:控制LFXT1的工作模式,0为低频模式,1为高频模式,这需要结合实际晶体连接情况。
DIVA0,DIVA1,:控制ACLK分频。ACLK只来自于LFXT1所以不用选择只控制分频即可用。
XT5V:0.
RSEL.0,RESL.1,RESL.2(0-7)控制内部电阻以决定标称DCO频率。
RSEL是用来选择电阻的大小,从而控制流过DCO的电流,从而控制频率。
DCOCTL:

DCO0-DCO2跟RSEL共同控制DCO的频率。DCO的每一STEP增加了10%。

4.IE1,IFG1
寄存器IE1中的OFIE如果为1表示:允许晶振错误中断。
寄存器IFG1中的OFIFG如果是0表示外部晶振均起震。
5.默认MCLK是主系统时钟。切换流程如下:
WDTCTL = WDTPW+WDTHOLD;
P5DIR |= BIT4;
P5SEL |= BIT4;//P5.4输出MCLK
BCSCTL1 &= ~XT2OFF;//使用外部高频晶振
do{
IFG1 &= ~OFIFG;
for (i=0XFF;i>0;i--);
}while((IFG1 & OFIFG)); //清除OFIFG FLAG,测试OFIFG是否真的被清除,即外部晶振是否起震。
BSCTL2 |= SELM_2;
for(;;);
}
上一篇:MSP430_定时器输出PWM
下一篇:MSP430捕获器简单实用
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 每周一轮的京城彩电价格战打到上周末打出一个拐点:40英寸液晶跌破1万元大关,首次低于42英寸等离子价格线。失去价格优势的等离子阵营正面对液晶阵营的步步逼宫,“生存还是毁灭?”这已是等离 ...… 查看全部问答> |
|
lpc11xx就不用说,咱论坛也做过类似的讲座:https://bbs.eeworld.com.cn/thread-91994-1-1.html 且说说EFM32: 一个运行电流为50nA的32kHz实时计数器,一个运行电流为100nA的、可达9600bps的通用异步收发传输器。感觉超NB 很希望可以用用,大家 ...… 查看全部问答> |
|
关于wince5 串口中断服务函数SerialDispatchThread的疑问 在SerialDispatchThread函数中有下面语句,请问: /* Wait for the event that any serial port action creates. */ while ( !pSerialHead->KillRxThread ) { DEB ...… 查看全部问答> |
|
用wince下的串口驱动移植的。 写完测试的时候都是在16字节以内进行的,收发正常。现在PC端每次发送超过16字节的数据,我的WINCE设备这边只能收到16字节,每次发送超过16字节的就丢失了。 芯片用得是16554. 这个可能是什么原因啊? 很奇怪我把FIFO ...… 查看全部问答> |
|
UART1串口只能接收16个字节的数据,超过16个字节的数据全部丢失 void uart1IsrInit(void) { INT16U usFdiv; U1LCR = 0x87; & ...… 查看全部问答> |




