娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年10月10日(星期四)

正在發生

2019年10月10日 | MSP430(F5529)學習筆記——UCS配置詳解

發布者:雅逸之風 來源: eefocus關鍵字:MSP430(F5529)  UCS  配置 手機看文章 掃描二維碼
隨時隨地手機看文章

MSP430(F5529)相比MSP430(F149)來講,功能更加強大。


UCS簡介

MSP430F5XX/MSP430F6XX系列器件的UCS包含有五種時鐘源,依次是:XT1CLK、VLOCLK、REFOCLK、DCOCLK和XT2CLK。這五種時鐘的詳細介紹請參考該系列芯片的指導手冊,其中XT1CLK、VLOCLK、REFOCLK和XT2CLK跟MSP430F1XX系列沒有太大區別,學習配置起來也比較簡單。


UCS上電默認狀態


PUC后,UCS模塊的默認狀態如下:


(1)XT1處于LF模式作為XT1CLK時鐘源。ACLK選通為XT1CLK。

(2)MCLK選通為DCOCLKDIV

(3)SMCLK選通為DCOCLKDIV

(4)FLL使能,且將XT1CLK作為FLL參考時鐘。

(5)XIN和XOUT腳設置為通用IO,XIN和XOUT配置為XT1功能前,XT1保持禁用。

(6)如果可用的話,XT2IN和XT2OUT被設置為通用IO且保持禁止狀態。


清楚UCS上電默認狀態是非常重要的,這對于理解后面的配置邏輯來說非常重要。


UCS時鐘源切換


由于REFOCLK、VLOCLK、DCOCLK(這里暫時這么認為)默認狀態下是可用的,所以,切換的時候只需要通過UCSCTL4來配置ACLK、SMCLK和MCLK的時鐘源即可,而XT1CLK和XT2CLK需要根據硬件的具體配置情況確定,所以,這兩者的配置比起前三者來講,就有些不同了。下面,我們做三個實驗:


(1)將MCLK和SMCLK配置REFOCLK、VLOCLK

REFOCLK和VLOCLK是芯片默認提供的,只要芯片正常工作,這兩個時鐘就會正常工作,因此,該時鐘配置非常簡單,只需要修改UCSCTL4,將SELS和SELM配置為對應的選項VLOCLK或者REFOCLK即可,具體代碼如下:

#include

 

 

void main(void) {

  WDTCTL = WDTPW+WDTHOLD;

  

  P1SEL |= BIT0;

  P1DIR |= BIT0;//測量ACLK用

  P2SEL |= BIT2;

  P2DIR |= BIT2;//測量SMCLK用

  P7SEL |= BIT7;

  P7DIR |= BIT7;//測量MCLK用

 

 

  //UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_1|SELM_1; //將SMCLK和MCLK配置為VLOCLK

  UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_2|SELM_2; //將SMCLK和MCLK配置為REFOCLK

 

 

  while(1);

}


上面的代碼就實現了將SMCLK和MCLK切換為VLOCLK和REFOCLK,ACLK的操作也是同樣的,不作過多解釋。

(2)將MCLK和SMCLK配置XT1CLK

我手頭上的開發板XT1外接的是32.768K的手表時鐘晶振,XT1CLK的配置要分為以下幾步:


1.配置IO口5.4和5.5為XT1功能。

2.配置XCAP為XCAP_3,即12PF的電容

3.清除XT1OFF標志位。

4.等待XT1起振。


具體的代碼如下:

#include

 

void main(void) {

  WDTCTL = WDTPW+WDTHOLD;

  

  P1SEL |= BIT0;

  P1DIR |= BIT0;//測量ACLK用

  P2SEL |= BIT2;

  P2DIR |= BIT2;//測量SMCLK用

  P7SEL |= BIT7;

  P7DIR |= BIT7;//測量MCLK用

 

  P5SEL |= BIT4|BIT5; //將IO配置為XT1功能

  UCSCTL6 |= XCAP_3;  //配置電容為12pF

  UCSCTL6 &= ~XT1OFF; //使能XT1

 

  while (SFRIFG1 & OFIFG){

    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);         // 清除三類時鐘標志位

                              // 這里需要清除三種標志位,因為任何一種

                              // 標志位都會將OFIFG置位

    SFRIFG1 &= ~OFIFG;                                  // 清除時鐘錯誤標志位

  }

  UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_0|SELM_0;     //將SMCLK和MCLK時鐘源配置為XT1

  while(1);

}


(3)將SMCLK和MCLK配置XT2

將SMCLK和MCLK配置為XT2跟配置為XT1的過程基本相同,唯一不同的是,在配置SMCLK和MCLK為XT2之前,需要將ACLK和REFCLK的時鐘源,因為ACLK和REFCLK的默認時鐘源是XT1,而我們這里并沒有配置啟動XT1CLK,所以會產生XT1時鐘錯誤,即XT1LFFG,因此,我們先將ACLK和REFCLK配置為芯片自帶的時鐘(REFOCLK或VLOCLK)或者即將啟動的時鐘(XT2),此外,XT2配置時不需要配置電容,故將SMCLK和MCLK配置為XT2的代碼如下:

#include

 

void main(void) {

  WDTCTL = WDTPW+WDTHOLD;

  

  P1SEL |= BIT0;

  P1DIR |= BIT0;//測量ACLK用

  P2SEL |= BIT2;

  P2DIR |= BIT2;//測量SMCLK用

  P7SEL |= BIT7;

  P7DIR |= BIT7;//測量MCLK用

 

  P5SEL |= BIT2|BIT3; //將IO配置為XT2功能

  UCSCTL6 &= ~XT2OFF; //使能XT2

 

  UCSCTL4 = UCSCTL4&(~(SELA_7))|SELA_1; //先將ACLK配置為VLOCLK

  UCSCTL3 |= SELREF_2;                  //將REFCLK配置為REFCLK

 

  while (SFRIFG1 & OFIFG){

    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);         // 清除三類時鐘標志位

                              // 這里需要清除三種標志位,因為任何一種

                              // 標志位都會將OFIFG置位

    SFRIFG1 &= ~OFIFG;                                  // 清除時鐘錯誤標志位

  }

  UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_5|SELM_5;     //將SMCLK和MCLK時鐘源配置為XT2

  while(1);

}

做完前面三個實驗,我們就能掌握MSP430F5XX系列時鐘切換的基本操作了,講的并不詳細,有其他疑問請仔細閱讀芯片手冊或者留言討論。


DCO模塊詳解

DCO模塊在MSP430F5XX系列芯片中非常重要,因為從MSP430F4XX開始,MSP430引用了FLL模塊,FLL即鎖相環,可以通過倍頻的方式提高系統時鐘頻率,進而提高系統的運行速度。

DCO模塊運行需要參考時鐘REFCLK,REFCLK可以來自REFOCLK、XT1CLK和XT2CLK,通過UCSCTL3的SELREF選擇,默認使用的XT1CLK,但如果XT1CLK不可用則使用REFOCLK。

DCO模塊有兩個輸出時鐘信號,級DCOCLK和DCOCLKDIV,其中,倍頻計算公式如下:

DCOCLK = D*(N+1)*(REFCLK/n)

DCOCLKDIV = (N+1)*(REFCLK/n)


其中:

n即REFCLK輸入時鐘分頻,可以通過UCSCTL3中的FLLCLKDIV設定,默認為0,也就是不分頻;

D可以通過UCSCTL2中的FLLD來設定,默認為1,也就是2分頻;

N可以通過UCSCTL2中的FLLN來設定,默認值為32。

所以,系統上電后如果不做任何設置,DCOCLK的實際值為2097152,DCOCLKDIV的實際值為1048576。

另外,配置芯片工作頻率還需要配置DCORSEL和DCOx,DCORSEL和DCOx的具體作用如下:

DCORSEL位于UCSCTL1控制寄存器中的4到6位,共3位,將DCO分為8個頻率段。

DCOx位于UCSCTL0中的8到12位,共5位,將DCORSEL選擇的頻率段分為32個頻率階,每階比前一階高出約8%,該寄存器系統可以自動調整,通常配置為0。

DCORSEL和DCOx值的具體作用可以參考MSP430F5529的數據手冊,閱讀該手冊相關部分可以找到如下表格:

可以見,DCORESL的頻率調節范圍大致如下:


DCORSEL = 0的調節范圍約為0.20~0.70MHZ;

DCORSEL= 1的調節范圍約為0.36~1.47MHZ;

DCORSEL = 2的調節范圍約為0.75~3.17MHZ;

DCORSEL = 3的調節范圍約為1.51~6.07MHZ;

DCORSEL = 4的調節范圍約為3.2~12.3MHZ;

DCORSEL = 5的調節范圍約為6.0~23.7MHZ;

DCORSEL = 6的調節范圍約為10.7~39.7MHZ;

DCORSEL = 7的調節范圍約為19.6~60MHZ。


理解了上面這些,可以理解TI官方例子中的代碼了,官方代碼中的相關部分如下:

if (fsystem <= 630)            //           fsystem < 0.63MHz

  UCSCTL1 = DCORSEL_0;

else if (fsystem <  1250)      // 0.63MHz < fsystem < 1.25MHz

  UCSCTL1 = DCORSEL_1;

else if (fsystem <  2500)      // 1.25MHz < fsystem <  2.5MHz

  UCSCTL1 = DCORSEL_2;

else if (fsystem <  5000)      // 2.5MHz  < fsystem <    5MHz

  UCSCTL1 = DCORSEL_3;

else if (fsystem <  10000)     // 5MHz    < fsystem <   10MHz

  UCSCTL1 = DCORSEL_4;

else if (fsystem <  20000)     // 10MHz   < fsystem <   20MHz

  UCSCTL1 = DCORSEL_5;

else if (fsystem <  40000)     // 20MHz   < fsystem <   40MHz

  UCSCTL1 = DCORSEL_6;

else

  UCSCTL1 = DCORSEL_7;


都在前面講到的范圍內,由于前面的范圍有重疊部分,例子代碼中的值是TI的工程師根據上面這些參數選取的比較合理的值。

到這里,我相信大家配合芯片手冊和本文,都能明白DCO配置相關部分的原理了,下面是將DCO參考時鐘選為XT1,并將DCOCLK倍頻到25M的詳細代碼:

#include

 

void delay(){

  volatile unsigned int i;

  for(i = 0; i != 5000; ++i){

    _NOP();

  }

}

 

void SetVcoreUp (unsigned int level)

{

  // Open PMM registers for write

  PMMCTL0_H = PMMPW_H;

  // Set SVS/SVM high side new level

  SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;

  // Set SVM low side to new level

  SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;

  // Wait till SVM is settled

  while ((PMMIFG & SVSMLDLYIFG) == 0);

  // Clear already set flags

  PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);

  // Set VCore to new level

  PMMCTL0_L = PMMCOREV0 * level;

  // Wait till new level reached

  if ((PMMIFG & SVMLIFG))

    while ((PMMIFG & SVMLVLRIFG) == 0);

  // Set SVS/SVM low side to new level

  SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;

  // Lock PMM registers for write access

  PMMCTL0_H = 0x00;

}

 

void main(void) {

  WDTCTL = WDTPW+WDTHOLD;

  P1SEL &= ~BIT1;

  P1DIR |= BIT1;

  

  P1SEL |= BIT0; //ACLK

  P1DIR |= BIT0;

  P2SEL |= BIT2; //SMCLK

  P2DIR |= BIT2;

  P7SEL |= BIT7; //MCLK

  P7DIR |= BIT7;

 

  P5SEL |= BIT4|BIT5;

  UCSCTL6 |= XCAP_3;

  UCSCTL6 &= ~XT1OFF;

 

  SetVcoreUp(1); //一次提高Vcore電壓等級,具體請參考手冊

  SetVcoreUp(2);

  SetVcoreUp(3);

 

  __bis_SR_register(SCG0);

  UCSCTL0 = 0;

  UCSCTL1 = DCORSEL_6;

  UCSCTL2 = FLLD_1 | 380;

  __bic_SR_register(SCG0);

  __delay_cycles(782000);

 

  /*

   * 默認狀態下:ACLK=FLLREFCLK=XT1 SMCLK=MCLK=DCOCLKDIV XT2關閉

   * 為了不產生XT1LFOFFG,將ACLK和FLLREFCLK設置為REFOCLK

   * 并打開XT2OFF,否則XT2將處于無法使用狀態

   * */

  //UCSCTL6 &= ~(XT2DRIVE0|XT2DRIVE1|XT2OFF);

 

  while (SFRIFG1 & OFIFG) {                               // Check OFIFG fault flag

    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);         // Clear OSC flaut Flags

    SFRIFG1 &= ~OFIFG;                                  // Clear OFIFG fault flag

  }

 

  UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_3|SELM_3;

 

  while(1){

    P1OUT ^= BIT1;

    delay();

  }

}


好了,經過上面的四個實驗,我們都能正確使用MSP430F5XX的UCS了,如果有什么疑問,歡迎留言討論。


關鍵字:MSP430(F5529)  UCS  配置 引用地址:MSP430(F5529)學習筆記——UCS配置詳解

上一篇:MSP430學習筆記2-ADC12
下一篇:MSP430F6638單片機復習筆記

推薦閱讀

去年中秋夜,在中國人還在歡度中秋的時候,谷歌一口氣發布七款硬件,2款Pixel手機、2款智能音箱、一款筆記本電腦、一款翻譯耳機、一款智能相機,來展示谷歌在人工智能時代AI+軟件+硬件三維一體的思考!也展示了谷歌對智能硬件的狂熱!?頗為尷尬的是,今年谷歌新品發布會還未舉辦,各種爆料瘋起,甚至有一家香港數碼店趕在了發布會前賣起了Pixel 3 XL。...
中汽協統計數據顯示,2018年全年中國純電動汽車產銷分別完成98.6萬輛和98.4萬輛,比上年同期分別增長47.9%和50.8%。截止至2019年8月中國純電動汽車生產完成7.4萬輛,比上年同期增長2.2%;銷售完成6.9萬輛,比上年同期下降6.0%。 累計方面,2019年1-8月中國純電動汽車產銷分別完成64.3萬輛和62.9萬輛,比上年同期分別增長41.4%和40.8%。目前的中國新能源汽車...
WiFi 6的新標準發布之后,相關產品也開始陸續上市,但早期Wi-Fi 6路由器動輒上千元的價位,讓很多想換新的用戶遇到了價格上的阻力。華為推出了評價的WiFi 6路由器AX3 Pro,憑借超高的性價比廣受歡迎。那么平價的華為路由器AX3 Pro的內部做工如何呢?我們一起通過拆解來看看。華為路由器AX3 Pro配置一覽:SoC:海思凌霄4核1.4GHz處理器 28納米工藝存...
6月22日,華為在瑞典行政法庭(F?rvaltningsr?tten)控訴瑞典國家郵政和電信局(PTS)一案敗訴。最近從瑞典方面傳來最新消息,華為并未放棄,繼續上訴到了瑞典上訴法院(kammarr?tten)。據瑞典當地媒體10月2日報道,華為律師Henrik Bengtsson表示行政法院的判決在幾個方面存在重大錯誤。最引人注目的是,法院在沒有進一步分析的情況下,接受了瑞典國...

史海拾趣

問答坊 | AI 解惑

一種帶輔助變壓器的Flyback變換器ZVS軟開關實現方案

摘要:提出了一種新穎的 FLYBACK 變換器ZVS軟開關實現方案。 一個較小的輔助變壓器與主 變壓器串聯,通過使輔助變壓器原邊激磁電感電流雙向來達到主開關管的ZVS軟開關條件。該方 案實現了主輔開關管的 ZVS軟開關,限制了輸出整流二極管關斷時的 d ...…

查看全部問答∨

單片機小工具

分享一個AVR代碼生成器小軟件 …

查看全部問答∨

LED芯片制造設備現狀及其工藝介紹

replyreload += \',\' + 770973;Timson,如果您要查看本帖隱藏內容請回復…

查看全部問答∨

求助,誰有STM32GC102CB的資料

                                 誰有STM32GC102CB的資料,我想看看這款芯片的資料,那位有,感激不盡啊。…

查看全部問答∨

幫忙看一下代碼

//                   /|\\  /|\\//               MSP430F261x/241x 10k  10k     //             &n ...…

查看全部問答∨

DSPF2812程序變量在CCS3.3遇到圖形顯示問題

各位我最近研究DSPF2812,看到DSP可以顯示變量或其它的圖形變化情況,自己便試了下,發現沒有得到預期效果。 自己的程序很簡單(圖1),就是在主函數的無限循環中反復改變變量i,期望看到i變化的圖形。可是當自己運行完程序后(軟仿真),下載程序 ...…

查看全部問答∨

哪位大俠知道啥芯片可以替代TPIC6C595N?

我們廠里給客人打樣,用到TI的TPIC6C595N,DIP16腳的。這款芯片國內很難買,官網上買差不多8塊錢,從國外發來。每片板子上要5個6C595N,所以相當貴。哪位DX知道,市面上常見的芯片中,有哪款可以替代這個6C595N?有知道的DX麻煩告訴一聲,謝謝啦!& ...…

查看全部問答∨

關于RTL8019AS發送數據包時寄存器設置問題

想問一下,用rtl8019as發送數據包時,怎么設置RBCR,TBCR寄存器的值?即怎么判斷發送的數據包的大小?…

查看全部問答∨

UAF42通用有源濾波器軟件

請問有沒有大神會用UAF42的軟件設計濾波電路…

查看全部問答∨

看了“新完美3D PCB,有3D PCB庫下載 Buffalo”,忍不住發幾個EAGLE3D的圖

EAGLE不是什么高端PCB軟件,甚至連某些中端的都比不上。不過呢,軟件夠用即可,方便最好。 EAGLE3D 是用POV-RAY渲染的2D圖。嗯,可以說是3D建模,2D渲染。以俺見過的PCB 3D效果圖來看,EAGLE3D是最漂亮的。 這里有更多的3D圖:http:/ ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 滨海县| 吴忠市| 余江县| 乌兰县| 公主岭市| 大荔县| 南丰县| 蒙山县| 东宁县| 萍乡市| 三门峡市| 永平县| 陵川县| 锡林郭勒盟| 阿鲁科尔沁旗| 博白县| 万源市| 横山县| 城固县| 疏勒县| 古浪县| 尖扎县| 昂仁县| 嵩明县| 芒康县| 叙永县| 黄梅县| 于都县| 馆陶县| 哈巴河县| 赫章县| 无棣县| 霞浦县| 务川| 清涧县| 郧西县| 永定县| 赞皇县| 商洛市| 广饶县| 桃园县|