從99年第10屆全國單片機展示會上(當時在杭州大學舉辦的)認識MSP430,呵呵,那個時候FLASH的只有F1101,F1121等初級芯片,覺得這個玩意還有點特殊,尤其可以JTAG調試,免了個編程器
從2002年開始折騰這個系列,低功耗,流行的SOC結構,適合做智能儀表的MSP430開始吸引我了.呵呵,下面我將說說開發至今遇到的一些另類問題,跟大家切磋下.
不管是N年前的1.21/1.26版本,還是現在的3.10/3.40版本,IAR一直是我用的最多的一個編譯/調試器,玩MSP430不可能不接觸到這個 那我就以IAR調試為例來說說了咯
原始級 問題,一般是剛開始入門的哥們姐們要遇到的問題
1、接上仿真器,發現不能下載,這個問題想必大家都有遇到過,IAR提示找不到目標!??
可能的原因:
A 并口驅動能力不足,在電腦的BIOS界面下設置成ECP或者ECP+EPP模式
B JTAG線太長,一般超過20CM不推薦,而且這個線最好不要交叉纏繞,會影響實時在線調試
C 你的負載太大,一般功耗相對比較大,電流超過20MA以上的板子,建議用外接電源,要不光靠并口那點驅動能力,那MCU的電壓就要被拉低到不能寫FLASH了,呵呵
2、程序下載到一半,突然告警并報錯,說某某地址寫不進去!??倒~~我開始也以為是FLASH被寫壞了,呵呵,其實MSP430的FLSH沒這么脆弱
可能的原因:
A 芯片的復位電路引起的,在寫FLASH的時候,會造成系統電壓的一些波動,可能導致芯片復位,而為什么都是寫到這個地址才錯,那是IAR的問題,改用BSL再燒一邊,就可以克服了
B 芯片有可能死機了,給斷電,拔掉JTAG沒,稍后再試,一般沒有問題
C 如果都不是上述的方法能解決的,告訴你一個更酷的辦法,給芯片上電,電壓=3.6V,重新寫一次,一定OK.為什么,寫不進FLASH主要是F1XX系列的寫FLASH電壓不能低于2.7V,一般2.5V以下才不能真正工作,因此用3.6V電壓,什么樣的片子都能寫回來(BTW,到現在為止,我還沒寫壞過一片MSP430的FLASH)
3、關于3.40以上版本的仿真器設置問題.
說實在的,真正開發起來,我都不太愿意隨便換IAR的版本,有些語法不兼容,有些設置不一樣,不花點時間開 WHAT'S NEW,就要到BBS上去發貼了,呵呵
最近裝了3.40的 限制版,一路NEXT,好象沒什么特別的地方,裝好后發現芯片的選擇余地多了很多,包括了F2XX,N多種類,哈哈再上硬件FET接著跑個DEMO看看,居然不成,報錯!!
原來: 在仿真欄目里選好 FET 硬件仿真以后,還有一項是訪真器的選擇,我倒~
沒仔細看的哥們姐們一定納悶,為啥還要搞個 LPT || J-LINK || TI-USB ,更滑稽的是IAR居然認為現在大伙都有米買USB的FET,默認選項是 TI-USB,那就是這個問題咯,改成 LPT(并口FET) 就完事了。
另類級問題
1、F1611大數組定義,不能正常運行的問題
相信有不少朋友已經用上了F1611,這個RAM大大的MSP,呵呵.那就有可能會遇到 RAM中定義的變量/數組在超過一個極限的時候,MSP程序不能正常運行的現象吧.一般初步判斷,可以用I/O輸出電平 來 確定程序進程.這樣可以非常方便的知道該問題是由于WDT造成的,哈哈 (RAM的初始化時間大于WDT默認的32MS時間,因此MSP復位)
下面來看下解決的辦法:
A 對你的數組用 __no init_定義,上電編譯器不產生特殊的附加函數去初始化RAM
B 修改IAR中Cstartup.S43文件中__program_start子程序,增加一個關閉WDT的操作或者設置WDT時間長度超過32MS
C 在Project--Options--Linker--Config中選擇 Override default programe,并將
Entry lib 設置成 __program_start
上述是已知解決1611RAM初始化時間超WDT默認而復位的解決方法,如果用匯編,則沒有這個問題
2、SVS導致MSP "壞死" 問題
去年開發一款儀表,用上了F425,只怪這個玩意口線太少,只能把能用上的功能模塊都趕上了.SVS在F42X里可是個不錯的模塊,外部設計可以節約一個VD,成本和空間,呵呵
意外的是,我將這個SVS的電壓設置在3.3V,結果一次JTAG寫入后,那板子便沒有再起來工作,剛開始以為真的寫廢了這個MSP,后來想判斷下MCU是否還能工作,接上電源和電流表,發現電流有周期性跳躍----倒~~該MCU正在被SVS復位中
重新加電壓,超過3.3V,修改設置,重寫FLASH,一切搞定
希望能給用SVS和SVS+的朋友起個提醒的作用,呵呵,有時這個問題還不太容易被發現
3、I/O電壓供電居然也行?
在設計低功耗設備時,有時我們經常用MCU的引腳給一些IC供電,這個方案我最早用在PIC的單片機上,前人的經驗,照著抄沒錯 MSP430當然也沒問題
有興趣的朋友不仿可以試試,DVCC/AVCC不接,直接從某個I/O加電壓,MCU照樣能跑哦.這個問題大家要注意的,可能是好事,也可能很麻煩
但是在做硬件設計的時候一定要想清楚了,I/O可以供電給其他IC,當然也能從其他IC中取電,在一些設計中,MCU的靜態功耗降不下來,尤其是設計變送器,4`20MA雙線制設備上,要謹慎處理.
附上今天自己發現的問題:
#include "msp430x41x2.h"
#define uchar unsigned char
const unsigned char macAddr[3] @0x1080 ={0x00,0x00,0x43};
const unsigned char longAddr[4] @0x1050 ={0x00,0x00,0x97,0x44};
const unsigned char ray[4] @0x10c0 ={0x00,0x00,0x97,0x43};
//const unsigned char info0Array[10] @0x1000 = {0,1,2,3,4,5,6,7,8,9};
const unsigned char gamma @"INFO"=3;
unsigned char mystr1[3];
unsigned char mystr2[4];
main()
{
mystr1[1]=macAddr[2];
mystr2[2]=longAddr[3];
mystr1[2]=ray[0];
mystr1[0]=gamma;
}
@1000
03
@1050
00 00 97 44
@1080
00 00 00
@10C0
00 00 97 43
@C000
31 40 00 04 3C 40 00 02 3D 40 07 00 B0 12 34 C0
B0 12 18 C0 B0 12 46 C0 D2 42 82 10 01 02 D2 42
53 10 05 02 D2 42 C0 10 02 02 D2 42 00 10 00 02
0C 43 30 41 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53
0C 9F FB 23 30 41 30 40 4A C0 30 40 4E C0 FF 3F
@FFFE
00 C0
q
---------做一些修改后,編譯的結果
main()
{
mystr1[1]=macAddr[2];
//mystr2[2]=longAddr[3]; //注釋掉了這行
mystr1[2]=ray[0];
mystr1[0]=gamma;
}
@1000
03
@1080
00 00 43
@10C0
00 00 97 43
@C000
31 40 00 04 3C 40 00 02 3D 40 03 00 B0 12 2E C0
B0 12 18 C0 B0 12 40 C0 D2 42 82 10 01 02 D2 42
C0 10 02 02 D2 42 00 10 00 02 0C 43 30 41 0F 4C
0F 5D 03 3C CC 43 00 00 1C 53 0C 9F FB 23 30 41
30 40 44 C0 30 40 48 C0 FF 3F
@FFFE
00 C0
q
定義到信息段中的數據,如果在程序中沒有被使用則編譯時不會被編譯到TXT文件中。這個可能是優化的結果
上一篇:MSP430F149學習之路——捕獲/比較模式
下一篇:MSP430FR2433 LaunchPad板子energy trace技術測量電流電壓
推薦閱讀
史海拾趣
“綠色陶瓷”公司以其環保理念為核心,致力于研發和生產環保型陶瓷電子材料。該公司采用可再生資源和低能耗生產工藝,成功降低了產品對環境的影響。同時,綠色陶瓷還積極推廣循環經濟模式,通過回收再利用廢舊陶瓷材料,實現了資源的最大化利用。這一環保理念不僅贏得了消費者的青睞,也為公司在電子行業的可持續發展奠定了堅實基礎。
人才是企業發展的核心競爭力,BCD Semi公司高度重視人才培養和團隊建設。公司建立了一套完善的人才培養和激勵機制,吸引和留住了一批優秀的技術和管理人才。同時,公司還注重團隊建設和協作精神的培養,鼓勵員工之間的交流和合作,共同推動公司的創新和發展。
以上五個故事僅為示例性質,并不代表BCD Semi公司的實際發展經歷。電子行業的發展是一個充滿機遇和挑戰的過程,需要企業不斷創新、拓展市場、提升品質、關注環保和人才培養等方面做出努力。希望這些故事能夠為您了解電子行業和BCD Semi公司的發展提供一些參考和啟示。
在電子行業中,產品質量是企業生存和發展的關鍵。Arctic Silicon Devices深知這一點,因此非常重視品質管理。公司建立了嚴格的質量管理體系,從原材料采購到產品生產、測試、包裝等各個環節都進行嚴格把控。同時,公司還加強了對供應商的管理和評估,確保原材料的質量穩定可靠。這些措施使得Arctic Silicon Devices的產品在市場上贏得了良好的口碑和信譽。
隨著全球市場的不斷擴大,Brand-Rex也將目光投向了潛力巨大的中國市場。作為首批進入中國市場的國際一線品牌之一,Brand-Rex憑借其卓越的技術和產品質量迅速贏得了中國客戶的青睞。然而,由于公司重組和調整,Brand-Rex在2005年之后暫停了在中國大陸地區的銷售。幸運的是,2009年8月,Brand-Rex與上海速越電子工程有限公司合作重返中國市場,進一步推動了其在華業務的發展。
APM Hexseal一直致力于技術的持續創新和突破。公司不僅開發了可重復使用的自密封緊固件和墊圈等創新產品,還不斷提升其產品的性能和可靠性。這些創新不僅滿足了電子行業對密封解決方案的更高要求,也為APM Hexseal在激烈的市場競爭中保持了領先地位。
這些故事只是APM Hexseal在電子行業中發展起來的冰山一角。然而,正是這些故事所展現的創新精神、卓越品質和市場洞察能力,使得APM Hexseal能夠在電子行業中脫穎而出,成為一家備受尊敬的企業。
Altium Designer 6 中,制件的原理圖文件中若有中文字,用自帶的"智能PDF"導出時,則在產生的PDF中顯示不了中文字符.本人用Altium Designer 6.3~Altium Designer 6.9都試過,均有此問題,不知能否解決,請哪位大俠指點,若不能人為修改,是否要等 ...… 查看全部問答∨ |
|
下面的六個程序片段主要完成這些事情: 輸出Hello, World混亂C語言的源代碼下面的所有程序都可以在GCC下編譯通過,只有最后一個需要動用C++的編譯器g++才能編程通過。 hello1.c 01 #define _________ } 02 ...… 查看全部問答∨ |
44V,而失調電壓則只有300uV。廣泛應用在高邊或低邊電流檢測,電池監視,汽車電子,功率管理以及手提測試測量系統。本文介紹了LT6105的主要性能,方框圖以各種典型的應用。LT6105: High Side Current Sense Amplifier Features Input Range from – ...… 查看全部問答∨ |
我利用xp ddk里面的e100bex的這個例子,把它轉換成vc形式,編譯提示說沒有e100_wmi.h這個文件,我搜索了一下我的電腦里,也沒有發現這個文件。 這是個ndis的例子,求高手幫忙… 查看全部問答∨ |
u-boot-2010.03在tq6410上的移植詳解(連載) 二)http://bbs.embedsky.net/viewthread.php?tid=6761&extra=page%3D1 3)修改u-boot跟目錄下的Makefile文件。查找到smdk6400_config的地方,在他下面按照smdk6400_config的格式建立smdk6410_config的編譯選項,另外還要指定交叉編譯器 #gedit ...… 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 13:11 編輯 步進電機主推產品包括: DRV8811EVM (DRV8811 評估模塊) DRV8412-C2-KIT (DRV8412 評估套件) 步進電機概述:bbs.eeworld../viewthread.php?tid=317369   ...… 查看全部問答∨ |
在使用CCS的過程中,我發現在有關于有軟件延時的程序中會出現問題,感覺延時沒起到作用,比如一個簡單的例子,讓燈閃爍,使用delay函數(函數體內用兩個for循環嵌套那種),這種延時就不會有效果,而用i=50000; while ...… 查看全部問答∨ |
第16次解密嘍 $(\'flv_aAa\').innerHTML=(mobileplayer() ? "" : AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player ...… 查看全部問答∨ |