• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 【E課堂】MSP430:MCLK、SMCLK、ACLK默認時鐘頻率

    【E課堂】MSP430:MCLK、SMCLK、ACLK默認時鐘頻率

    作者: 時間:2016-08-10 來源:網絡 收藏

      一、、S、ACLK默認時鐘頻率

    本文引用地址:http://www.czjhyjcfj.com/article/201608/295297.htm

      1.1 POR與PUC

      POR指Power-On Reset,即上電復位(硬件),PUC指Power-Up Clear,即上電清除(軟件復位),這是兩種分離的復位信號。POR總會引起PUC,關于POR與PUC的觸發條件見用戶指南,如下:

      

     

      圖1 POR與PUC觸發條件

      1.2 默認時鐘頻率

      有兩種方法(甚至更多)可以得知、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跟用戶指南有一定出入,G2231的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如下:

      FCTL2 = FWKEY + FSSEL_2 + FN1; /*FN1=0x0002,此時是3分頻*/

      FWKEY、FSSEL_2、FNx在io430G2231.h定義,如下:

      #define FWKEY (0xA500u) /* Flash key for write */

      #define FSSEL_0 (0x0000u) /* Flash clock select: 0 - ACLK */

      #define FSSEL_1 (0x0040u) /* Flash clock select: 1 - MCLK */

      #define FSSEL_2 (0x0080u) /* Flash clock select: 2 - SMCLK */

      #define FSSEL_3 (0x00C0u) /* Flash clock select: 3 - SMCLK */

      /* Divide Flash clock by 1 to 64 using FN0 to FN5 according to: */

      /* 32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1 */

      enum

      {

      FN0 = 0x0001,

      FN1 = 0x0002,

      FN2 = 0x0004,

      FN3 = 0x0008,

      FN4 = 0x0010,

      FN5 = 0x0020,

      FSSEL0 = 0x0040,

      FSSEL1 = 0x0080

      };



    關鍵詞: MSP430 MCLK

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 武平县| 兴城市| 桃江县| 梧州市| 彝良县| 营山县| 宁河县| 台中市| 调兵山市| 广东省| 新丰县| 汶川县| 政和县| 延庆县| 嘉祥县| 温州市| 旬邑县| 孙吴县| 宁远县| 温州市| 洛浦县| 尉氏县| 洛阳市| 卫辉市| 韩城市| 太白县| 荆门市| 嘉荫县| 阳高县| 思茅市| 清徐县| 汽车| 洛扎县| 米泉市| 浦城县| 东平县| 老河口市| 安新县| 刚察县| 贵南县| 普格县|