LPC

LPC810を使ったコンソール(紹介編)

2015年1月13日

Console 810を紹介します。
2015-01-13-IMG_0766.jpg
Console 810は、NXPの8ピンdipパッケージの32ビットマイコンである、LPC810を用いた、シリアルコンソールです。次の特徴があります。

・ 英数字を横32文字、縦24文字表示する、キャラクターディスプレイ
・ NTSCビデオ信号を通じて、モニターに文字を表示
・ PS/2 キーボードを接続可
・ 9600 bpsでの、シリアル入出力を実装
・ DIP-8の石を用いた省スペース設計
・ 外付け部品は、電源・コネクター以外は、パスコンと5つの抵抗だけ
・ ライセンスはLGPL

回路図は以下の通りで、パスコンとコネクター以外は、抵抗が5つの、シンプルな構成です。
2015-01-13-schematic.png
"NTSC out"にはNTSCビデオ入力のあるモニターに、"PS/2 connector"にはPS/2キーボード(101及び106キーボードに対応)を接続して下さい。

仕様としては、シリアル入力(9600 bps)で受け取ったASCIIコード文字を、NTSCビデオ32x24文字のディスプレイに表示し、PS/2キーボードからの入力を、ASCIIコードでシリアル出力(9600 bps)します。動作テストを行なう場合は、シリアル入出力部を直接接続して下さい。こうすることにより、キー入力がそのままディスプレイに表示されます。

私のテスト環境が、下の写真です。
2015-01-13-IMG_0769.jpg
5VをUSBから得て、3.3Vを出力する3端子レギュレーターを介して、LPC810に給電しています。ZIFソケットに刺してあるDIP-8の石がLPC810です。その左のDIP-20の石はPIC18F14K50で、USB接続でFlashMagicによりLPC810にファームウェアを書き込むための物です。ですので、実質的な本体は下の写真で拡大した部分。
2015-01-13-IMG_0770.jpg

用途としては、シリアル接続を介してPCと接続することにより使用するような回路を、スタンドアローンにすることが挙げられます。実際、私がこの回路を製作した動機は、これです。例えば、これとかこんな物を、スタンドアローンにすることが出来ます。えっ?どちらもCP/Mじゃないかって?そう、これは私がCP/Mで遊ぶために作った物です。

この回路が持っているすべての機能ではなく、一部の機能だけ使うのであれば、シリアル入力のキャラクターディスプレイとして、或いは、シリアル出力のキーボードとして使うような場面もあるかも知れません。LPC810はDIP-8という小さな石なので、これら一部の機能だけ使うとしても、場所ふさぎということはないでしょう。

LPC810の機能としては、Switch Matrix, UART, SPI, SCTを用いています。技術的なメモをまとめた「技術編」の記事は、後日公開致します(追記:公開しました)。

バージョン 0.6は、ここからダウンロードできます。ライセンスはLGPLで、商用利用が可能です。

コメント

後田 (2015年5月19日 19:52:54)

最近、LPC810を触り始めた初心者です
先日やっとmbedでLチカさせた程度です

Readmeを読ませていただき、キーボード、ボーレートの変更をしてコンパイルしようと思います
コンパイルするには、何を使えばいいのでしょうか?
初歩的な質問で申し訳ありません
mbedやLPCXpressoなどいろいろなIDEがあるようなのでどれを使えばいいのかよくわかりません

後田 (2015年5月19日 19:55:47)

最近、LPC810を触り始めた初心者です
先日やっとmbedでLチカさせた程度です

Readmeを読ませていただき、キーボード、ボーレートの変更をしてコンパイルしようと思います
コンパイルするには、何を使えばいいのでしょうか?
初歩的な質問で申し訳ありません
mbedやLPCXpressoなどいろいろなIDEがあるようなのでどれを使えばいいのかよくわかりません
お暇なときにでも、お教えいただけましたら幸いです

Katsumi (2015年5月21日 18:08:34)

後田さん、こんにちは。

コンパイルには、LPCXpresso (ver 6.1.0)を用いています。このIDEに上記のダウンロードファイルを取り込んで、main.cのコメントに従ってsystem_LPC8xx.cを書き換えて下さい。

あと、readme.txtに書きましたが、config.hやuart.cを修正すれば、様々な調整が出来ます。

このプロジェクト、実は私にとって、NXPの石を用いた初めての物なんです。配布ファイルについて色々と勘違いしている部分もあるかも知れませんので、色々聞いて下さい。

Katsumi (2015年5月21日 18:12:50)

ちなみに、私がLPCXpressoをインストールしたときは、以下のweb記事を参考にしました。
http://toragi.cqpub.co.jp/tabid/440/Default.aspx

UARTで書き込みをするためのツール、Flash Magicについては、次の記事が参考になりました。
https://www.facebook.com/notes/nxpfan/lpc810-dip8_arm%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3-%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%B8%E3%81%AE%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%82%92%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%A7%E8%A1%8C%E3%81%AA%E3%81%86/302438673217226

LPCXpressoをインストールし、"Import projects"から"LPC8xx_Libraries.zip"を選択して使っています。

後田 (2015年5月23日 17:39:55)

Katsumiさま
早速のご連絡ありがとうございます。

お恥ずかしながら、まだコンパイル出来ておりません
キーボードを106へ
シリアルを115200bpsへ
それぞれ変更しました
当初は、”LPC8xx.h”が見つからないというエラーに悩みましたが無事にエラーなしにコンパイルできるようになりました
しかし、問題点があります

「console.hex」が出きるのですが,約4kバイトとなってしまい、配布いただいている9.4Kバイトに比べかなり小さくなってしまいました
当たり前なのですが9.4Kのものは画面表示、シリアルからの入力(キーボードは書き換えていないので試しておりません)の動作確認をさせていただきました
おそらく失敗した、4Kバイトのものでは画面表示など出来ません

まだまだ、当方の環境設定が違うのだと思います

また、お暇な時で結構ですのでLPCXpressoからFile-Exportで出力されたアーカイブのご提供をお願いできませんでしょうか?
当方が新規プロジェクトの作成のところが違うのが原因ではないかと思っております

Katsumi (2015年5月24日 16:34:17)

LPCXpressoで新規ワークスペースを作成して、ダウンロードファイルを用いてどの様にビルドできるか、試してみました。以下、私が行なった方法です。

1) File->Switch Workspace->Otherを選択し、新規に作成したフォルダ(私の場合は、newptest)を選択
2) Import Projects(鍵穴のマークのアイコン)をクリックし、CMSIS_COREフォルダ内のCMSIS_CORE_Latest.zipを選択
3) "CMSIS_CORE_LPC8xx"だけにチェックを入れた状態し、"Finish"をクリック
4) New Project
5) LPCXpresso C Project
6) LPC8xx/C Project
7) Project nameにconsoleを指定
8) LPC810を選択
9) CMSIS_CORE_LPC8xx, none, noneを選択
10) "Enable..."のチェックを外して、Next
11) "Enable..."のチェックを外して、Finish
12) console/srcを、ダウンロードzipファイルのsrcと入れ替える
13) main.cを開き、"Copy and paste following lines to system_LPC8xx.c"と書かれているコメント部分を探す
14) 当該コメント部分、"#define ..."の行(7行)をコピー(Ctrl + C)
15) system_LPC8xx.cを開き、110行目あたりの"#define ..."7行分を選択状態にし、ペースト(Ctrl + V)
16) Project->Properties->C/C++ Build->Setting->Build Stepsを選択し、"Command:"の先頭に、"arm-none-eabi-objcopy -O ihex "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.hex"; "を追加
17) system_LPC8xx.cを選択状態にし、Release build
18) main.cを選択状態にし、Release build

これで、以前に作成した物と同じ内容のhexファイルが作成されました。

後田 (2015年5月25日 05:28:34)

ありがとうございます
なんとか、コンパイルすることができました。
初心者の私の為に何度もお手数をお掛けして申し訳ございませんでした。

とても汎用性の有るツールですのでいろいろなものに活用させていただこうと思います。
私にどれだけ理解できるか判りませんが、今後ソースを拝見させていただき自分なりに変更できる項目を探していこうと思います。

重ね重ねではございますが本当に有難うございました

後田 (2015年5月25日 05:46:44)

ありがとうございます
なんとか、コンパイルすることができました。
初心者の私の為に何度もお手数をお掛けして申し訳ございませんでした。

とても汎用性の有るツールですのでいろいろなものに活用させていただこうと思います。
私にどれだけ理解できるか判りませんが、今後ソースを拝見させていただき自分なりに変更できる項目を探していこうと思います。

重ね重ねではございますが本当に有難うございました

Katsumi (2015年5月25日 18:39:34)

後田さん

うまく行ったようで、良かったです。今後とも、よろしくお願いします。

kodera2t (2015年6月13日 19:21:56)

以下のサイトで紹介させていただきました
https://hackaday.io/project/6024-wonderful-lpc810-single-chip-serial-console

ともかくすごいと思います。LPC810を活用しようコンテストなんてものがあれば間違いなく優勝する逸品だと思います。コード公開ありがとうございます

Katsumi (2015年6月14日 13:32:14)

kodera2tさん

紹介をどうも有り難うございます。思いがけない評価を頂いて、嬉しいです。今後とも、どうぞよろしくお願いします。

後田 (2015年6月15日 03:38:35)

遅ればせながら報告させていただきます

IchigoJamというワンボードマイコンのファンページにてご紹介させていただきました
キーボードを106にフォントをIchigoJamのものに変更したものを再配布させていただきました

グループに申請していただかないと見れないと思いますがリンクを残させていただきます

https://www.facebook.com/groups/ichigojam/584717038334720/

私も非常に便利で汎用性の高い素晴らしいツールだと思っております
いろいろとお世話になりありがとうございます

コメント送信