LPC

LPC810を使ってみた。

2013年12月8日

NXP セミコンダクターのLPC810は、32ビットのARM Cortex-M0+を搭載しながらも、DIP-8パッケージという、一風変わった石である。小規模の回路を作成するのに面白そうなので、使ってみようと思う。一つ前の記事でも紹介したが、SCT(State Configurable Timer)という、高機能なPWMが面白そうである。

以前から興味を持っていたのだが、各種ディーラーでも、NXPでも在庫が無い状況がずっと続いていたが、近日入荷されたので、早速購入してみた。

2013-12-08-IMG_0390s.jpgDigi-Keyから、5個購入した。
2013-12-08-IMG_0391s.jpg2013-12-08-IMG_0392s.jpg


LPC812-LPCXpresso Board等を使うと石へのプログラムの書き込みだけでなくデバッグも出来るようである(参考)。他方、シリアルインターフェースを用いてのプログラムの書き込み方法が、紹介されている(参考)。8ピンの石でデバッグも何もないだろうと考えたので、LPCXpressoを購入する前に、まずシリアルでの書き込みからやってみることにした。気に入れば、LPC812なども今後使うだろうし、その時にLPCXpressoを買えばいい。

手元にPIC18F14K50と12 MHzの水晶、16ピンのZIFソケットなどがあったので、LPC810専用の書き込み機を作成。
2013-12-08-IMG_0394s.jpg
PIC18F14K50は、USBをシリアルインターフェースに変換するだけの簡単な動作。プログラムは誰か公開しているだろうとGoogle検索すると、こちらのページで見つけたので、使わせて頂いた。回路は簡単な物で、18F14K50とLPC810との間を100 Ωの抵抗で接続し、3.3 Vの定電圧電源をスイッチを介して繋げてあるだけなので、回路図は割愛。

開発環境は、LPCXpresso IDEを利用した。インストールやアクティべーションなどについては、こちらを参照。石への書き込みは、FLash Magicを用いている。Flash Magicを利用する場合はhexファイルが必要であるが、こちらのサイトを参考にして、ビルドする際にhexファイルも同時に作成されるようにしておくと便利である。なお、リンク先のページでは「arm-none-eabi-objcopy -O ihex "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.hex"; 」を最後に追加するように説明しているが、私の環境では、最後ではなく最初に追加しないと、hexファイルが作成されなかった。

あちらこちらで紹介されているLEDブリンキング(Lチカ)プログラムは、タイマーと割り込みなどを使った少し複雑な物がほとんどであったので、もう少しprimitiveな物を作成してみた。

LPCXpresso IDEの操作方法としては、

 1)空のworkspaceを作成。
 2)"Import project(s)"で、CMSIS_CORE_LPC8xxをインポート。
 3)"New project..."で、LPC810用の新規プロジェクトを、"C project"として作成(CRP (Code Read Protect)とMTB(Micro Trace Buffer)は使用しない設定で)。
 4)crp.cとmtb.cは使用しないので削除。
 5)main.cを編集。
 6)"Release"でビルド。

の順で行なった。main.cのソースコードは、次の通り。
#ifdef __USE_CMSIS
#include "LPC8xx.h"
#endif

#include <cr_section_macros.h>

int main(void) {

    LPC_GPIO_PORT->DIR0 |= (1<<0); // PIO0_0: output

    // Force the counter to be placed into memory
    volatile static int i = 0 ;
    // Enter an infinite loop, just incrementing a counter
    while(1) {
        for (i=0;i<100000;i++);
        LPC_GPIO_PORT->NOT0 = 1<<0; // Toggle PIO0_0
    }
    return 0 ;
}

Flash Magicで石への書き込みを行なって実行すると、次のように。


うまく行った。色々遊べそうである。

なお、LPC8xxでのプログラミングについては、tomo_watanabeさんのブログ、「人と技術のマッシュアップ」の「LPCXpressoとLPC800-MAXでマイコンを学ぶ」というシリーズが詳しく、色々と参考になる。

コメント

コメントはありません

コメント送信