ARM Cortex-M0+のLPC8xxテンプレートをCortex-M0テンプレートへ移植するに際し、使用評価ボードを比較し、既存テンプレートのどこに変更が必要かを把握します。
評価ボード比較
評価ボード | LPCXpresso LPC820 REV A | LPCXpresso LPC1114 REV A |
ボード写真(LPC-Link部除く) | ||
実装マイコン | 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+テンプレートの殆どがそのまま使えるからです。