Menu

My Works
- TTL Pong
- Simple AVR DDS
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- 電子メトロノーム
- 簡易 SD ロガー
- etc.

Report
- MIDI のハードウェア
- aitendo DSPラジオ一覧表
- etc.

Parts Collection
- Logic ICs
- Calculator LSIs
- etc.

Blog

Recent Updates

17/08/03
- Logic IC Collection

17/06/17
- Logic IC Collection

17/04/05
- Logic IC Collection
- MSM100
- MSL1200

17/03/23
- Logic IC Collection
- 英国郵便局規格TTL

16/09/23
- Logic IC Collection
- 沖電気 MSM500 シリーズ

16/08/21
- Logic IC Collection

16/08/03
- Calculator LSIs

16/04/03
- Logic IC Collection
- Calculator LSIs

16/03/16
- Logic IC Collection
- USSR IC Logo

16/03/13
- MAX232のチャージポンプ

16/01/22
- Simple AVR DDS

16/01/19
- 中国規格ロジック IC


ARM (Cortex-M0) を使ってみた

初版公開:2014/03/21
最終更新: 2015/01/11


[15/01/11] 以下は少し古い情報かもしれません。

評価基板セレクション

まずは秋月電子で手に入る ARM 評価基板についてリストアップします。ここで挙げた基板は、それぞれの基板上にホストと接続するための USB コネクタとプログラミング&デバッガ用 MCU がついており、それぞれが単独で PC からプログラムできる構成になっています。したがって、PIC や AVR のように別にプログラマを購入する必要はありません。

C の開発環境は完全に無料というわけではありませんが、評価版や GCC も使えるので、それほど困らないと思います。また、以下のように STM32 評価基板の秋月価格は非常に安価ですが、いつ生産中止になってもおかしくないので、手に入るうちに手に入れておくべきといえるでしょう。

STマイクロ

品名 アーキテクチャ 型番 Flash RAM クロック 周辺 そのほか 秋月価格
STM32F0DISCOVERY Cortex-M0 051R8 64k 8k 48M     \800
STM32F3DISCOVERY Cortex-M4
Analog & DSP
303VC 256k 48k 72M USB 加速度センサ
ジャイロセンサ
電子コンパス
\950
STM32L-DISCOVERY Cortex-M3
Ultra-low-power
152RB 128k 16k 32M 4k EEP 14seg LCD
タッチセンサ
\1150
STM32VLDISCOVERY Cotrex-M3
Mainstream
100RB 128k 8k 24M     \1100
STM32F4DISCOVERY Cortex-M4
High-performance
407VG 1024k 192k 168M USB OTG
Ethernet
Ext. Mem
加速度センサ
マイクロホン
D級アンプ
\1650

LPC

品名 アーキテクチャ 型番 Flash RAM クロック 周辺 そのほか 秋月価格
LPCXpresso Cortex-M0 LPC1114FBD48 32k 8k 50M     \2000
LPCXpresso Cortex-M0 LPC11U14 32k 6k 50M USB   \2000
LPCXpresso Cortex-M0 LPC11C24 32k 8k 50M CAN   \2000
LPCXpresso Cortex-M0 LPC1227 128k 8k 30M     \2000
LPCXpresso Cortex-M3 LPC1343 32k 8k 72M USB   \2000
LPCXpresso Cortex-M3 LPC1347 64k 12k 72M USB   \2000
LPCXpresso Cortex-M3 LPC1769 512k 64k 120M USB OTG
Ethernet
  \2500
(参考) Cortex-M0 LPC1114FN28 32k 4k 50M   トラ技のふろく \110
(参考) Cortex-M0 LPC810M021FN8 4k 1k 30M   トラ技のふろく \75

2012/12/08 現在(一部)

Cortex なんとかというのはアーキテクチャのグレードを示します。最新の ARM アーキテクチャは Cortex-A, Cortex-R, Cortex-M の3種類に大分されますが、組み込みで 8bit MCU 並に手軽に使えるものが Cortex-M です。Cortex-M0、M3、M4 の関係について言えば、M3 が ARM Cortex-M の最も基本となるアーキテクチャで、M0 は M3 からいくつかの命令をカットしたものとなっているようです。逆に M4 は M3 に DSP 機能と FPU を追加したものです。

LPC1114FN28 (いわゆる「100円ARM」) を使用する

最も気軽に手に入る ARM はこれでしょう。このマイコン [LPC1114FN28] は手軽な DIP パッケージで ROM が比較的大きく、最大 48MHz で動作し、入手性の良い点にメリットがあります。使ってみた印象では、ペリフェラルは AVR ほど融通は利かないのですが、コストパフォーマンスの良さからさまざまな応用が期待できそうです。開発の容易さもポイントで、少なくとも同価格帯の PIC よりははるかに楽に開発可能だと思います。その一方、ペリフェラル(周辺機能)ははっきり言ってしょぼいので、AVR や R8C なんかの方が便利に使えるシチュエーションもかなり多いと思います。

スペックシート

型名 Flash RAM EEPROM タイマ 周辺(IF) 周辺(その他) 電源 クロック 秋月価格
LPC1114FN28 32kB 4kB なし 16bit*1
32bit*1
SysTick
UART*1
SPI*2
I2C
10bit ADC 1.8 - 3.6 V 50M
内蔵12M+PLL
\110

プログラム書き込み方法

LPC の ARM マイコンは汎用の USB-シリアル変換器を使用して簡単にプログラミング可能です。LPC1114 の書き込みの一例として、3V 系の変換モジュールを使用したプログラミング回路を上図に示します(USB-シリアルから見て回路図 2 ピンがRx, 3 ピンが Tx です)。

LPC1114 を ISP モード (ISP Command Handler) で起動することでプログラミングの準備が開始されます。 リセット時に PIO0_1 を L に保持すると ISP モードで起動します。これで PIO1_6, PIO1_7 を通してプログラムを書き込み準備ができました。

この状態での書き込みには Flash Magic ソフトウェアを使用します。LPC1114 の設定はおおむね以下のような感じです。あとは画面に従えばフラッシュ書き込みが行えます。

以上をまとめると、書き込みプロセスは以下のようになります。

  1. (電源投入後、)RST, PG スイッチを同時に押す
  2. RST を離す (ISP モード起動)
  3. PG を離す
  4. Flash Magic の Start ボタンを押して書き込み開始
  5. RST スイッチを1 回押す(通常プログラム起動)

(なおデバッガを購入すれば IDE からクリック一発です。)

開発環境について

STマイクロの公式ドキュメントで紹介されている IDE(統合開発環境)のうち、無償で使える評価版が提供されているものは、IAR の EWARM、KEIL の MDK-ARM、Atollic の TrueSTUDIO の 3 種類です。前 2 者の評価版は制限(コードサイズもしくは使用期限)つきの評価版が提供されています。TrueSTUDIO は サイズ制限なし の "Lite version" が提供されています。TrueSTUDIO も無償版はコードサイズ制限 (32k (M3/M4) / 8k (M0)) 付きです。

NXP の評価基板(LPCXpresso) については、パッケージに同封されているコードがあれば、LPCXpresso の IDE が無償で使用できます。

完全に無償の開発環境というと GCC が共通して使えます(もっと言うと有償 IDE も内部で動いているのは GCC です)。GCC + Eclipse で GUI の IDE を構築することも可能です。ただ、上の IDE と比較すると Eclipse の環境構築は慣れていないとやや面倒といえるでしょう。

無償で使える Toolchain として Launchpad のものがありますが、デバイス固有の定義などライブラリは別途必要になります。STM32 の場合は "Standard peripherals library" の中に、LPC は適当なサンプルプロジェクトから持ってきた CMSIS のヘッダファイルが使えます。 ライセンス上いいのかわかりませんが、有償 IDE で開発してフリーの GCC でコンパイルするという方法もあります。

STM32xxDISCOVERY 評価基板にはすぐ使えるサンプルプロジェクトがいくつかついていますが、それらは EWARM、MDK-ARM、TrueSTUDIO のいずれかのプロジェクトファイルで提供されています。 私はとりあえずサンプルを使うために TrueSTUDIO の Lite version をインストールしました。気づいたことを以下にメモします。

Atolic TrueSTUDIO メモ

INTEL HEX ファイルの出力

デフォルトではビルドしても HEX ファイルが出力されませんので、設定の追加が必要です。

Project -> Settings -> Tool Settings -> Other -> Output Format
Convert build output にチェック、 Intel Hex を選択

キーボードショートカットの変更

デフォルトでは F3 で次へ検索できなかったりいろいろ不便なのでカスタマイズしましょう。

Window -> Preferences -> General -> Keys

GCC でビルド

評価版 IDE ではサイズや最適化の制限があるため、ちょっとこったアプリケーションの開発には使えないと思います。しかしながら、フリーソフトの GCC が使えるので、趣味の製作では GCC を利用しない手はありません。

GCC での開発をはじめるために、まず Launchpad から GCC Toolchain をインストールしましょう。たくさんの実行ファイルが作成されますが、主に使用するものは以下の 3 つです。

それぞれの使い方は -help 参照するか Yahoo で検索してください。

適当に作った Makefile の例を置いておきます。GCC へのパスを通してあれば、この Makefile を使うことで TrueSTUDIO で作ったプロジェクトがそのままビルドできるはずです。(なおこのファイルについてはノーサポートとします。)

参考書籍