[lang:ja] mbed LPC1114でMARY基板とOLED基板を使ってみる
つかいかた
CQ出版の「組み合わせ自在!超小型ARMマイコン基板」の附属基板であるところのMARYもLPC1114なので、数人の人が遊んでみてくれています。
一応OLEDはカンタンに使う事ができます。
NXPさんの公開している、次のプログラムをimportし、
Import programMARMEX_OB_oled__HelloWorld
A class library for OLED on MARMEX_OB board. MARY拡張のMARMEX_OB基板のOLEDをmbed+MAPLE基板で動かすためのライブラリです.このサンプルではMAPLEに用意されているMARMEXスロットの1番に搭載したOLEDを制御するようになっています.詳細はCode&APIからソースやAPI詳細をご覧ください
main.cpp
MARMEX_OB_oled oled1( P0_9, P0_6, P0_2, P1_8, P1_4 );
と言った具合にピンの指定を変更してやれば動きます。
あとはimportしたあとにmbedライブラリのリビジョンを新しくして、ターゲットをLPC1114としてコンパイルするだけでした。
余談ですが、LPC1114FN28以外のLPC1114で使うときには、Pほげほげ記法で書くと楽です。
実は、mbedライブラリ rev.66、つまりLPC1114に対応した時点のバージョンではクロックがPLLで逓倍されたものではなく、IRCのままを使ってしまっていました。
このコードをmbedライブラリ rev.66と共にコンパイルするとOLEDの表示にはとても長い時間を要してしまいます。
試しにSCLKにオシロを当ててみると、このような波形が出力されています。LPC1114のコアクロックよりも速いSCLKを出力させようとして、意図しない結果になってしまっていました。
rev.67
クロックなどの問題を修正したrev.67がリリースされましたが、このrev.67では今まで動いていたOLEDが動かないという報告をいただきました。
OLEDとの通信はMARMEX_OB_oled.hで次の様に定義されています。
MARMEX_OB_oled.h
SPI_FREQUENCY = 20000000
つまりSCLKを20MHzとしようとしているのですが、オシロを当てると
といった具合に20MHz以上でSCLKが出ています。20MHzはOLEDの定格ギリギリですので、これをもう少し小さい値にしてやると動くはずです。
私は5MHzや10MHzにしてみたところ、無事に動作しました。
5MHzにしてみたところ、このような波形が出力されていました。
参考資料
Please log in to post comments.