www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]本文主要介紹TI微控制器設(shè)計(jì)中的實(shí)踐經(jīng)驗(yàn)和應(yīng)用技巧。第一部分講述基于中斷的標(biāo)準(zhǔn)程序流程模式,適用于大多數(shù)的產(chǎn)品應(yīng)用編程;另外一部分講述MSP430微控制器編程人員在開發(fā)產(chǎn)

本文主要介紹TI微控制器設(shè)計(jì)中的實(shí)踐經(jīng)驗(yàn)和應(yīng)用技巧。

第一部分講述基于中斷的標(biāo)準(zhǔn)程序流程模式,適用于大多數(shù)的產(chǎn)品應(yīng)用編程;另外一部分講述MSP430微控制器編程人員在開發(fā)產(chǎn)品時(shí)需要注意的一些關(guān)鍵問題、重要方法與注意事項(xiàng),如:程序初始化流程,晶振初始化時(shí)的注意事項(xiàng)等,利用這些方法可以極大程度地減少產(chǎn)品的開發(fā)周期和提高產(chǎn)品的穩(wěn)定性。

1.MSP430微控制器標(biāo)準(zhǔn)軟件設(shè)計(jì)流程MSP430微控制器軟件設(shè)計(jì)的標(biāo)準(zhǔn)流程均可參考圖1。該標(biāo)準(zhǔn)的軟件流程可將系統(tǒng)整體功耗降至最低。

 

 

圖1

圖1所描述的軟件流程代碼是基于中斷程序的,平時(shí)MCU處于睡眠狀態(tài),直到有中斷產(chǎn)生時(shí)MCU被喚醒,最大程度降低系統(tǒng)功耗,優(yōu)化電源效率。

理解圖1所示的中斷服務(wù)子程序(1SRs)流程,能更好的掌握MSP430微控制器處理低功耗的模式。MSP430微控制器的低功耗模式由狀態(tài)寄存器SR的控制位控制,在執(zhí)行中斷服務(wù)子程序之前,狀態(tài)寄存器SR的低功耗模式控制位可以被優(yōu)先壓棧。當(dāng)中斷服務(wù)子程序返回時(shí),主程序調(diào)用中斷之前的低功耗模式控制位,從而進(jìn)入中斷之前的低功耗模式狀態(tài)。當(dāng)然,如果我們在ISR中斷服務(wù)子程序返回前修改了保存在SR中的低功耗模式控制位,那么ISR中斷子程序執(zhí)行完之后,主程序流程可以轉(zhuǎn)到另一個(gè)不同的低功耗工作模式。

中斷喚醒機(jī)制作為MSP430微控制器內(nèi)部低功耗模式的一部分,允許系統(tǒng)快速喚醒,響應(yīng)中斷事件。例如,當(dāng)一中斷事件發(fā)生之前MSP430微控制器處于低功耗LPM0模式,MCU在執(zhí)行中斷服務(wù)子程序之前首先向堆棧保存SR中的低功耗模式控制位值然后清除SR值,清除SR值使MCU從LPMO模式進(jìn)入到執(zhí)行中斷活動(dòng)模式狀態(tài)。在ISR中斷服務(wù)子程序中,軟件設(shè)計(jì)者可以寫一條語句清除SR中的低功耗模式控制位,當(dāng)中斷程序完成后,MCU從堆棧中重新裝載調(diào)用各自寄存器的狀態(tài)值。如果沒有修改SR的低功耗模式控制位,退出中斷后系統(tǒng)仍然返回進(jìn)入LPM0低功耗模式,若此時(shí)已修改SR控制位,當(dāng)從ISR中斷程序退出后,系統(tǒng)會(huì)工作于活動(dòng)模式時(shí),并且按進(jìn)入中斷之前的PC指針?biāo)傅牡刂防^續(xù)執(zhí)行程序。

由于可以在fSR中斷服務(wù)子程序中改變低功耗模式,所以設(shè)計(jì)者可以選擇在ISR程序中執(zhí)行全部任務(wù),也可以選擇在ISR喚醒MCU后在主程序中處理任務(wù)。

在ISR程序中處理時(shí)確保能立即響應(yīng)中斷事件,中斷事件發(fā)生時(shí)即能立刻處理中斷任務(wù),但是,在處理一個(gè)中斷事件時(shí),其它中斷將不能被載入,直到該中斷任務(wù)完成,而這樣長時(shí)間的中斷將會(huì)降低系統(tǒng)的響應(yīng)靈敏,所以設(shè)計(jì)者須根據(jù)不同系統(tǒng)要求選擇最佳處理方式。

圖1所示的流程圖中主程序需處理兩個(gè)中斷事件,這兩個(gè)中斷事件所要處理的任務(wù)是在主循環(huán)中處理的。ISRs執(zhí)行兩個(gè)不同的事件任務(wù)。第一個(gè)中斷,ISRs改變了保存在堆棧中SR的值,可以使系統(tǒng)退出中斷后進(jìn)入活動(dòng)工作模式,中斷事件是在主程序中被執(zhí)行,中斷事件可以是一任意應(yīng)用事件,例如定時(shí)器、按鍵處理、AD轉(zhuǎn)換等。第二個(gè)中斷,在ISR中斷服務(wù)子程序設(shè)置一標(biāo)志位,在主程序檢測該標(biāo)志位來判斷是否執(zhí)行相應(yīng)的任務(wù)。如果需處理的中斷事件能在較短的時(shí)間內(nèi)迅速完成,這樣就能夠在中斷服務(wù)子程序中直接執(zhí)行,無需進(jìn)入主程序處理,此時(shí)ISR中斷服務(wù)子程序沒必要設(shè)置標(biāo)志位或改變SR低功耗控制位退出睡眠模式,退出ISR中斷服務(wù)子程序后MCU仍然返回到睡眠模式。該流程可以根據(jù)系統(tǒng)應(yīng)用的復(fù)雜性來定,例如,只有一個(gè)中斷事一件可喚醒主程序時(shí),則無需設(shè)置系統(tǒng)標(biāo)志位,此時(shí),通過中斷喚醒主程序,然后主程序進(jìn)行相應(yīng)的任務(wù)操作,最后MCU重新進(jìn)入睡眠模式。

圖1中所提到的睡眠模式LPMn是系統(tǒng)所要用到的睡眠低功耗模式,每種應(yīng)用所涉及的模式可能會(huì)有所不同,實(shí)際的睡眠模式由整個(gè)系統(tǒng)所用到的模塊(如定時(shí)器、AD、串口等)決定,取決于系統(tǒng)模塊在相應(yīng)的睡眠模式下可否被中斷喚醒。例如由MCU的定時(shí)器負(fù)責(zé)喚醒CPU,且該定時(shí)器時(shí)鐘為ACLK時(shí),則ACLK必須保持活動(dòng)模式,則MCU可以工作在LPM3模式;但是如果定時(shí)器時(shí)鐘為DCO時(shí),則MCU必須工作在LPMO。

2方案設(shè)計(jì)技巧2.1看門狗和晶振的配置在任何一款MSP430微控制器中,看門狗默認(rèn)開啟32ms復(fù)位,所以程序初始化第一步應(yīng)先進(jìn)行看門狗WDT的配置。如果在初始化中不快速處理WDT的話,則看門狗可能很快溢出造成芯片程序復(fù)位。為避免CPU進(jìn)入復(fù)位死循環(huán),所以看門狗需在程序最開始配置,通過設(shè)置時(shí)間、設(shè)置控制位或者關(guān)閉看門狗。

MSP430F4xx或MSP430F2xx微控制器中,使用LFXT1低頻率晶振時(shí),代碼運(yùn)行之前需通過FLL_CTL0寄存器配置晶振相應(yīng)的負(fù)載電容,否則晶振可能會(huì)運(yùn)行不正常,該技巧在許多TI的MSP430微控制器應(yīng)用實(shí)例代碼中均可見。

2.2使用TI的標(biāo)準(zhǔn)頭文件

TJ為每一款MSP430微控制器均提供~標(biāo)準(zhǔn)頭文件,文件中包含相應(yīng)芯片型號(hào)中的所有寄存器和位常數(shù)定義信息,使用文件中定義的信息能極大地提高程序的可讀性,同時(shí)增加系統(tǒng)可移植性,使其它設(shè)計(jì)者能快速掌握該程序的設(shè)計(jì)。TI的每~個(gè)應(yīng)用方案和代碼實(shí)例都可以應(yīng)用這些頭文件。

2.3運(yùn)用內(nèi)部函數(shù)處理低功耗模式和其它函數(shù)

MSP430微控制器利用C語言開發(fā)軟件時(shí),可以直接調(diào)用編譯器包含的幾個(gè)內(nèi)部函數(shù)。有時(shí)一些關(guān)鍵事件的處理唯一方法就是使用內(nèi)部函數(shù),利用內(nèi)部函數(shù)會(huì)很大程度地提高任務(wù)處理的效率。

使用內(nèi)部函數(shù)最普通的例子就是進(jìn)入與退出低功耗模式,通常用C語言時(shí)必須對(duì)CPU寄存器中的某些位進(jìn)行操作,例如在IAR編譯環(huán)境中如果需要進(jìn)入LPM3模式,則即可直接使用內(nèi)部函數(shù):

BISSR(LPM3_bits+GIE)。

其它內(nèi)部函數(shù)有時(shí)也具有優(yōu)化功能,例如MSP430微控制器轉(zhuǎn)換BCD碼的內(nèi)部指令函數(shù),如果沒有這些指令組合,則需要一長串C語言代碼完成,且編輯器不能直接將代碼轉(zhuǎn)換成MSP430微控制器識(shí)別的BCD數(shù)學(xué)指令。使用內(nèi)部函數(shù)使得利用C語言編程的人員最大程度地優(yōu)化了程序代碼,也降低了系統(tǒng)功耗。

MSP430微控制器的開發(fā)環(huán)境編譯器包含一系列功能函數(shù),開發(fā)設(shè)計(jì)時(shí)需注意最新版本。

2.4晶振失效的處理函數(shù)

MSP430微控制器具有檢查時(shí)鐘是否失效的功能。所有的微控制器系列提供內(nèi)部DCO和高頻頻晶振的失效檢測功能,MSP430F4xx和MSP430F2xx系列具有全部時(shí)鐘失效檢測的功能,如:外部32768Hz低頻時(shí)鐘與高頻時(shí)鐘失效檢測。

具體細(xì)節(jié)可參考用戶手冊。

本文主要考慮兩種會(huì)出現(xiàn)晶振失效的情況以及考慮是否需要做出相應(yīng)的處理。

(1)在每一次MCU上電時(shí)晶振穩(wěn)定的過程。在這個(gè)過程中會(huì)造成晶振的失效,特別對(duì)于低頻晶振初始化,時(shí)鐘穩(wěn)定需要一定時(shí)間,經(jīng)常是幾千毫秒。

(2)在程序運(yùn)行過程中出現(xiàn)晶振失效,比如某種導(dǎo)體將晶振管腳短路,因此需要一些特殊的方法處理,當(dāng)晶振失效時(shí),DC0時(shí)鐘模塊將繼續(xù)支持CPU的工作。

如果時(shí)鐘源ACLK、SMCLK或者晶振未穩(wěn)定時(shí),任何使用這些時(shí)鐘的外圍設(shè)備都將受到影響,唯一方法即是通過軟件進(jìn)行檢測與處理。當(dāng)一些對(duì)時(shí)間敏感的外圍(如定時(shí)器)以低頻晶振為時(shí)鐘源,若晶振未振蕩穩(wěn)定時(shí),將導(dǎo)致初始化失敗,同時(shí)若程序代碼未等到晶振穩(wěn)定就開始工作,則外設(shè)輸出的結(jié)果是不可預(yù)知的。

如果由LFXT1、LT×T2提供系統(tǒng)的MCLK時(shí)鐘源,晶振失效了,則MCLK時(shí)鐘源會(huì)自動(dòng)切換到內(nèi)部DCO時(shí)鐘模塊,由內(nèi)部的DCO做為MCLK時(shí)鐘源。

處理晶振初始化的一個(gè)簡單方法就是可以不停重復(fù)清零、等待檢測默認(rèn)的晶振失效標(biāo)志位,直到晶振失效標(biāo)志不在置位,可參考用戶手冊。如MSP430F:2xx系列,LF×T1的低頻晶振并不能檢測晶振是否失敗,此時(shí)可調(diào)用一延時(shí)程序以保證有足夠的初始化穩(wěn)定時(shí)間。這種方法在一般程序正常操作過程中并不能捕獲到晶振是否失效,但可以通過設(shè)置OFIE位在NMI中斷服務(wù)子程序中處理。

2.5逐漸增加MCLK頻率

大多數(shù)MSP430微控制器的MCLK可以配置為8MHz,MSP430F2xx可以達(dá)到16MHz,系統(tǒng)要求VCC電壓值隨著頻率的升高相應(yīng)有所增加。程序運(yùn)行時(shí),若設(shè)定MCLK頻率所需的VCC電壓比真正提供給微控制器的電壓值高,則運(yùn)行過程中將發(fā)生不可預(yù)知的問題。

即使MCU實(shí)際工作VCC值比工作頻率需要的實(shí)際工作電壓高出很多,但VCC上升到穩(wěn)定狀態(tài)是需要一定時(shí)間的,所以我們要在工作頻率升高之前確保芯片電壓已經(jīng)能夠支持晶振正常工作。

如果MCU具備SVS(電壓檢測模塊)模塊,則SVS可以提醒系統(tǒng)的VCC電壓達(dá)到所需的電壓值;若MCU不具備SVS模塊,但是含有可利用的ADC模塊,則ADC模塊可以采樣VCC電壓,從而判斷在提升頻率之前芯片電壓值是否能滿足高頻工作要求。

2.6使用初始化函數(shù)

通常在C編譯器編寫代碼時(shí),程序會(huì)自動(dòng)初始化所有定義的存儲(chǔ)器,并且將代碼值插入到main()主程序中。如果定義的存儲(chǔ)器很多(大量變量),則將導(dǎo)致看門狗的溢出問題。當(dāng)初始化許多變量時(shí),占用的時(shí)間相應(yīng)就會(huì)很長,以至于在執(zhí)行main()主程序第一條語句之前看門狗已經(jīng)溢出,那么將導(dǎo)致死循環(huán)的產(chǎn)生

。這種現(xiàn)象一般會(huì)發(fā)生在微控制器的RAM超過2K的情況。

為避免上述情況的發(fā)生,最簡單、直接的方法就是對(duì)不需要最先初始化的變量在最開始時(shí)不進(jìn)行初始化設(shè)置。例如使用IAR時(shí),用一句長代碼矩陣語句_no_init_intx_arrav[2500]替代一長串的初始化代碼,避免看門狗溢出。

除上述方法外,設(shè)計(jì)者還可以定義初始化函數(shù)處理看門狗的溢出問題。RAM存儲(chǔ)器仍然被初始化,但是首先配置看門狗。在IAR環(huán)境中,我們通??梢栽诳撮T狗配置代碼中增加一段_low_level_init()代碼,例如:

void_low_level_init(){WDTCTL=WDTPW+WDTHOLD]

如果上述初始化函數(shù)在開發(fā)環(huán)境中也不可用,那么可以修改在每一個(gè)C程序之前的啟動(dòng)文件。當(dāng)初始化MSP430F4xx系列的大量初始化代碼時(shí),可以在初始化或啟動(dòng)文件中配置LF×T1晶振電容,這樣即可在主程序開始執(zhí)行之前提供給晶振所需要的更多起振時(shí)間,使晶振穩(wěn)定,參考2.1節(jié)。

2.7 支持在線編程(ISP)

如果使用MSP430微控制器的ISP功能對(duì)FALSH存儲(chǔ)器進(jìn)行擦寫操作,為確保正確讀寫正常,需注意以下幾點(diǎn):

(1)設(shè)置正確的FLASH擦寫時(shí)頻率Fftg值,否則燒寫的結(jié)果是不可預(yù)知的。

(2)當(dāng)ISP操作完成后設(shè)置FALSH鎖定位,防止意外的程序干擾寫入。

(3)注意FALSH模塊的累積編程時(shí)間。

(4)提供足夠的VCC電壓,F(xiàn)LASH燒寫電壓VCC值必須比數(shù)據(jù)手冊中最小的燒錄/擦除電壓大,比CPU工作電壓要求略高。

在進(jìn)行FLASH燒錄時(shí),可能在上電過程中會(huì)受到電壓的干擾,也可能在供電電池電壓不足(但是還可以維持CPU工作時(shí))時(shí)受到干擾,甚至當(dāng)初始電壓足夠高,但是當(dāng)開始進(jìn)行FLASH擦寫電流消耗較大,將電壓拉下使其小于最小閾值電壓。

VCC電壓可以通過SVS或ADC模塊校驗(yàn)。SVS模塊優(yōu)勢在于在操作過程中可以提供連續(xù)檢測,在進(jìn)行FLASH擦寫之前如何配置SVS模塊監(jiān)測VCC電壓可參考2.5講述的mclk.c程序。

2.8使用校驗(yàn)和功能校驗(yàn)Flash的完整性

在一些關(guān)鍵性的應(yīng)用方案中,周期性地執(zhí)行校驗(yàn)和功能可以確保FLASH存儲(chǔ)器的完整性。根據(jù)冗余數(shù)據(jù)的需要,校驗(yàn)值可以存儲(chǔ)一個(gè)或多個(gè)存儲(chǔ)器內(nèi),同時(shí)校驗(yàn)值提供的的校驗(yàn)圖表可以作為處理錯(cuò)誤發(fā)生進(jìn)行處理的依據(jù)。

3結(jié)束語

本文所講述的MSP430微控制器的編程方法與編程過程中的注意事項(xiàng)是作者多年在MSP430開發(fā)產(chǎn)品過程中的一些經(jīng)驗(yàn)之談,遵循這些原則可大大提高產(chǎn)品的可靠性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

【2025年8月29日,中國上海訊】近日,第二十屆全國大學(xué)生智能汽車競賽(以下簡稱“智能車大賽”)總決賽在杭州舉辦并圓滿結(jié)束。作為大賽主協(xié)辦單位,英飛凌科技從技術(shù)支持與人才培養(yǎng)上全方位支持賽事,踐行產(chǎn)學(xué)研合作,助力行業(yè)人...

關(guān)鍵字: 微控制器 LED驅(qū)動(dòng)芯片 人機(jī)交互

在工業(yè)物聯(lián)網(wǎng)(IIoT)與邊緣計(jì)算快速發(fā)展的背景下,Modbus協(xié)議憑借其輕量化特性成為微控制器(MCU)設(shè)備互聯(lián)的首選方案。然而,在資源受限的MCU(如STM32F0系列、ESP8266等,RAM通常小于32KB,F(xiàn)l...

關(guān)鍵字: 微控制器 Modbus 工業(yè)物聯(lián)網(wǎng)

在工業(yè)物聯(lián)網(wǎng)設(shè)備開發(fā)中,Modbus從站功能已成為微控制器(MCU)的標(biāo)配能力。某智能電表項(xiàng)目通過在STM32上實(shí)現(xiàn)Modbus RTU從站,成功將設(shè)備接入現(xiàn)有SCADA系統(tǒng),開發(fā)周期縮短40%。本文將系統(tǒng)解析MCU實(shí)現(xiàn)...

關(guān)鍵字: 微控制器 Modbus 協(xié)議棧優(yōu)化

2025年8月21日 – 專注于引入新品的全球電子元器件和工業(yè)自動(dòng)化產(chǎn)品授權(quán)代理商貿(mào)澤電子 (Mouser Electronics) 即日起開售Silicon Labs全新xG26系列無線SoC和MCU。xG26片上系統(tǒng)...

關(guān)鍵字: SoC 微控制器 物聯(lián)網(wǎng)

現(xiàn)代汽車力求提供和家里一樣的舒適性和娛樂功能,因此,行業(yè)對(duì)電子控制單元(ECU)的需求呈現(xiàn)爆發(fā)式增長。然而,傳統(tǒng)的總線技術(shù)和電氣/電子(E/E)架構(gòu)已經(jīng)難以滿足這種需求。本文探討以太網(wǎng)技術(shù)如何革新汽車空間,塑造完全互聯(lián)的...

關(guān)鍵字: 以太網(wǎng) ECU 微控制器

在科技飛速發(fā)展的當(dāng)下,智能設(shè)備已深度融入人們的生活與工作。其中,PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)作為一款集信息輸入、存儲(chǔ)、管理和傳遞于一體,且具備辦公、娛樂、移動(dòng)通信等多種功能...

關(guān)鍵字: 智能設(shè)備 觸摸屏 微控制器

【2025年8月15日,德國慕尼黑訊】英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日宣布完成對(duì)Marvell Technology, Inc.(NASDAQ代碼:MRVL)汽車以太網(wǎng)業(yè)務(wù)的收...

關(guān)鍵字: 以太網(wǎng) 機(jī)器人 微控制器

2025年7月25日,中國 – 服務(wù)多重電子應(yīng)用領(lǐng)域、全球排名前列的半導(dǎo)體公司意法半導(dǎo)體 (STMicroelectronics,簡稱ST) (紐約證券交易所代碼:STM) 公布了按照美國通用會(huì)計(jì)準(zhǔn)則 (U.S. GAA...

關(guān)鍵字: 微控制器 數(shù)字IC 傳感器

我的項(xiàng)目是一個(gè)自動(dòng)植物澆水系統(tǒng),它通過檢查土壤濕度和只在需要的時(shí)候澆水來幫助照顧植物。這是一種保持植物健康的聰明、有效的方法——尤其是在你健忘、忙碌或不在家的時(shí)候。

關(guān)鍵字: 濕度傳感器 微控制器 水泵

Photon 2是一個(gè)光滑的微控制器非常強(qiáng)大和潛力。它有2.4 GHz和5 GHz Wi-Fi, BLE 5, 3mb內(nèi)存,2mb閃存文件系統(tǒng),內(nèi)置電池充電器,支持OTA等等。你可以在這里查看完整的數(shù)據(jù)表。此外,由于這是...

關(guān)鍵字: 物聯(lián)網(wǎng) Particle Photon 2 微控制器
關(guān)閉