2013年10月31日木曜日

LPCXpresso の開発環境を作る

こんばんは、syncon です。
先日、mbed と LPCXpresso LPC1769 を購入しました。
USB HOST 機能を使って AKAI EWI-USB が接続できるか調べようと思っています。

・・・で、開発環境を作ろうと思って付属のドキュメントに従って作業を行おうとしたら公式のURLに繋がらない。
どうも2013/9に開発環境の新バージョンがリリースされたようです。
NXP、LPCXpresso 6を発表 :: NXP Semiconductors

また、これ↓によると、コード制限が256kまでなど色々制限が緩和されてるみたい。
LPCマイコン情報:LPCXpresso-30ドルで始められる低価格 開発ツールプラットホーム, LPC-Link, LPC1769, LPC1347, LPC11U14, LPC1104, LPC1115, LPC11C24, LPC1227, LPC1768, LPC1343, LPC1114

さっそく、NXPのユーザー登録を行い最新版(6.1.0)のIDEをインストールしてみました。

2013年10月17日木曜日

CooCox CoIDE で STM32 の開発環境を作ってみた(その2)

台風と初雪が同時にやってきたのは初めてだよ・・・う~寒い
こんばんは syncton です。

前回で printf() デバッグができるようになったので、今回は USART の割り込みを使って MIDI 入力する部分を作っていきます。
今後も STM32 を使う予定があるので調べた事をまとめておきます。

[2013.10.18 追記] クロックの設定漏れがあったので6.1に追記


1.MIDIのハードウェア規格


  • 転送方式:非同期方式シリアル転送
  • 転送速度:31.25 kbit/s(±1%)
  • データ長:8 bit
  • パリティ:なし
  • ストップビット:1 bit
  • フロー制御:なし
JIS X6054-1:「電子楽器ディジタルインタフェース (MIDI) -第1部:総則
P.2 ハードウェア より

2.USARTとGPIO

[UM0919] STM32VL Discovery User Manual(Rev.2) P.8/24
Figure 6. STM32F100RBT6B block diagram より

2.1.GPIOの設定

「UM0919 STM32VL Discovery User Manual P.17 Table.6 P3 pinout」 で USART3 で使用するポートとピンを調べる。今回は APB2 のポートBのピン10,11を使用。
前回作成したMIDIインターフェースは5Vで動作しているので、これらのピンが5V耐性かどうかも調べておきます。
「STM32F100RB Datasheet(Rev.7)」に載っています。
I/O level が FT(5 V tolerant)なのでOKですね。
「STM32F100RB Datasheet(Rev.7)」 P.24
「Table 4. Low & medium-density STM32F100xx pin definitions」 より

GPIO のモードは「RM0041 Reference manual(Rev.4) P.107 Table 22. USARTs」によると、
入力は「Input floating」または「Input pull-up」が選択可能ですが、インターネット上のサンプルはほとんど「Input floating」を指定しているようです。
出力は「Alternate function push-pull」を指定します。

MIDI入力時の最大出力速度の設定は不要だと思うのですが、GPIO_InitTypeDef 構造体の GPIO_Speed に何らかの値をセットしないといけないのですが、調べても良くわかりませんでした。
そこで、ポート設定レジスタのリセット時の初期状態が0(ゼロ)なので、そうしてみました。

また、今回のサンプルではMIDI出力は使用しませんがピンの設定だけしておきます。
GPIO の最大出力速度は 2MHz、10MHz、50MHz から選べるのですが、STM32F100RB のクロックの最高速度は 24MHzなので、それより速い 50MHzは意味がないような気がします。
MIDIはそれほど高速ではないので、GPIOの最大出力速度は一番遅い 2MHz としてみました。

詳細は 「RM0041 Reference manual(Rev.4)」 の 「P.110 7.2.1 Port configuration register low」 および 「P.111 7.2.2 Port configuration register high」 参照

2013年10月13日日曜日

CooCox CoIDE で STM32 の開発環境を作ってみた(その1)

今の天気 晴れ、気温 20度

いや~寒くなってきたよ~! 
油断してたら風邪をひいてしまった syncton です、こんばんは。
まだ、熱は出てないけど頭が痛い・・・

EWICONの製作では PSoC を使っているのですがソースレベル・デバッガーが無いので、だんだん辛くなってきました。
そこで、以前購入した STM32VL Discovery と STM32F4 Discovery でテストが出来ないか検討中です。
STM32では Eclipse + CodeSourcery + OpenOCD で開発/テスト環境を作る良さそうなので、チャレンジしてきましたが、とにかく手間が掛かって大変。手順をまとめるだけでも一苦労です。

・・・で、いくつかのIDEをためしてみたところ Free ARM Cortex MCU IDE(CoIDE) が結構良さそうです。

特徴は
  • フリー。使用制限なし。
  • CMSISに対応
  • 各種MCUに対応。MCUを選択するだけで必要なソース(CMSIS)を用意してくれる
  • 使用するペリフェラルをリポジトリーから選択するだけで必要なソース(CMSIS)を用意してくれる
  • STM32 の標準ドライバを利用しているのでUSBで接続するだけで簡単にデバッグが出来る
  • IDEから公式コミュニティサイトへのアクセスが可能で、フリーのソースが簡単に入手できる
  • IDEはEclipseがベースなので使い勝手は結構良い。リファクタリングやソースの整形などもできる
気になる点としては
  • Eclipse のプラグインには対応していない
  • 日本語の情報が少ない
  • バージョン管理(CVS/Subversion/Gitなど)の仕組みがない