Cortex-M0+の超小型開発環境! トランジスタ技術付録の LPC810 を

Cortex-M0+の超小型開発環境!
トランジスタ技術付録の LPC810 を手軽に動かす
LPC810 は、8 ピン DIP の Cortex-M0+マイコンで、CQ 出版社のトランジスタ技術 2 月号の付録として手
軽に入手できます。さらに 3 月号にはトラ技 ARM ライタが付属しており LPC810 に直結してデバッグが
できます。早速、IAR Embedded Workbench for ARM (EWARM)を使って試してみました。
配線は簡単
LPC810 からは、SWD 接続用の端子が出ています。これらの信号をトラ技 ARM ライタにつなぎ、さらにト
ラ技 ARM ライタから供給される 3.3V 電源を LPC810 に供給します。今回は、小型ブレッドボードを用い
て下図のように配線しました。これで 5cm×6cm の超小型開発ボードのできあがりです。
5cm
LED (抵抗入り)
トラ技ARMライタ
6cm
LPC810
1
GND
SWDIO
VDD
(3.3V出力)
SWCLK
nRESET
トラ技 ARM ライタは、ファームを入れ替えることで CMSIS-DAP デバッガに早変わり
トラ技 ARM ライタを最初に PC につなぐと、USB メモリと認識され、内蔵のファームウェアがファイル
としてアクセスできます。デバッガとして使うには、CQ 出版社の web ページから「トラ技 ARM ライタ
基板を CMSIS-DAP(デバッガ)として使うときのファームウェア」をダウンロードし、もとからあるフ
ァームウェアと置き換えます。その後、トラ技 ARM ライタをリセットすれば、デバッガとして機能しま
す。
Page 2
EWARM でプログラムを開発・デバッグする
EWARM は、CMSIS-DAP (Cortex マイクロコントローラ ソフトウェア インタフェース規格 - デバッグ
アクセス ポート)に対応しており、これを選択することで LPC810 のデバッグができます。
LED を点滅させる C 言語プログラムを記述し、GUI 上のボタンを 1 つクリックすることで、コンパイル
から LPC810 の内蔵フラッシュへダウンロードするまでの一連の作業が実行されます。プログラム通り
に LED が点滅し始めました。
LPC810
トラ技 ARM ライタ
Page 3
ソースコード解説
まず最初に、LPC810 の各種レジスタを C 言語からアクセスしやすくするためのヘッダーファイルをイ
ンクルードします。
#include "LPC8xx.h"
LPC810 内蔵のペリフェラルのうち、使用するもののみにクロックを供給するための指定をする関数を
用意します。
void clock_init()
{
//GPIO clock=ON, switch matrix clock=ON
LPC_SYSCON->SYSAHBCLKCTRL |= 0x000000c0;
}
LED の点灯を制御する GPIO のポートの設定を行う関数を用意します。
void led_init()
{
//GPIO direction=output
LPC_GPIO_PORT->DIR0 |= 0x00000003;
//clear GPIO pin0,1
LPC_GPIO_PORT->CLR0 |= 0x00000003;
}
指定したポートの LED を ON/OFF する関数を用意します。
void led_on(int ch)
{
switch(ch) {
case 0:
LPC_GPIO_PORT->SET0 |= 0x00000001;
break;
case 1:
LPC_GPIO_PORT->SET0 |= 0x00000002;
break;
}
}
void led_off(int ch)
{
switch(ch) {
case 0:
LPC_GPIO_PORT->CLR0 |= 0x00000001;
break;
case 1:
LPC_GPIO_PORT->CLR0 |= 0x00000002;
break;
}
}
空ループを回して遅延を与える関数を用意します。
void delay(int n)
{
volatile int i;
for(i=0; i<100000*n; i++) { }
}
Page 4
最後に、メイン関数を記述します。
用意した初期化関数を呼出し後、while 文で記述した無限ループの中で、変数 n を毎回カウントアップ
しながら、n の下位 2bit に合わせて LED を点灯/消灯し、遅延をおく、という動作を繰り返します。
int main()
{
int n = 0;
clock_init();
led_init();
while(1) {
if( (n & 0x01) != 0) led_on(0);
else led_off(0);
if( (n & 0x02) != 0) led_on(1);
else led_off(1);
n++;
delay(4);
}
return 0;
}
I-jet を使う
弊社インサーキットデバッグプローブ I-jet でももちろんデバッグできます。I-jet は、オンチップデ
バッグに加え、パワーデバッグ(消費電流解析)の機能もあり、LPC810 を使った開発に適しています。
結論
NXP LPC810 + IAR Embedded Workbench for ARM は、Cortex-M0+ の開発に最適な組み合わせです。
LPC810 を用いた開発には、是非、IAR 社の Embedded Workbench をご活用ください。