MSP430系列開(kāi)發(fā)調(diào)試經(jīng)驗(yàn)心得
低功耗、流行的SOC結(jié)構(gòu),適合做智能儀表的MSP430開(kāi)始吸引我了。MSP430系列是一款低功耗且流行的SOC結(jié)構(gòu),非常適合用于智能儀表領(lǐng)域。在我的開(kāi)發(fā)過(guò)程中,遇到了一些另類問(wèn)題,下面將與大家分享一下
低功耗、流行的SOC結(jié)構(gòu),適合做智能儀表的MSP430開(kāi)始吸引我了。
MSP430系列是一款低功耗且流行的SOC結(jié)構(gòu),非常適合用于智能儀表領(lǐng)域。在我的開(kāi)發(fā)過(guò)程中,遇到了一些另類問(wèn)題,下面將與大家分享一下我的經(jīng)驗(yàn)和解決方法。
MSP430系列的IAR調(diào)試常見(jiàn)問(wèn)題和經(jīng)驗(yàn)心得
首先,在連接仿真器時(shí),可能會(huì)遇到無(wú)法下載的問(wèn)題。這個(gè)問(wèn)題很常見(jiàn),IAR會(huì)提示找不到目標(biāo)。解決方法有三種:一是并口驅(qū)動(dòng)能力不足,可以在電腦的BIOS界面下將驅(qū)動(dòng)設(shè)置成ECP或者ECP/EPP模式;二是JTAG線太長(zhǎng),一般超過(guò)20CM不推薦使用,并且不要讓線交叉纏繞,否則會(huì)影響實(shí)時(shí)在線調(diào)試;三是負(fù)載太大,如果板子的功耗較大,電流超過(guò)20MA,建議使用外接電源,以免并口驅(qū)動(dòng)能力不足,導(dǎo)致MCU電壓被拉低而不能寫(xiě)入FLASH。
另一個(gè)常見(jiàn)問(wèn)題是程序下載到一半突然報(bào)錯(cuò),提示某個(gè)地址寫(xiě)不進(jìn)去。解決方法有三種:一是芯片的復(fù)位電路引起的,寫(xiě)FLASH時(shí)系統(tǒng)電壓會(huì)波動(dòng),可能導(dǎo)致芯片復(fù)位,使用BSL再燒一遍可以解決;二是芯片可能死機(jī)了,斷電、拔掉JTAG后稍后再試,一般沒(méi)有問(wèn)題;三是如果以上方法都無(wú)法解決,可以嘗試給芯片上電,電壓設(shè)置為3.6V,重新寫(xiě)一次,一定能解決。因?yàn)镕1XX系列的寫(xiě)FLASH電壓不能低于2.7V,所以用3.6V電壓,無(wú)論什么樣的芯片都能寫(xiě)回來(lái)。
關(guān)于3.40以上版本的仿真器設(shè)置問(wèn)題
說(shuō)實(shí)話,我在開(kāi)發(fā)過(guò)程中不太愿意隨便換IAR的版本,因?yàn)橛行┱Z(yǔ)法不兼容,有些設(shè)置不一樣。最近安裝了3.40的限制版,一路NEXT,好像沒(méi)什么特別的地方。裝好后發(fā)現(xiàn)芯片的選擇余地變多了,包括了F2XX等多種類。然而,在硬件FET接著跑一個(gè)DEMO時(shí),卻報(bào)錯(cuò)了!原來(lái)在仿真欄目里除了選擇FET硬件仿真外,還需要選擇訪真器,我沒(méi)有仔細(xì)看,結(jié)果默認(rèn)選項(xiàng)是TI-USB,所以出了問(wèn)題。將選項(xiàng)改成LPT(并口FET),問(wèn)題就解決了。
另類級(jí)問(wèn)題
1. F1611大數(shù)組定義不能正常運(yùn)行的問(wèn)題:當(dāng)使用F1611時(shí),有可能遇到RAM中定義的變量或數(shù)組超過(guò)一個(gè)極限時(shí),MSP程序無(wú)法正常運(yùn)行??梢酝ㄟ^(guò)將I/O輸出電平來(lái)確定程序進(jìn)程,這樣可以方便地判斷是否是由WDT引起的問(wèn)題。解決方法有三種:一是對(duì)數(shù)組使用__no_init_定義,在上電時(shí)編譯器不會(huì)產(chǎn)生特殊的附加函數(shù)去初始化RAM;二是修改IAR中Cstartup.S43文件中的__program_start子程序,增加一個(gè)關(guān)閉WDT的操作或者設(shè)置WDT時(shí)間長(zhǎng)度超過(guò)32MS;三是在Project--Options--Linker--Config中選擇Override default programe,并將Entry lib設(shè)置成__program_start。這些方法都是已知解決1611RAM初始化時(shí)間超過(guò)WDT默認(rèn)而復(fù)位的解決方法,如果使用匯編,則沒(méi)有這個(gè)問(wèn)題。
2. SVS導(dǎo)致MSP "壞死" 問(wèn)題:在開(kāi)發(fā)一款儀表時(shí),我使用了F425,并且將SVS的電壓設(shè)置為3.3V。然而,在第一次JTAG寫(xiě)入后,板子就沒(méi)有再啟動(dòng)工作了。最初以為MCU被寫(xiě)廢了,但后來(lái)接上電源和電流表發(fā)現(xiàn)電流有周期性跳躍,原來(lái)該MCU正被SVS復(fù)位中。解決方法是重新加電壓,超過(guò)3.3V,修改設(shè)置后重新寫(xiě)入FLASH,問(wèn)題就解決了。希望這個(gè)經(jīng)驗(yàn)?zāi)芴嵝咽褂肧VS和SVS的朋友們注意,有時(shí)這個(gè)問(wèn)題不太容易被發(fā)現(xiàn)。
3. I/O電壓供電居然也行?在設(shè)計(jì)低功耗設(shè)備時(shí),有時(shí)我們會(huì)將MCU的引腳用于給其他IC供電。這個(gè)方案最早我在PIC單片機(jī)上使用過(guò),并且在MSP430上也沒(méi)有問(wèn)題。但是,在硬件設(shè)計(jì)時(shí)一定要慎重考慮,因?yàn)镮/O可以供電給其他IC,同樣也可以從其他IC中取電。在一些設(shè)計(jì)中,MCU的靜態(tài)功耗無(wú)法降下來(lái),尤其是在設(shè)計(jì)變送器或者4-20MA雙線制設(shè)備上,需要謹(jǐn)慎處理這個(gè)問(wèn)題。