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