SNSへはこちら

「超低消費電力」のMSP430マイコンを弄ってみた(1)

前回の投稿では MCU + CPLD の PSoC をかる~く触れてみました。個人的にとてもアツいチップであり、今後も触れていきたいのですが...
実は同日に、MSP430 というマイコンを買っていました。秋月で以下の様なものを買ったんです。

MSP430 とは Texas Instruments のマイコンであり、超低消費電力であることが特徴の8bitマイコンです。動作電圧もなんと1.8Vから3.6Vという低電圧で動作し、消費電流も少ないということです。こちらのサイトではなんとレモン電池でこのマイコンを動かそうという実験がされています。

この特徴を持つマイコン、個人的にはあまり興味はないのですが面白そうだと思い試してみます。

開発環境 on Mac

マイコンを買うと毎回問題になるのですが、大抵のマイコンは Mac や Linux での開発を前提にしていないという感じになっています。このマイコンもそれに当てはまります。ですので自力で環境を整えていくことにします。

gcc

グーグル先生に聞いた所、Google Code Archive - Long-term storage for Google Code Project Hosting.というサイトで MSP マイコン用のコンパイル済み Intel x64 向けの gcc やらを配布しているとわかりました。それでは早速 pkg の入った zip ファイルを落としてインストールします。すると /usr/local/msp430-toolchain/ にインストール(シンボリックリンク)されると思います。ですのでシェルのパスを /usr/local/msp430-toolchain/bin に通しておきます。これでひとまず gcc のインストールは出来ました。

書き込み環境 - mspdebug

例によって最強のFT232RLで書き込みをします。調べていくとなんか「そんなの無理だよ。素直に専用のJTAGライタ使えよ」とか書かれた英語のコミュニティサイトや BBS がちらほらと出てくるのですが、そんなもの無視してガッツで書き込みをしてしまいます

調査を続けていくと、どうやら mspdebug というソフトを使えば良いとわかりました。実際にシリアル通信で書き込めるかというと...ありました。
MSP430 プログラム書き込みツールとインターフェイス   [msp430info index-3.4] - 超低消費電力マイコン(MSP430) - Japanese E2E (日本語コミュニティ) - TI E2E Community
この公式サイトによるとBSL書き込みがあって、これでなんとUARTで出来る的なことが書いてあります。希望の光です。ってかなんでこんな変な名前にしてるのかねぇ。わかりにくいわ。

んじゃ配線はどうすんのよと思っていましたが、platformioでmsp430 - Qiitaに書いてありましたのでそちらに従います。ピンの対応ですが、TXD と RXD が逆なようでしたので(それともデバイス自体のHW的な違いか)、修正して以下に掲載します。

MSP430のピン名 MSP430のピン番号 FT232RLのピン
VCC 1 3.3V
P1.1 3 RXD
P1.5 7 TXD
RST 16 DTR
TEST 17 RTS
GND 20 GND

ご注意:
僕がテキトー選んで買ったチップではこの BSL 書き込みが出来るようですが(データシートによる)、出来ないものもあるようです。ご購入の際は、BSL 書き込みをされる方は事前にお調べください。

例によって Homebrew から brew install mspdebug として試してみましたが、なんかまぁ出来ない。やや萎えましたが、おそらく書き込み用ドライバで対応しているものがないのだろうなと思ったので、ダメ元で以下の GitHub リポジトリから自前で make してみました。

dlbeer/mspdebug

そして make をして出来たバイナリをパスの通ったお好きな場所へコピー。

さて、実際にプログラムを書いてみますかね。ユーザーガイドを参考に簡易的に作った LED チカチカプログラムは以下です。

レジスタ・マクロは特にビットフィールド構造体で定義されているわけではなく、個々のレジスタ名・ビット名で定義されているようです。今回はこれを main.c という名前で保存しました。
そしてビルドです。付けるべきオプションはそれ程複雑ではないのでまあ良かった。

$ msp430-gcc -Os -Wall -g -mmcu=msp430g2553 -o main{.elf,.c} -std=gnu99 2>&1 | nkf

後の 2>&1 | nkf が気になりますが、これは一部エラーメッセージが日本語で出てくる時に文字化けをすることがあるのでそれを直すための対症療法です。とりあえずストレスを感じないために付けておきましょうか。
ちなみに実際に文字化けが起こった時の表示はこんな感じです。

nkf を通すとこんな感じだとわかります。

エラー無くビルドできたでしょうかね。出来たらこんな感じで叩いてください。このコマンドは上の Qiita の記事を参考にしました。

$ mspdebug rom-bsl -d /dev/cu.usbserial-AI0454E0 "prog main.elf"

上の ID 的なところはご自身がお使いのものに合わせてください。これで書けるはずです。かなり高速に LED がチカチカしていると思います。

まあなんか STM32 の記事が停滞しているような気がしますが、とりあえず割り込みとかやって次に(次とは言っていない)続きを公開したいと思います。