OS Xからmbedを使ってLPC1114でLチカしてみた。

投稿者:

LPC1114FN28自体は2012年から発売され、昨年、mbedのオンラインコンパイラがLPC1114に対応しました。以前、ytsuboiが簡単に紹介をしたので、今回は初心者のMacユーザー向けに解説してみようと思います。windowsでも基本は変わらないと思うので、windowsユーザーの方もこのページを参考にLPC1114を触ってみてください。

pinout_lpc1114


LPC1114は他のmbedシリーズと違いUSBポートを持っていないので、ISPでプログラムの書き込みを行います。書き込みには弊社で販売しているFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)を使用します。このマイコンの駆動電圧は3.3Vなので、アダプターのモードを間違えないように気をつけましょう。
この変換アダプターを動作させるには、搭載チップのドライバをインストールする必要があります。しかし、最新OSである10.9(Mavericks)を使っている場合は、OSにドライバが標準搭載されているので、この作業は必要ありません。

10.8(Mountain Lion)以前のOSを使っている場合は、FTDIの公式サイトからドライバをダウンロードします。
FTDIsDriver自分が使っているOSが32bitか64bitかわからない人は、Appleの公式ページに調べる方法が載っています。ダウンロードしたファイルを実行するとファイルが2つ入っています。FTDIDriverInstaller

ファイル名の末尾の数字はOS Xのバージョンを表しているので、OS Xの10.4以降を使っている人はFTDIUSVSerialDriver_10_4_10_5_10_6_10_7をインストールします。このドライバはOS X10.8以降は未保証です。自己責任で使ってください。

ISPの準備はこれで完了です。次にPCからLPC1114にデータを転送するための準備を行います。

データ転送にはlpc21ispというソフトウェアを使います。これはytsuboi氏がOS X用にビルドしたファイルがあるので、公式ページではなくLPC1114の解説ページ内のリンクよりダウンロードします。このファイルも保証がありませんので、自己責任でダウンロードしてください。lpc21ispを使うために、ターミナルを起動します。
私はDocumentディレクトリの直下にmbedディレクトリを作成して、ここにDLしてきたlpc21ispやmbedの実行ファイルなどを入れています。これより先では、これらのファイルが全て同じディレクトリにあることを前提に説明をしてきます。

/Users/(ユーザー名)/Documents/mbed/

上記のディレクトリに移動して、lpc21ispを実行するための呪文を実行します。

sudo cp lpc21isp /opt
chmod +x /opt/lpc21isp
PATH=$PATH:/opt

これで、データを転送する準備ができました。これから実際にLPC1114を動かします。

(注:最終行の[PATH=$PATH:/opt]はターミナルを立ち上げる度に実行してください。)

まず、Lチカをさせてみましょう。
ピンアウト図を見ると、LED点灯用のLED1、LED2というピンがあります。今回は接続のしやすさから、LED2を使います。プログラムの書き込みとLチカのための配線図は以下の図です。dp24をGNDに接続することでISPモードになります。プログラムを書き込んだ後は開放してください。

1114_LEDBlink

コンパイラは使用が簡単なmbedのオンラインコンパイラを使います。mbedアカウントを持っていない方はNXP社が公開しているページを参考にアカウントを作りましょう。

LPC1114を開発する際にはコンパイラ画面の右上のクリックしてLPC1114FN28用mbed LPC1114FN28用のプラットフォームを選択します。ここで別のデバイスが選択されていると、プログラムの実行ができないので注意してください。
[2014/6/6追記]platformページのリネームと写真の入れ換えが行われました。使われている写真はmbed LPC1114FN28ですが、LPC1114FN28のマイコン単体でも使えます。
platform_mbed_LPC1114FN28

Lチカプログラムはmbedデフォルトのものをピン名だけ変えて使用します。

#include "mbed.h"

DigitalOut myled(dp28);

int main() {
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

これをコンパイルして、mbedディレクトリにコピーし、プログラムを書き込む準備は終了です。回路をPCと繋ぎ、以下のコマンドを実行してからリセットボタンを押すと書き込みが開始します。

lpc21isp -bin (ファイル名) /dev/cu.usbserial-XXXXXXXX 115200 48000

このコマンドについて、少し解説をします。(ファイル名)にオンラインコンパイラから吐出されたファイル名を入れます。ファイル名に()が入っていると環境によっては実行できないので、そのときはファインダーから名前を変えましょう。また、/dev/cu.usbserial-XXXXXXXXのXの部分は端末毎に違いますので、変換アダプターとPCを接続した状態で、以下のコマンドを実行して確認してください。

ls /dev/cu.usbserial*

上記のコマンドを実行し、リセットボタンを押すとプログラムの書き込みが始まります。書き込みが終わったらdp24を開放し、リセットボタンを押してみましょう。無事にLEDが点滅すれば成功です。

次にボリュームを使って、LEDの明るさを調節してみます。ボリュームのアナログ入力をLPC1114がアナログ-デジタル変換をして、PWM信号としてLEDに出力します。

1114_ADconverter

前述の回路ではLEDはLED専用の端子に接続しましたが、この回路ではPwmOutの端子に接続します。ボリュームは1,3番をそれぞれVccとGNDに接続し、2番をAnalogInへ接続します。AnalogInを使用するときは、LPC1114のAVINとAGNDにも電源電圧を加えなくてはいけません。全部配線すると下図のようになります。

1114_LEDBlinkVolume

この配線図は動作時のものですので、書き込むときは先ほどと同じようにdp24をGNDに接続します。サンプルプログラムは以下になります。自分の使うピンに合わせて編集してお使いください。

#include "mbed.h"

PwmOut Led(dp2);
AnalogIn Speed(dp13);

int main(){
    while (1){
        Led = Speed;
        wait(0.1);
    }
}

このプログラムが成功すると、ボリュームと連動してLEDの明るさを調節できるようになります。

ソフトをインストールいなければならなかったり、少しUNIXの知識が必要だったりと、少し大変でしたが、2回目以降は必要のない作業ばかりなので、是非このマイコンで遊んでみてください。