/*
 * ArmUZK - Keyboard & Mouse extender UZK on LPC214x
 *   by uratan! 2008.10.7
 *     revised 2008.12.16
 */

                   

LPC2148 のピンの割り当てとペア接続方法

LPC-H2148 (ver.A046) での各種入出力ピンの割り当ては以下の通りです。

機能ピン名説明
TxD1P0.8ペアの (Arm)UZK への送信出力
RxD1/EINT3P0.9ペアの (Arm)UZK よりの受信入力および Wakeup 入力
MON_LEDP0.7モニター LED 駆動用出力
DEBUG_PORT
DEBUG_PORT2
P0.18
P0.12
DEBUG 用出力
TxD0
RxD0
P0.0
P0.1
(DEBUG 用 UART)
LPC-H2148 上の STAT_LED も MON_LED として点滅しますので、 LPC-H2148 を 2台で使用する場合には、TxD1, RxD1, GND の 3本の結線により UZK としてのフルファンクションを利用できます。
(ただしフォトカプラを使用しなければ電気的には絶縁されません。 フォトカプラで絶縁するのがやはりお勧めです)
参考回路図をこちらに置いておきます。
[2008.12.15]
  • LPC-H2148 での PINSEL2 の強制初期化を止めました。(ver.A046)
[2008.11.26]
  • 旧 P1.26 が JTAG ポートとかぶっていたためピンを変更しました。 しかし PINSEL2 を 0 に強制初期化してますので JTAG デバッグする人は 気をつけてください。(ver.A045)
[2008.11.23]
  • フォトカプラなしでの直接接続の場合、相手側の電源が入っていない 時は受けの RxD1 が不定となりノイズの影響受けまくりますね。 さりとて安易に PULL-UP なぞで逃げていいものやら…。

動作の様子

消費電力削減のため、LPC214x は CPU クロック・周辺回路クロックともに 24MHzで動作させています。CPU 単体としての処理速度は、それでも EZ-USB に 比べて かなり速いように思います。
ただし USB 関連のハードウェア構造が異なるため、システムとしての速度比較が なかなか難しく、現状「まぁ遅くはない」といったところでしょうか。

下の波形は、SET_REPORT Class Request の処理にかかる時間を測定したものです。 下が割り込みハンドラによる USB 通信の処理、上が通常プログラムでの コマンド解釈処理ほかを表します。


上の波形は Mac OS X 10.4 (Mac mini, PowerPC) をホストに測定したもの なのですが、ホストからのリアクションが立て続けに来ています。 ところが Windows2000 (VIA, EPIA-EN12000E) では、下の波形のように ホストのリアクションは間をあけて行われています。 (おそらく Frame 毎にしか リアクションしてこない) おもしろいですね。

ちなみに gDEBUG=1 に設定して uart0 からデバッグ情報を出すようにすると 各処理がうんと長くなりまして、下の波形のようになります。 一見まずいように見えますが、内部的な処理としてちゃんとホストと ハンドシェイクするようにしてあるので問題ないのです。(たぶん)

LPC-H2148 とサスペンドモード

USB サスペンドモードでは、規格上デバイスは消費電力を 500uA 以下に抑える 必要があります。しかしながら、LPC-H2148 では、以下の電力消費要素が カットできず、結果的に 15mA 程度消費してしまうようです。
(参考: オリジナルの EZ-USB ベースの UZK では 3mA でした)

・3.3Vレギュレータの抵抗分圧回路で たぶん 5mA
・PWR, USBLINK の 2つの LED で たぶん 6mA
・USB D+ PULL-UP 用トランジスタのベースドライブで たぶん 1mA
・その他
つないだまま PC をスタンバイする際はご留意ください。

下図は USB Suspend で LPC2148 が power-down モードにある状態から、 ペアの UZK よりデータが送られてきて、復帰の処理を行う際の動作です。
uart1 の start-bit により LPC2148 が水晶発信(オシレータ)の復帰を はじめます。おおよそ 630usec かかって発信が安定し、CPU が動作を再開します。 その後 2つの PLL の再設定動作におよそ 100usec かかって、 もとの処理状態にもどります。
ちなみにこの先頭の 0xff というデータはプログラムでは受信できません。


参考:EZ-USB 版 UZK の場合
(先頭バイト: HEAD_RESET に 0xff を選んだとか、通信速度に 9600bps を 選んだとか、すべてが絶妙にかみ合ってますが、 狙って作ったわけではありません、たぶん)

- * - * - * - * -



    なんと LPC-H2148 の X'TAL はソケット接続になってました


    uratan@miomio.jp
upward