先週、バス海賊ユニバーサルシリアルインタフェースツールの新しいバージョンを導入しました。最後のファームウェアアップデートでは、両方のハードウェアバージョンのATキーボードデコーダライブラリが含まれていました。
埋め立て地への道を作るキーボードには古い老人があります。次のプロジェクトの入力装置として1つをリサイクルする方法について説明します。
繋がり
バス海賊
キーボードのPC(PIN#)
SDA.
KBDデータ(3)
SCL
KBDクロック(1)
+ 5ボルト
VDD(5)
g
GND(2)
キーボードでは双方向の2線式インタフェースを介して通信します。バスはオープンコレクタですが、キーボードはすでに内部プルアップ抵抗を持っています。キーボードプロトコルのPCについて説明します。私達は私達のバス海賊ツールを使ってキーボードプロトコルを実証しましたが、同じ基本原盤があらゆるマイクロコントローラに適用されます。
表の説明に従ってバス海賊をキーボードに接続しました。これはキーボードジャックの貫通穴の女性であると信じていますが、それを評価していません。あなたは新しいソケットのためのソースを知っていますか?
プロトコル
キーボードはすべてのデータ転送のクロック信号を提供します。 PC側はスレーブ装置に似ています。既存のバス海賊インターフェイスライブラリのどれも外部クロックで機能しないので、キーボードデコーダライブラリで簡単に書きました。ライブラリはキーボードのクロック信号によって異なります。キーボードが失敗した場合、または接続されていない場合はハングアップします。独自のプロジェクトでライブラリを使用する場合は、READBIT()およびRORTEBIT()関数でタイムアウト遅延を追加することを検討してください。
キーボードコマンドコードからPCへ
コード
指示
0xed.
ステータスLEDを設定します
0xee.
エコー0xee.
0xF0
Scancode Typeを設定します
0xF3
繰り返し率を設定します
0xF4
キーボードイネーブル
0xF5
キーボードの無効
0xFe.
最後のバイトを再送信します
0xFF.
キーボードをリセットします
PCはこれらのコマンドを使用して、ATキーボードのさまざまな機能を制御します。キーボードは、アクノリッジバイト(OXFA)を持つコマンドに応答します。私たちの経験では、コマンドが送信された直後に反応バイトが読み込まれない場合、キーボードはリセットされます。
PC反応コードへのキーボード
コード
応答
0xFA.
認めます
0xaa.
セルフテストが合格しました
0xee.
エコー応答
0xFe.
最後のバイトを再送信します
0x00または0xFF
エラーまたはバッファオーバーフロー
キーボードには、いくつかの単一バイト反応コードがあります。多くのPCコマンドは0xFAで認識されます。 0xaaはキーボードリセット後に送信されます。
バス海賊を設定します
Hiz> M.
1.ホイズ
…
キーボードで9. PC
モード> 9 <-SETモード
900モードセット
X02 KBデコーダの準備完了
キーボードのPC>
まず、キーボードモード、オプション9のバス海賊を設定します。
キーボードのPC> P <電力供給の設定 w / wは3.3ボルトの供給を切り替えますか? いいえ 2. モード> 1 <-NO 3.3VOLT電源 w / wは5ボルト電源を切り替えますか? いいえ 2. モード> 2 <5ボルト電源を使用してください 9xxの電源が設定されている、w / wをトグルに使用します 9xx電圧モニタ:5V:0.0 | 3.3V:0.0 | vpullup:0.0 | キーボードのPC> W <キャピタル 'W'、電源投入 9xx 5ボルトの供給 キーボードのPC>
次に、BUS Pirateの電源装置をATキーボード用に5ボルトを提供します。
キーボードのPC> R <-READ BYTEからキーボードのバイト X30 PCATKB読み取り:なし<-NOデータ利用可能なデータ キーボードのPC>
AT Keyboardライブラリは、標準バス海賊の構文に従います。数値はキーボードにバイトに送信されます。 ‘R’はキーボードからバイトを読み取ります。プロトコルはキーボードによってクロックされているのでビットごとの操作は無効になります。データがない場合は、読み取りは「なし」を返します。
キーボードを設定します
キーボードのPC> 0xee R <-SEND 0xee、1バイトを読む X20 PCATKB WRITE:0xee GOT ACK