新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > MSP430:MCLK、SMCLK、ACLK默認時鐘頻率

MSP430:MCLK、SMCLK、ACLK默認時鐘頻率

作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
一、MCLK、SMCLKACLK默認時鐘頻率

1.1 POR與PUC

本文引用地址:http://butianyuan.cn/article/201611/316722.htm

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

圖1 POR與PUC觸發(fā)條件

1.2 默認時鐘頻率

有兩種方法(甚至更多)可以得知MCLK、SMCLK、ACLK默認的時鐘頻率。

(1)通過用戶指南描述

查閱用戶指南可得到系統(tǒng)復位后,時鐘信號MCLK、SMCLK、ACLK的時鐘源分別是DCOCLK(數(shù)控震蕩器)、DCOCLK、LFXT1CLK(低速晶體震蕩器)。如下:

圖2 復位后默認時鐘頻率

(2)通過寄存器初始值判定

用戶指南會給出每個寄存器的初始值,通過分析初始值各位的含義,并對照數(shù)據(jù)手機,也可得到其默認頻率。定位到用戶指南基本時鐘模塊(Basic Clock Model),其寄存器描述如下:

結(jié)合圖5分析,可知RSELx為7(BCSCTL1低3位),DCOx為3,MODx為0,再對照圖4可知系統(tǒng)復位后MCLK和SMCLK的頻率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。再結(jié)合圖3基本時鐘系統(tǒng)控制寄存器2(BCSCTL2),可知MCLK默認時鐘源是DCOCLK,SMCLK默認時鐘源也是DCOCLK。BCSCTL2示意圖如下:

圖3 BCSCTL2示意圖

1.2.1 MCLK和SMCLK時鐘頻率

在數(shù)據(jù)手冊可以找到DCO頻率表(搜索關(guān)鍵詞DCOCLK可快速找到),如下:

圖4 DCO時鐘頻率

由上圖可知,系統(tǒng)復位后MCLK和SMCLK的頻率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。系統(tǒng)啟動后,可以調(diào)整RSELx(基本時鐘系統(tǒng)控制寄存器1BCSCTL1前3位)、DCOx(DCO控制器DCOCTL前5位)、MODx(DCO控制器DCOCTL后3位)的值得到合適的頻率,示意圖如下[3]:

圖5 DCOCTL和BCSCTL1示意圖

注:圖5跟用戶指南有一定出入,MSP430G2231的BCSCTL1位0~4都是RSELx,但因是中文比較直觀,就沒換了。

1.2.2 ACLK時鐘頻率

同理,可以從數(shù)據(jù)手冊查得ACLK時鐘源LFXT1CLK時鐘頻率如下:

圖6 LFXT1時鐘頻率

由上圖可知,系統(tǒng)復位后ACLK的頻率典型值是32768Hz,即32KHz。

二、應用舉例

2.1 FLASH時鐘設(shè)置

FLASH擦除、寫入是由時序發(fā)生器控制的,所以擦除、寫入之前需要設(shè)定合適的時鐘頻率(查看用戶指南可知,頻率必須在257KHz~476KHz),而時鐘頻率由選擇哪種時鐘源FSSELx及分頻系數(shù)FNx決定(在FLASH控制寄存器2),F(xiàn)CL2示意圖如下(FCL2默認值是0x9642,即只讀、MCLK、3分頻):

圖7 FCL2示意圖

假設(shè)選擇默認MCLK作為FLASH時序發(fā)生器,默認MCLK時鐘頻率典型值是1.1MHz,即1126.4KHz,需要3分頻(375.5KHz,此時FN1為1)或者4分頻(281.6KHz,此時FN1、FN0為1)才能符合257KHz~476KHz。通過設(shè)置FN0~FN5可以將時鐘分頻1~64,即32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1。(此處FNx是指第x位,與下文不同)如果選擇3分頻,設(shè)置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. };



評論


技術(shù)專區(qū)

關(guān)閉