ROM Emulator(2)

製作

通信フォーマット

HID通信を行うわけですが、通信内容のフォーマットを作ります。それなりに、USB自体通信自体の信頼性が高い?はずなので、不要そうですがチェックサムをつけました。

Host->Device

データアドレス略語内容データ
00PREABMLEプリアンブル つけてみた
0xAA固定
0xAA
01CMDコマンド00:NONE
01:CPU RST
02:CPU RUN
03:READ STATE
04:WRITE MODE
02BYTE NUMWRITE:DATA部のデータ数 最大 58byte
READ:読み出しBYTE数
0x3A-0x00
0x00-0xFF
03ADDR 下位アドレスの設定(下位)0xFF-0x00
04ADDR 上位アドレスの設定(上位 7bit有効)0x7F-0x00
05-3EDATAデータ[06-3E]
リード時はダミー
0xFF-0x00
3FCHECK SUMデータ部合計値 + 10xFF-0x00

Device->Host

データアドレス略語内容データ
00PREABMLEプリアンブル つけてみた
0x55固定
0x55
01STATEDEVICE 状態
上位4bit RST/RUN 状態
下位4bit 動作モード
X0:NONE
X3:READ STATE
X4:WRITE MODE
X5:READ MODE
X6:BUSY

0X:RST
2X:RUN
02BYTE NUMDATA部のデータ数 最大 58byte0x3A-0x00
04ADDR 下位アドレスのオフセット(下位)0xFF-0x00
05ADDR 上位アドレスのオフセット(上位 7bit有効)0x7F-0x00
05-3EDATAデータ[06-3E]
ライト時はダミー
0xFF-0x00
3FCHECK SUMデータ部の合値 + 10xFF-0x00

こんな感じで設計してみました。問題ないといいですけど、適宜内容は変えるかもですね。

アプリケーション

PC側のアプリケーションは手間をかけたくないので、pythonで作ります。

以下の参考サイトがあったので、助かりました。

PythonでUSB HIDデバイスに接続
USBデバイスと64 byteのパケット通信をして、受信した64 byteをshellウィンドウに表示します。…

https://krr910183393.wordpress.com/2021/08/01/python-tkinter-usb-hid-host-application/sn

GUIの画面はWxFormBuilderでちょちょいと作ります。

PythonでGUI(WxFormBuilder) - Qiita
PythonのGUI作成ツールは色々ありますが、ライセンス的に使いやすいWxPythonを使うことが多いです。しかしコードを直接記述する方法は時間が非常にかかるためオススメ出来ません。WxFo…

画面はこんな感じ。

PICKIT2っぽいですな。なんか似てしまった。

USB接続してCONNECTをクリックすると右上に出ます。

続きますー

コメント

タイトルとURLをコピーしました