MSP430 LaunchPad Information
IMAGE11.GIF - 980BYTES LaunchPadとは
IMAGE11.GIF - 980BYTES 開発環境
IMAGE11.GIF - 980BYTES Information/Tips
IMAGE11.GIF - 980BYTES アセンブラ利用
IMAGE11.GIF - 980BYTES メモリ容量拡大版(G2452,G2553)  MSP430G2553はこちらも参照ください
IMAGE12.GIF - 2,801BYTES
変更履歴
2011年8月12日 エミュレータ部分分離
2011年7月29日 G2452のサンプルプログラム追加
2011年7月8日 サンプルプログラムのバグ修正、誤記訂正など
2011年6月25日 G2452,G2553追記
2011年5月5日 Information追記
2011年5月3日 アセンブラ利用追記
2011年5月2日 新規作成開始


勿論、”EMULATION”を分離しないで使うのが一般的でしょうが、
思い切ってカットしてケースに入れてみました
問題は、GNDがジャンパー部分に無く、カットすることを前提に作られていない点です
GND端子を追加しないと当然動作しませんので、お気をつけください
自作基板と接続するために
"EMULATION"部分をケースに入れてみた
GNDも入れて6本引出します
内部の様子
LEDが見えにくいので、大型に変更して
ケースに開けた穴から確認できるように
LaunchPadでなく自作した基板に接続して使用
(下段はI2Cデータ確認のためにロジックアナライザへ接続したところ)


LaunchPadとは
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

Digi-Keyから入手したLaunchPadの箱にはロケットが発射台を飛び立つ様子が描かれていた。
この開発基板を使ってMSP430G2Xシリーズの開発をロケットスタートしてほしいと願っているのだろうか?

<$4.3の価格>

価格はDigi-Keyで一個当たり460円(2011年5月2日時点でのWeb情報)となっている。
私が購入した時点では、395円で入手出来た。
ご存じの様に、これはCPUの値段ではなく、評価ボード+EMURATION機能を持った開発キット一式の値段である。
原価がいくらなのか?
余計な心配かもしれないが、Digi-Keyで購入価格として計算してみると・・・・
勿論、原価が計算できるわけではないが、個別の部品購入ではとても到達出来る販売価格ではない。

部品 品番 機能 メーカー Digi-Key価格(円)
基板搭載 TUSB3410 Serial to USB TI 273
MSP430F1612 CPU TI 1040
TPS77301DGK Voltage Reg . 86
CAT24FC32?
(24LC??)
E2PROM
Size?
Microchip .
USB connecter . . .
Dip Socket . . .
SW x2 . . .
Xtal 12MHz . . .
PCB . . .
CR . . .
付属CPU G2231 CPU TI 199
G2211 CPU TI 185
付属品 10pin PCB connecter . . .
Xtal 32.768kHz . . .
mini-USB cable . . .
合計(金額記入分のみ) 1783


<何が出来る>

私が使っているCCS V4との組み合わせでは、USB経由でPCと接続さえすれば即、動作させることが出来ました。
Debugモードを起動すると、USBに接続されているターゲットボードを探しに行くようで、①MSP-FET430UIF、②LaunchPadの両方をUSB接続していると①が優先されエラーとなる。
LaunchPadのみにすれば、CCS上で問題無くプログラムをFlashに書き込んでDebugが出来る状態となる。
結論として、

「16Bit CPUで実デバッグ機能を含んだソフトウェア開発環境を最も安く(2011年5月時点)構築できる」

ということになる。

ここまでは素晴らしいのだが、何とも残念なのがG2231はFLASHは2KB、RAMは128Bしかないことです。
先日、MSP430G2553のアナウンスがありました。
こちらは、FLASH16KB、RAM512B、ADC10、2個の16bitTimerと何となく期待が持てそうですが、まだ手に入れることが難しいようです。
もう少し待ちましょう。->入手出来ました。ここで活動を紹介しています(2011年6月25日)。





開発環境(CCS IDE)
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

<ソフトウェアの入手とインストール>

ここを参照ください
LaunchPadの公式パージも必ず参照ください。

<プログラムの開発事例>

CCSを起動すると、workspaceを聞いてきます。初めての時には設定してください
二度目以降は、OKだけで進めます
初めての時には、この画面が出ます
右上をクリックすると次に進みます
上記画面が見えたら、初めてのプロジェクトを設定します
この例では、空のプロジェクトを設定します
プロジェクト名を入力してください
例では、testとしています
CPUはMSP430とします
私の環境では、他の設定が出来ませんが・・・
これは、他のプロジェクトを取り込んで設定する場合のみ
今回は空白のままで次に
CPUはちゃんと設定してください
FとGやFGなどありますので、数字だけでなくアルファベットまで確認してください
Nextもありますが、Finishで完了
プロジェクトには、既にスタンダードなIncludeファイルの場所が設定されています
main.cを新規に作成するために、上記の様にソースファイルを作成します
名前を聞いてきますので、ファイル名を入力します
CCSは、ファイル名が何であろうともCソースファイルと認識すればコンパイル対象として対応してくれます
初めてのmain.cは何も入っていませんので、上記の様に入力してみてください
その後、左上の部分をクリックするとコンパイルが始まり、
上手くいくと下段のConsole部分にtest.outファイルが出来たことを知らせてくれます
エラーがあると赤字表示されますので、指示に従って修正してください
OUTファイルが出来ると左のファイル構成にDebugのディレクトリが出来て、その中にOUTファイルが作成されます
OUTファイルが出来れば、上記の様に「虫」をクリックしてDebug作業に移行します
既にLaunchPadがUSB経由で接続されていることを確認してください
画面構成が変わって上記の様に、main()関数の部分にカーソルが来れば、既にプログラムの書込みもうまっく言っています
この状態で左上の赤枠にボタンクリックで動作を制御出来ます
先ずはをクリックするとLaunchPadの赤のLED(LED1)が点滅すると思います

<PCでのUSBデバイスの認識>

LaunchPadはPCのUSBに接続した場合、2つのデバイスとして認識されます。

認識されるデバイス PCシステムハードウェアプロパティ コメント
USB複合デバイス Flash書込みやDebug時のトレース制御を実施するインターフェイスと思われる
仮想COMデバイス
LaunchPadの基板では、Emulation部分とターゲット部分に点線が入って仕切られている部分に、5本の信号線が両方をつなぐように設計されている
ここに[TXD]と[RXD]の信号があり、ターゲットのP1.1(=TXD)とP1.2(=RXD)にそれぞれ接続されている(PCBに印刷してあるTXDとRXDの呼び名は、ターゲットのG22X1から見た機能名)
G22X1はUART機能を搭載していないので、ソフトウェア機能としてユーザーが必要に応じて実装すれば、PC側でUART信号として処理出来る




Infromation/Tips
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

1. 付属水晶振動子
32.768kHzの水晶が付属してますが、かなり小さいのでハンダ付けは慎重に。
私の場合には、秋月で購入した大きなものがありましたので、そちらを実装しています。
2011年5月2日
2. mspとmspx
MSP430は、16bit幅のレジスタを16個持っているCPUです。
このレジスタの中には、プログラムカウンタ(R0)やスタックポインタ(R1)なども含まれていますが、
PCが16ビット幅では64KB空間しかアクセスできません。
そこで、ROMサイズが大きなCPUでは、このレジスタ群のビット幅を20Bitまで拡張しmspxのCPUコアとしました。
従来タイプをmsp、拡張タイプをmspxとしたわけです。
TIの技術者は、mspxをmspとの互換性を保ちながら、上手く拡張しています。
2011年5月3日
3 CCSのUPDATEとLaunchPadファームウェアのUPDATE
CCS V4.2.1.00004から最新版へのアップデートを試みたが失敗に終わった。
私の場合には、Debuggerを終了させようと"Terminate All"の赤いボタンを操作した後に制御が戻ってこないという症状が発生、そこで再び元に戻してしまった。
その後、TIがトラブルシューティングのWebページを開設していることを知る
再度、UPDATEを試みるべきか悩んでいます。
→その後、再度アップデートを実施。当初の症状は無くなって安定に動作中(Version: 4.2.3.00004)。
 原因が良く解らないまま。
更に、LaunchPadファームウェアにも製造ロットによってUPDATEのアナウンスが出ています。
ここに、内容が記されていますが、このUPDATEは付属するCPU(G2211,2231)を使用している場合には不要です。
VALUEシリーズとして新規に加わったCPU対応が目的です。
→正式な公開は、ここで行われています。
 http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_Firmware_Update
2011年5月4,5日

補足
2011年8月16日
4 ADCのチャンネル切換え
ADCのチャンネルを切り替えての動作は、下記シーケンスの様にADCを停止させて行う必要あり。
 ADC10CTL0 &= ~ENC;        /* Disable ADC */
 ADC10CTL1 = INCH_10;       /* Set Temperature */
 wait_10ms();               /* wait for settling time */
 ADC10CTL0 |= ENC + ADC10SC; /* Enable and start conversion */

当初、赤字の部分を入れずに動作させたがチャンネル切換えがうまく動作せず、CCSのDebug機能でトレースして気が付いた。
2011年8月16日




アセンブラ利用
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

簡単なプログラムを作るため、アセンブラ言語でのプログラムを思い立った。
サンプルをTIのサイト(下記)から入手して、実際にコンパイル(アセンブル)したが、エラーが発生して次に進めない。
どこかに注意書き等があるのか探してみたが、上手くだどりつかないまま、試行錯誤で何とか動き出したのでメモを残す。

<環境とサンプル入手>

IDE CCS Version: 4.2.1.00004
Sample Program MSP430 Code Example MSP430G2xx1をクリックすると”slac463a.zip"を入手可能
例えば、その中で
\slac463a\MSP430G2xx1 Code Examples\Assembly (CCS)\msp430g2xx1_1.asm
をCCS V4でコンパイルしてみるとエラーが発生する
(IDE内での環境設定に依存するので、エラー無しの方にはこの項不要)

<エラー対処方法>

// エラー状況
TI提供のサンプルプログラムをCCS V4でコンパイル(アセンブル)すると、Linkerがエラーを報告して停止する
2つのエラー発生、①RESET VECTOR配置、②mainシンボルが未定義
// エラー解決方法
下記に例は、試行錯誤の結果を記しています
時系列的には、エラー解決、このメモ作成となっており、全ての説明の流れが順序良く並んでいない部分があります
新規Project作成段階でも、問題がありました
ここの画面で"Finish"でなく"Next"を選択し、上記画面が現れるので必ず"Empty Assembly-only Project"を選択します
"Empty Assembly-only Project"の設定で、少なくともエラーが発生しなくなります
但し、warningが出て、エントリーポイントがないといわれています
(ここから、別Projectで説明している都合上、ファイル名がmain.asmになっています
又、".global RESET"や"main:"が後から使うのでコメントとして入っています)
warningをなくすには、上記の様に"--entry_point"に"RESET"を記入します
RESETをエントリーポイントとしても、上記の様に".global RESET"を入れないとLinkerにはRESETが認識されません
これで、Errorとwarningがなくなり、やっとすっきりしました
これには、はっきり言って大分ハマりました
諦める寸前でたどり着きました
そこで、”虫”マークをクリックしてDebugモードに入りましたが、またCCSに怒られています
"Target not run as the symbol "main" is not defined"が出ます
これは、main.asmのファイル名に起因していると思って色々とトライアルしましたが、判りませんでした
その後気付いたことは、Debug最初の時点でmain()関数の最初の行に飛んできている点でした
そこで、mainのラベルをソース内に設定してみました
これで、すっきりです
// CCSでのアセンブル利用の注意点
Project作成時に"Empty Assembly-only Project"を選択のこと
(main関数がCで作成されてそれらと一緒に使用るのであれば問題なし)
ソースファイルには下記を必ず記入のこと
.global RESET
RESET:
main:
リンカーオプションとして、"--entry_point"に"RESET"を設定






メモリ容量拡大版 (G2452, G2553)
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

いつも同じコメントの繰り返しだが、14pinのMSP430Gで最初に困るのは、I/O不足でなくROM/RAM容量のサイズ限界である。
今回もストロベリー・リナックスのI2C低電圧キャラクタ液晶を使用して、Gセンサー大気圧センサーからの情報を表示させたところ、やはりROMがいっぱいとなり全ての機能を実現できなかった。
TIの発表によれば、MSP430G2xxxのバリュー・ラインには今後64種類のデバイスが追加されメモリ容量も増加するという。
メモリ拡大版は市場ではなかなか入手出来ずにいたが、タイミング良くDigi-Keyにて下記3種類を入手することが出来た(但し、現時点(2011年6月25日)では下記の様な状況となっており、再度入手が難しい品種がある)。

Part No. Pin ROM RAM Comment
MSP430G2452IPW14 TSSOP 14 8KB 128B 在庫あり(2011/6/25時点)
MSP430G2452IN20 DIP 20 8KB 128B 非在庫品(2011/6/25時点)
MSP430G2553IN20 DIP 20 16KB 512B 非在庫品(2011/6/25時点)

<ハードウェア構成>

今回の回路は、手書きですがこんな構成です。

Gセンサー、大気圧センサー及び液晶ディスプレイを同じI2Cのインターフェイスで接続して制御します。
LaunchPadのUSB経由で電源を供給し、追加機能として仮想COMラインでPCとシリアル通信をしています。



<ソフトウェア構成>

サンプルソフトウェアが下記の様に一部動き始めました。

Chip Function Comment
MSP430G2231 ROM(2KB)サイズ制限で悪戦苦闘の末、下記の様な機能が動き出しました
①I2C LCDへのキャラクタ表示
  アイコン表示も動作確認しましたが、ROMサイズ制限で機能削除
②I2C G-sensorデータ読み込み
  正規化は、ROMサイズ制限で未実装
  MOT及びFFの割込み機能やその初期設定はROMサイズ制限で未実装
③I2C Barometerデータ読み込み
  正規化は、ROMサイズ制限で未実装
④仮想COM経由で上記G-sensor及びBarometerの生データを一秒毎に送出
現在のROM使用量
ROM実装 0x7e0(2016bytes)
使用量  0x7da(2010bytes)
残り僅か6バイト!!

サンプルソフトは、
修正しないと動作しないことが判明しました
申し訳ありませんが、
下記<サンプルソフトのダウンロード>に
記述した修正をお願いします


MSP430G2452 現在、Debug中
上記、G2231に対して、
①LCDへの表示(含むアイコン表示)
  LCD表示を切り替えて、時刻表示、温度表示、大気圧表示並びに追加機能を検討中
②正規化トライアル中
  インターラプト制御(MOT、FF両機能をポート割込みで)
③正規化トライアル中
④CPU動作条件をPCで観測できるモニター機能搭載済
  各種データをPCで確認可能
現在までに、5.7KB消費して、
残りが約2.3KBで進行中


大気圧センサーの正規化で作業が頓挫して
いる為に正規化無しで、サンプルソフト公開
開始(2011年7月29日)
MSP430G2553 作業未実施
今後は、G2452と並行して進める予定
16KBあれば、
ほぼ予定しているすべての機能が
入れられる(かな?)


内容は別の場所に移動しました
(2011年7月29日)



<注意点>

TIのドキュメントは、私には馴染まない点が多くあるのですが、今回の作業での「何これ」と思う点がいくつもありました。

問題点 具体的な内容 何これ
①データシートと②エラッタ及び③ユーザーガイドの
3本立てでマニュアルを見ないといけません

更に、それらの整合性が無い部分があります
各CPUでのシートはリンクで表すと下記の様になります
①の3種類の1ページ目を見てください
下段の方に同じ言葉が出てきます
G2231(SLAS694F)
built-in communication
capability using synchronous protocols (SPI or I2C)
G2452(SLAS722B)
built-in communication capability using the universal serial communication interface
G2553(SLAS735A)
built-in communication capability using the universal serial communication interface
ところで③には、上記機能を説明している部分が二つあります
USIUSCIの二つです

上記説明を読むと、G2231がUSIでG2452とG2553がUSCIとなります

ところが、G2452にはUSIが搭載されていました!!
G2452の1ページの上段と下段に既に矛盾があり、単にコピー&ペーストで間違いを拡大しただけと思わないといけないでしょう

従って、I2C制御ソフトはG2231とG2452は共通ソフトでUSI用を作成
G2553は、USCI用に別にソフトを作成する必要あり
CPU
G2231 MSP430G2x21, MSP430G2x31 Mixed Signal Microcontroller  MSP430G2x01,
G2x11, G2x21, G2x31
Device Erratasheet
MSP430x2xx
Family User's Guide
G2452 MSP430G2x52, MSP430G2x12 Mixed Signal Microcontroller MSP430G2x52,
MSP430G2x32,
MSP430G2x12,
MSP430G2x02
Device Erratasheet
G2553 MSP430G2x53, MSP430G2x13 Mixed Signal Microcontroller MSP430G2x53,
MSP430G2x33,
MSP430G2x13,
MSP430G2x03
Device Erratasheet
TimerAは何で表現が違うの? CPU ①1ページ目の表現 ①内詳細説明 ③を見ると、Timer_AとTimer_Bを搭載するデバイスがあることが判る
従って、今回使用する3種のCPUはTimer_Aのみを搭載するのだろう
Timer直後の数値は、同じ機能Aのタイマーの数を示すようだ
Aの後の数字は、Capture/Compare Register (CCR)モジュールの数を示すようだ

だったらG2231ではTimer0_A2と何故書かないのだろう?

Includeファイルには下記の様な記述がある
G2231
FR_16BIT(TAIV); /* Timer A Interrupt Vector Word */
#define TIMERA1_VECTOR (8 * 1u) /* 0xFFF0 Timer A CC1, TA */
#define TIMERA0_VECTOR (9 * 1u) /* 0xFFF2 Timer A CC0 */
G2452
SFR_16BIT(TA0IV); /* Timer0_A3 Interrupt Vector Word */
#define TIMER0_A1_VECTOR (8 * 1u) /* 0xFFF0 Timer0_A CC1,TA*/
#define TIMER0_A0_VECTOR (9 * 1u) /* 0xFFF2 Timer0_A CC0 */
G2553
SFR_16BIT(TA0IV); /* Timer0_A3 Interrupt Vector Word */
#define TIMER0_A1_VECTOR (8 * 1u) /* 0xFFF0 Timer0)A CC1, TA0 */
#define TIMER0_A0_VECTOR (9 * 1u) /* 0xFFF2 Timer0_A CC0 */

G2553のCC2の割込みはCC1と同じベクターでは?
G2231だけ記述が違うのは?
どうもG2231を直したくても直せない状況に至ったのか?
G2231 16-Bit Timer_A With Two Capture/Compare register Timer_A2
Timer_A2 is a 16-bit timer/counter with two capture/compare registers
G2452 One 16-Bit Timer_A With Three Capture/Compare Registers Timer0_A3
Timer0_A3 is a 16-bit timer/counter with three capture/compare registers
G2553 Two 16-Bit Timer_A With Three Capture/Compare Registers Timer_A3 (TA0, TA1)
Timer0/1_A3 is a 16-bit timer/counter with three capture/compare registers
何メガで動作するの? CPU ①f SYSTEM @ Vcc=1.8V ① 左記記述の
下の図での表現
上記二つの事例は、コンパイルエラー等を経て自己学習すれば時間は無駄になりましたが何とか辿りつけました
これは、自己学習ではどうにも結論にたどり着きませんね

4.15MHzが正しいのでしょうね、きっと
G2231 4.15MHz(page16/53) 6MHz
G2452 6MHz(page17/57) 6MHz
G2553 6MHz(page20/68) 6MHz
まあ他人への文句を言う前に、このWebページの品質向上を行うことを優先すべきでしょうね。同じ苦労をしないで済む人が出ればそれで満足しますか





<サンプルソフトのダウンロード>

MSP430G2231用サンプルプログラム
   CCS V4用のみ
   G2231_LauchPad_LCD_Gsen_Baro_wrk.zip

7月8日
上記にバグがあることが判明しました。
main.cのファイルを下記ファイルで置き換えてください。
main.c
修正点 int main( void ){
 register int dt;

 mWDT_1sec_init(); // Stop WDT function and use as interval timer
 mSet_SysClock(); // Set system clock
 mInit_P1(); // Set port
 mLED_R_ON(); // LED on
 i2c_init(); // Set USI for I2C
 mADC_init(); // Initialize ADC
 mGsen_RESET(); // Reset G-Sensor
 Secs = 0; // reset time
 __enable_interrupt(); // Enable interrupts
 mWait_100mS(); // RESET I2C LCD, I2C G-sensor and I2C Barometer

  途中略

 mLCD_Set_Home();
 // mLED_R_ON(); // LED on
 printf(":T%d", Secs);
 // mLED_R_OFF(); // LED off
 printf("A%d", adc_data);

MSP430G2452用サンプルプログラム(2011年7月29日)
   CCS V4用のみ
   G2452_LaunchPad_LCD_Gsen_Baro_wrk1.zip








































































2011/6/25 200