要了解一款芯片,最直觀的就是官方給的芯片的特點(FEATURES);要用好一款芯片,就必須從數據手冊了解芯片的各個功能;要開發一款芯片,我們就不許從最基本的時鐘系統出發。本文著重介紹下MSP430F5438的時鐘系統,也是整個5系列的時鐘系統,這是我接觸的第一款430芯片,如有錯誤,歡迎指正。
統一時鐘系統( Unified Clock System (UCS) )為芯片提供不同的時鐘,下圖可以看出:5438有4個時鐘系統,分別是輔助時鐘(ACLK),主時鐘(MCLK),子系統時鐘(SMCLK),以及專用時鐘(MODCLK)。
首先看看這些時鐘的來源。
除了專用時鐘外,他們都可以來至XT1CLK,VLOCLK,REFOCLK,DCOCLK,DCOCLKDIV,XT2CLK,只需要配置對應的寄存器即可應需選擇。其中,XT1CLK來至外部的XIN和XOUT管腳通過OSC寄存器得到,通常用32768Hz晶振;VLO(Very-Low-Power Low-Frequency Oscillator)和REFO(Low-FrequencyReference Oscillator)直接由OSC寄存器產生(屬于內部時鐘);DCOCLK(Digitally-Controlled Oscillator)和DCOCLKDIV(DCO分頻得到)來至FLL(FrequencyLocked Loop)寄存器(屬于內部數字時鐘);XT2CLK來至外部的XT2IN和XT2OUT管腳。
在5438芯片PUC(Power up clear)即上電清除過后,UCS(Unified Clock System)默認配置為:
1.? XT1 工作在 LF(Low-Frequency)模式 作為ACLK(與第5條沖突,但手冊就是這么寫的,我也不懂);
2.? DCOCLKDIV 作為 MCLK;
3.? DCOCLKDIV 作為 SMCLK;
4.? FLL 工作,而且 XT1CLK 作為FLL的參考時鐘(FLLREFCLK);
5.?XTIN和XTOUT若不配置則作為通用I/O口,XT1禁止;配置后才作為XT1;
6.? XT2IN和XT2OUT作為通用I/O口,XT2禁止。
那么現在就開始配置時鐘了。我就選其中一個時鐘MCLK(主時鐘)的配置講解,其他的時鐘大同小異。
要得到MCLK就得配置上圖的寄存器(調整模塊)。需要配置的有DIVM(分頻選擇),SELM(時鐘源選擇),CPUOFF(關閉CPU,因為是主時鐘,所以關閉MLCK就相當于關閉CPU),MCLK_REQEN(MCLK conditional requests條件要求使能),MCLK_REQ(不需要配置,從手冊上看作用是:外圍模塊如果需要其正確的運作需要它自動從UCS模塊調整,而不管當前的操作模式)。
下面再講講內部時鐘源VLO和REFO以及DCO,MODOSC。
REFO是內建的參考時鐘,它很穩定,一般作為FLL的時鐘基準。MSP430F5438上的REFOCLK是32768Hz。
MODOSC是個專用時鐘(我知道可以用在AD采樣上),大概5MHz(不知道為什么手冊上沒有他的資料)。
VLO是一個內建的低頻時鐘。在5438上,它的頻率是6-14kHz。
DCO是Digitally-ControlledOscillator,數控晶振。它可以通過FLL產生頻率很高而且比較穩定的時鐘。通過配置FLL,它甚至可以產生百兆以上的時鐘信號。FLL是FrequencyLocked Loop,鎖頻環。它能通過反饋穩定DCO的輸出,下圖是它的框圖:
首先它需要一個參考,可以是XT1,XT2,REFO的其中一個,當啟用FLL之后(默認啟用),圖中的DCO,MOD可以不用設置,FLL會自行調整這兩個值。DCO輸出的頻率與以下幾個量有關:
FLLD,FLLN,FLLREFDIV,FLLREFCLK
計算公式如下:
fDCOCLK= D × (N + 1) × (fFLLREFCLK ÷ n)
fDCOCLKDIV= (N + 1) × (fFLLREFCLK ÷ n)
其中
D=1,2,4,8,16,32(對應FLLD=0,1,2,3,4,5)
N=FLLN
n=1,2,4,8,12,16(對應FLLREFDIV=0,1,2,3,4,5)
fFLLREFCLK為REFO,XT1或XT2的實際頻率。
時鐘系統差不多就這些了,看起來復雜其實挺簡單的,自己在板子上動手試試才能了解 到底哪塊還沒有理解透徹,下面貼出我自己的5438時鐘配置。
#include "msp430.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P11DIR = BIT2 + BIT1 + BIT0; // P11.2,1,0 to output direction
P11SEL = BIT2 + BIT1 + BIT0; // P11.2 to output SMCLK, P11.1
// to output MCLK and P11.0 to
// output ACLK
//ACLK = REFO = 32kHz, MCLK = SMCLK = 25MHz
UCSCTL3 |= SELREF__REFOCLK; // Set DCO FLL reference = REFO
//±?D?μ?£?·??òò??±óD′í?ó±ê??
UCSCTL4 |= SELA__REFOCLK; // Set ACLK = REFO
//éè???3??ê±?ó?aDCO?í?á3?′í,×ü?á3???′í?ó±ê??
//ò?°???ó?DCODIVê±?ó°é
__bis_SR_register(SCG0); // Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
//??ê2?′ó?£?éè???àéù??2?ó°?ì
UCSCTL1 = DCORSEL_7; // Select DCO range 25MHz operation
//?μ?êμè??£?1ù·?×êá??μ×???135M£??ò?üá?30M
UCSCTL2 = FLLD_1 +762; // Set DCO Multiplier for 25MHz
// (N + 1) * FLLRef = Fdco
// (762 + 1) * 32768 = 25MHz
// Set FLL Div = fDCOCLK/2
//2·??μ25M 3·??μ23M 4·??μ11.5M 2??aμàê2?′?é??
__bic_SR_register(SCG0); // Enable the FLL control loop
// Worst-case settling time for the DCO when the DCO range bits have been
// changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
// UG for optimization.
// 32 x 32 x 25 MHz / 32,768 Hz = 782000 = MCLK cycles for DCO to settle
__delay_cycles(782000);
// Loop until XT1,XT2 & DCO fault flag is cleared
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
while(1); // Loop in place
return 0;
}
上一篇:MSP430F5529LP+CC3000學習心得(一)
下一篇:MSP430F5529的IO口管腳的中斷學習筆記
推薦閱讀
史海拾趣
隨著電子行業的不斷發展,COILCRAFT公司意識到技術創新是保持競爭力的關鍵。于是,公司加大了對研發團隊的投入,不斷推出新產品和新技術。其中,射頻芯片電感器和功率磁性元件的推出,極大地滿足了通信設備、網絡設備等領域對高性能磁性元件的需求。此外,COILCRAFT還具備定制磁性元件的能力,能夠根據客戶的精確要求進行定制生產,這一服務贏得了眾多客戶的青睞。
在供應鏈管理方面,Bomar Interconnect公司也進行了一系列優化措施。公司與供應商建立了長期穩定的合作關系,確保原材料的穩定供應和質量可控。同時,公司還加強了對供應鏈的監控和管理,通過信息化手段提高了供應鏈的透明度和效率。這些努力不僅降低了公司的采購成本,也提高了供應鏈的響應速度和靈活性。
在成都啟臣微電子股份有限公司成立之初,公司就致力于集成電路及系統產品的設計、生產與銷售。面對激烈的市場競爭,啟臣微堅持創新,投入大量研發資源,終于在高性能功率管理集成電路領域取得了重大技術突破。這一突破不僅提升了公司的市場競爭力,也為公司贏得了業界的廣泛認可。
隨著公司業務的不斷發展,啟臣微開始積極拓展海外市場。公司在西安設立研發中心,在深圳和昆山設立銷售中心,并與多家國際知名企業建立了合作關系。這些舉措不僅提升了公司的國際影響力,也為公司帶來了更多的發展機遇。
為了進一步提升競爭力,Deutron Electronics Corp積極尋求國際合作與并購機會。公司與多家國際知名電子企業建立了戰略合作關系,共同研發新產品和技術。同時,公司還成功收購了幾家具有核心技術的電子企業,增強了自身的研發和生產能力。這些合作與并購為Deutron Electronics Corp帶來了更多的發展機遇和市場空間。
DEC始終致力于技術創新和產品研發。在20世紀70年代和80年代,DEC推出了一系列具有劃時代意義的計算機產品,如PDP系列計算機和VAX系列計算機。這些產品在技術上處于領先地位,受到了市場和客戶的廣泛認可。此外,DEC還通過國際擴張策略,將其業務拓展到了全球范圍內,進一步鞏固了其市場地位。
1、簡單描述一個單片機系統的主要組成模塊,并說明各模塊之間的數據流流向和控制流流向。簡述單片機應用系統的設計原則。(仕蘭微面試題目) 2、畫出8031與2716(2K*8ROM)的連線圖,要求采用三-八譯碼器,8031的P2.5,P2.4和P2.3參加譯碼,基本地 ...… 查看全部問答∨ |
急: 咨詢LM3S8962通過I2C模塊訪問DAC8571, 位啥不成功? 本帖最后由 dontium 于 2015-1-23 13:42 編輯 先介紹DAC8571 資料; 數字轉模擬的DAC, 工作電壓3.3V, 目前參考電壓輸入為1V , 電路圖如下連接: SDA, SCL 都上拉了,上拉電阻10K; DAC8571 訪問關鍵資料圖如下: LM3S8962 配 ...… 查看全部問答∨ |
這幾天想學usb,就看了些usb協議方面的東西,pdiusbd12芯片,現在也基本能看懂網上的一些程序,但是有幾個問題還是搞不大懂,望各位在座高手指點一二,謝謝~~ 1.D12到底何時產生中斷 就是什么時候int_n會產生低電平呢? 2.Setup包 ...… 查看全部問答∨ |
做醫療設備的嵌入式開發到底需要一個什么樣的編程情況?還有就是自己要一個什么樣的編程環境? 我以前是做VC的數據庫與網絡開發的,所以想急切了解一下這方面的情況?明天就要去上班了,有點不知所措了,請高手指教! 請你們給我介紹一下做醫療設備的嵌 ...… 查看全部問答∨ |
在一個源文件中定義了一個普通的全局變量,該變量在同一個PROJECT的多個源文件中被調用. 可以通過按鍵改變這個全局變量InputSelection的值,從而選擇不同的輸入源. 前期調試中切換正常.但是現在發現一個奇怪的問題,該變量的值總是莫名其妙隨機的 ...… 查看全部問答∨ |
我的程序大概如下 void main() { .... //初始化 ..... } 在我的主函數里我調用一個函數,這個函數產生變量m=1 現在我想進入中斷定時 #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A0(void) { &n ...… 查看全部問答∨ |
最近在學習NTP網絡較時編程中,遇到了一個問題,這是一個容易被我們忽視的問題,也是一個很重要的問題。 對NTP網絡校時編程有一定了解的同學,一定知道NTP包,它的結構如下圖: 在編程中,對上圖的描述就是用一個結構體: typedef stru ...… 查看全部問答∨ |
|
大蝦們,偶在做一個溫濕度傳感器,用的DHT21傳感器,但是有一段程序困擾我好久了,... 函數名稱 : 讀溫濕度字節函數 功 能 : 讀取溫濕度每個字節 說 明 : 無 *********************************************************/ void COM(void)//讀字節 { U8 i; & ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- Microchip直播:單片機編程不再難, 利用MPLAB®代碼配置器(MCC)實現快速開發
- 【EEWORLD第二十三屆】2011年02月社區明星人物揭曉!
- 走近 AI 重磅新品 STM32N6,解鎖在 MCU 部署高性能、節能型邊緣 AI!答題有好禮~還有開發板等你拿!
- 有獎直播:Microchip適用于CryptoAuthentication™系列的可信任平臺
- 直播已結束--STM32全球線上峰會 | 新品STM32N6重磅發布,50+開發板等你抽!
- 【已結束】 電感應用知識分享|MPS 有獎直播
- TI有獎直播:伺服驅動器中電流和電壓測量解決方案
- 學AM335X課程,贏超值BB-Black團購資格,更有DIY大獎賽預熱中!
- 有獎評測:平頭哥RISC-V低功耗板——RVB2601