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 をご活用ください。
© Copyright 2024