摘要:本文是對學習MSP430的準備工作的記錄與總結,涉及到MSP-EXP430F5529開發(fā)板和MSP430F5529LaunchPad的外部參數(shù)與特點分析、TI公司的IDE Code Composer Studio的使用、MSP430F5529的初步上手以及與ARM系列單片機(主要是Freescales公司的MK60系列)的比較。
書接上回。
1.3 CCS
1.3.1 關于這個軟件(碎碎念)
當我拿到MSP430的時候,不僅是接觸到了一個新的單片機,同時也意味著可能要遇到一個新的編譯環(huán)境。一開始是想用IAR的,因為當初在調試MK60的時候,用的就是IAR for ARM,覺得上手以后很順手,尤其有了仿真與調試功能以后(可能是因為之前用的Keil在線調試與Debug能力很差,更別說不是針對MCU的VS之類的了)。用IAR的時候很舒服,因為與之前的盲人摸象不同,可以通過單步調試來尋找問題的所在。因此就想繼續(xù)沿用IAR吧,的確是有IAR for MSP430,TI手冊上也給推薦了。那就下載安裝,但是出現(xiàn)了不少問題,覺得應該可以解決的,但是最后還是沒有找出好的解決方案……哎,只好作罷了。目光又重新轉到這個棄兒CCS上,不想用他的原因不外乎陌生,對陌生的東西往往都有畏懼的心理,很多事都是如此。
下載安裝不表,很簡單。當然,人生若只如初見……
初見感覺編輯界面和大部分的IDE差不多,能縮進、智能排版,而且有很多的奇淫技巧,能很大程度上提高你的編程進度以及解決bug的速度,不過很多東西很需要悟性……
碎碎念到此為止,我在下面分享一些在CCS遇到一些問題和技巧在這里。
1.3.2 Tips
在展開這之前,我嚴重推薦一本書,叫做《LaunchPad口袋實驗手冊》,青島大學老師編寫的,很好,有很多新手遇到的問題在里面都有提到,能少走不少彎路強烈推薦。
1.3.2.1 Views
有很多熟悉的東西,比如Breakpoint、Register、Memories Map等等,這些東西在編程工作時能起到事半功倍的作用,比如在遇到一些對寄存器的初始化時,在這里會比以前用過得Keil甚至IAR還要好(我記得好像IAR沒有看寄存器值的功能),在下一節(jié)里就會發(fā)現(xiàn)這里相當?shù)挠杏谩G疤崾牵_的配置,不要擺放的太亂,一定不要對Editor窗口有影響。
查看內存的分配情況,可以把表格、常量數(shù)組放到FLASH里。
1.3.2.2 選擇性忽略
我試著寫了幾個不同的程序,然后編譯,發(fā)現(xiàn)大部分的優(yōu)化建議都是關于不要有空循環(huán),多使用定時器這種以前編程沒有注意到的問題,這個的確是要注意的,希望不要當作好的東西被大家學習。也有自己對MSP430很多東西沒有摸透,所以無法針對性的來優(yōu)化程序,盡可能的來發(fā)揮ULP優(yōu)勢。所以,如果真的遇到這些問題,希望大家能選擇性的忽略吧。
1.3.2.3 Debug界面
用了一段時間的CCS,發(fā)現(xiàn)CCS在DEBUG的時候有點慢,這算是與IAR比起來的一個缺點吧。
1.3.2.4 例子
比如要可以看到箭頭所指的地方有個Breakpoint,然后在紅框里就可以看到變量值的變化情況,很EZ。
在Register里就會很快的發(fā)現(xiàn)是否配置錯或者其他的問題!
1.4 遇到的一些問題
1.4.1 時鐘的失效情況
很多時候會發(fā)現(xiàn)時鐘的運行并不能像預想的那樣去運行,這時候很有可能對程序的運行、相應的邏輯出現(xiàn)很多誤差,這在編程中是不允許的,哪怕程序看起來可以正常的運行,但是隨時都會有意外發(fā)生,尤其對精確的定時,延時來說。
1.4.1.1 DCO被置位 自動調整DCO
先說我發(fā)現(xiàn)的第一個問題,也在學習筆記(2)1.2.1.4 中提到過了,就是要正確配置DCO的預設值,當不正確的設置DCO的時候,在1.2.3.4中的配圖中能明顯看出來,同時,還有一個標志就是在剛剛提到的寄存器里可以發(fā)現(xiàn)問題。
我們在手冊里可以看到,在正確配置DCOSEL后,UCSCTL0寄存器中DCO是自動配置的。當DCO不在合適的范圍中的時候,會出現(xiàn)DCO全為0的情況。
1.4.1.2 注意預設值 要清零的問題
原來在看手冊的時候,不太注意預設值的問題,查看寄存器也發(fā)現(xiàn)怎么設置值與自己預想的值不同,這時候就要仔細查看手冊了。比如
有兩種方法:
1.直接把這個寄存器清零后,按位或置位。
UCSCTL1 = 0;
UCSCTL1 |= DCORSEL_6;//DCORSEL原來的值是2h.
個人認為這樣簡單粗暴,對于大部分場合是沒有問題的,但是對于有些已經(jīng)設置好的位,就需要保護一下相應的值了;
2.可以按位取反后(復位),按位或置位。
UCSCTL1 &= ~ 70h;//按位與0相與.
UCSCTL1 |= DCORSEL_6;//DCORSEL原來的值是2h.
好像有點麻煩,還得看手冊……
當然,設置完一定要看一下相應的寄存器,是否配置好了。
1.4.1.3 調整后用示波器觀察
由于UCS的配置比較復雜,所以建議在配置完成后,不僅要看寄存器的值和現(xiàn)象,而且要用示波器看一下輸出的是否按照預想的設定輸出,對于一些對于時序/時鐘要求精確的場合,這樣還是非常有必要的。
1.4.1.3 重在Debug
再碎碎念一下。我個人覺得,這個Debug的過程是有點頭疼,但是解決問題的快感也是很多事難以比擬的。尤其是在Debug的過程中,還會出現(xiàn)一些新的問題,可以通過這個來更加深入你要學習的東西,不斷的復習,不斷的吸取新知識,豈不快哉?
1.5 關于分頻的一些測試
基本上對于時鐘的基本配置和常常會出現(xiàn)的問題在上面已經(jīng)說的差不多了。下面要說的是分頻,對于時鐘配置也是挺常見的,尤其是在后面的TimerA(定時器)里,用到的更多。在這里也稍微展開一點把。
1.5.1 對時鐘來源進行分頻
可以看出,分頻精度還是可以的。而且超調與振蕩也稍微小了一點點。
1.5.2調節(jié)FLLD
上圖是調整FLLD = 1時,對之前6.31MHz進行倍頻的波形,看的出來,上升沿下降沿都不是多好看了。估計是因為軟件調制的原因吧。
1.5.3 DCO極限測試
我想,軟件調制應該是有個極限的吧?手冊上寫是25MHz,但是我不斷調整相應的系數(shù),會不會有奇跡出現(xiàn)呢?先放結論,不會。下面看實驗結果:
上圖是FLLN = 7 ,DCOSEL = 5時的波形,已經(jīng)有點醉了。
測試到這時候就結束了……
1.5 后記
寫到這終于寫完了,說不出現(xiàn)在是累還是終于可以舒一口氣了……
非常感謝您的閱讀,若有疑問或錯誤,請留言指出,感激不盡!
參考書籍與參考帖子:
《MSP430x5xx and MSP430x5xx Family User's Guide》
《MSP430單片機原理與應用 -MSP430F5xx/6xx系列單片機入門提高與開發(fā)》(任保宏 徐科軍 編著)
《LaunchPad口袋實驗平臺 MSP-EXP430G2篇》(傅強 楊艷 編著)
http://bbs.eeworld.com.cn/thread-458079-1-1.html
http://www.aiuxian.com/article/p-1863585.html
http://blog.csdn.net/girlkoo/article/details/9047191