サイトアイコン IoT MCUのHappyTech

テンプレート移植(Cortex-M0+ → M0編)

ARM Cortex-M0+のLPC8xxテンプレートをCortex-M0テンプレートへ移植するに際し、使用評価ボードを比較し、既存テンプレートのどこに変更が必要かを把握します。

評価ボード比較

評価ボード LPCXpresso LPC820 REV A LPCXpresso LPC1114 REV A
ボード写真(LPC-Link部除く)

LPCXpresso LPC820

LPCXpresso LPC1114

実装マイコン LPC820
LPC812M101JDH20 TSSOP20
LPC1114 LPC1100L(第2世代)シリーズ
LPC1114FBD48/302 LQFP48
CPUコア ARM Cortex-M0+ 30MHz(max) ARM Cortex-M0 50MHz(max)
動作電圧 1.8~3.6V 1.8~3.6V
実装水晶発振子 12MHz 12MHz
内蔵発信器 12MHz 12MHz
内蔵フラッシュ・メモリ 16KB 32KB
内蔵RAM 4KB 8KB
内蔵EEPROM なし なし
GPIO 18本(5V-tolerant I/O)
GPIO0_0~GPIO0_17
42本(5V-tolerant I/O)
GPIO0_0~GPIO0_11
GPIO1_0~GPIO1_11
GPIO2_0~GPIO2_11
GPIO3_0~GPIO3_5
アナログ入力 アナログ・コンパレータ
5ビット×1チャネル
ADC
10ビットx8チャネル
汎用タイマ 16/32ビット・タイマ(SCT)×1 16ビット・タイマ(CT16Bx)×2
32ビットタイマ(CT32Bx)×2
実装LED 3色(RED:P0_15、GRN:P0_17、BLU:P0_16) 1色(RED:P0_7)
シリアル通信 USART×1チャネル USART×1チャネル
SPI クロック同期式×1チャネル クロック同期式×1チャネル
I2C フルスペック×1チャネル フルスペック×1チャネル
消費電流
(マイコン単体)
通常時(3.3V/30MHz):3.3mA
スリープ・モード:1.8mA
ディープ・スリープ:150μA
パワーダウン・モード:0.9μA
ディープ・パワーダウン:170nA
通常時(3.3V/50MHz):7mA
スリープ・モード:5mA
ディープ・スリープ:2mA
パワーダウン・モード:なし
ディープ・パワーダウン:220nA
デバッグ機能 SWD SWD
スイッチ・マトリクス あり なし
USB なし なし

LPC820評価ボードのCortex-M0+は、Cortex-M0をさらに小型、省電力するための見直しが行われた結果、M0に比べ消費電流の少なさが際立ちます。

一方、Cortex-M0のLPC111xも、低消費電力とフラッシュ大容化の方向に進化中で、比較マイコンは、第2世代LPC1100Lシリーズです。トラ技2012年10月号掲載のLPC1114は、一つ前の第1世代でした。LPC111xには、第3世代LPC1100XLシリーズやフラッシュを64KBに増加したLPC1115などのバリエーションがあります。

しかし、このシリーズの基本は、第2世代のLPC1114 LQFP48で、シリーズ最大IOピン数の48で関連情報も多く、LPCOpenライブラリもありますので、Cortex-M0テンプレートの評価ボードは第2世代LPC1114を選びました。

なお、この評価ボードの代わりに、回路図が同じLPCXpresso LPC1115を使うこともできます。この場合の注意事項はコチラを参照して下さい。

テンプレート変更項目

テンプレートのライブラリは、LPCOpen最新版V2.xxを使用しますので、Cortex-M0+とM0のARMコア差はライブラリが収集してくれるハズです。つまり、APIがそのまま使えます。すると、テンプレート移植で変更が必要な個所は、ボード比較から差がある個所で、以下となります。

項目 変更内容
CPUコア動作周波数 30MHz動作を50MHz動作へ変更
GPIO GPIOポート番号0が0~3へ増加
アナログ入力 アナログ・コンパレータからADCへ変更
タイマ SysTickTimerは、同じものを使用するので変更なし
評価ボード実装LED 3個LED出力を1個出力へ変更
評価ボードとBaseBoardの接続 BaseBoard実装SWやその他信号線の割付変更

LPC8xxテンプレートで使ったBaseBoardは、LPC111xテンプレートでも使います。従って、BaseBoardのUART入出力、アナログ入力、LCD出力、EEPROM入出力、ブザー出力等をLPC1114評価ボードに割付けます。

こう見ると、コア動作周波数を除けば、ADCやタイマなどの周辺回路が違いますので、その制御は必要ですが、殆どIO関連です。APIが同じだと1から作るのに比べ、とても楽という気がします。M0+からM0に変わっても、既存Cortex-M0+テンプレートの殆どがそのまま使えるからです。

モバイルバージョンを終了