您的位置 首页 硬件

MSP430:MCLK、SMCLK、ACLK默许时钟频率

一、MCLK、SMCLK、ACLK默认时钟频率1.1POR与PUCPOR指Power-OnReset,即上电复位(硬件),PUC指Power-UpClear,即上电清除(软件复位)…

一、MCLKSMCLKACLK默许时钟频率

1.1 POR与PUC

POR指Power-On Reset,即上电复位(硬件),PUC指Power-Up Clear,即上电铲除(软件复位),这是MSP430两种别离的复位信号。POR总会引起PUC,关于POR与PUC的触发条件见用户攻略,如下:

图1 POR与PUC触发条件

1.2 默许时钟频率

有两种办法(乃至更多)能够得知MCLK、SMCLK、ACLK默许的时钟频率。

(1)经过用户攻略描绘

查阅用户攻略可得到体系复位后,时钟信号MCLK、SMCLK、ACLK的时钟源分别是DCOCLK(数控震动器)、DCOCLK、LFXT1CLK(低速晶体震动器)。如下:

图2 复位后默许时钟频率

(2)经过寄存器初始值断定

用户攻略会给出每个寄存器的初始值,经过剖析初始值各位的意义,并对照数据手机,也可得到其默许频率。定位到用户攻略根本时钟模块(Basic Clock Model),其寄存器描绘如下:

结合图5剖析,可知RSELx为7(BCSCTL1低3位),DCOx为3,MODx为0,再对照图4可知体系复位后MCLK和SMCLK的频率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。再结合图3根本时钟体系操控寄存器2(BCSCTL2),可知MCLK默许时钟源是DCOCLK,SMCLK默许时钟源也是DCOCLK。BCSCTL2示意图如下:

图3 BCSCTL2示意图

1.2.1 MCLK和SMCLK时钟频率

在数据手册能够找到DCO频率表(查找关键词DCOCLK可快速找到),如下:

图4 DCO时钟频率

由上图可知,体系复位后MCLK和SMCLK的频率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。体系启动后,能够调整RSELx(根本时钟体系操控寄存器1BCSCTL1前3位)、DCOx(DCO操控器DCOCTL前5位)、MODx(DCO操控器DCOCTL后3位)的值得到适宜的频率,示意图如下[3]:

图5 DCOCTL和BCSCTL1示意图

注:图5跟用户攻略有必定收支,MSP430G2231的BCSCTL1位0~4都是RSELx,但因是中文比较直观,就没换了。

1.2.2 ACLK时钟频率

同理,能够从数据手册查得ACLK时钟源LFXT1CLK时钟频率如下:

图6 LFXT1时钟频率

由上图可知,体系复位后ACLK的频率典型值是32768Hz,即32KHz。

二、使用举例

2.1 FLASH时钟设置

FLASH擦除、写入是由时序发生器操控的,所以擦除、写入之前需求设定适宜的时钟频率(检查用户攻略可知,频率必须在257KHz~476KHz),而时钟频率由挑选哪种时钟源FSSELx及分频系数FNx决议(在FLASH操控寄存器2),FCL2示意图如下(FCL2默许值是0x9642,即只读、MCLK、3分频):

图7 FCL2示意图

假定挑选默许MCLK作为FLASH时序发生器,默许MCLK时钟频率典型值是1.1MHz,即1126.4KHz,需求3分频(375.5KHz,此刻FN1为1)或许4分频(281.6KHz,此刻FN1、FN0为1)才干契合257KHz~476KHz。经过设置FN0~FN5能够将时钟分频1~64,即32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1。(此处FNx是指第x位,与下文不同)假如挑选3分频,设置FCTL2如下:

  1. FCTL2=FWKEY+FSSEL_2+FN1; /*FN1=0x0002,此刻是3分频*/

FWKEY、FSSEL_2、FNx在io430G2231.h界说,如下:

  1. #defineFWKEY(0xA500u)/* Flash key for write */
  2. #defineFSSEL_0(0x0000u)/* Flash clock select: 0 – ACLK */
  3. #defineFSSEL_1(0x0040u)/* Flash clock select: 1 – MCLK */
  4. #defineFSSEL_2(0x0080u)/* Flash clock select: 2 – SMCLK */
  5. #defineFSSEL_3(0x00C0u)/* Flash clock select: 3 – SMCLK */
  6. /* Divide Flash clock by 1 to 64 using FN0 to FN5 according to: */
  7. /* 32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1 */
  8. enum
  9. {
  10. FN0=0x0001,
  11. FN1=0x0002,
  12. FN2=0x0004,
  13. FN3=0x0008,
  14. FN4=0x0010,
  15. FN5=0x0020,
  16. FSSEL0=0x0040,
  17. FSSEL1=0x0080
  18. };

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/274722.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部