MZ-2500のキーボードの通信プロトコル

通信プロトコル

RTSN, KD4, MPXは本体側からの出力信号です。KD[3:0]は本体⇔キーボードの双方向の信号です。

1周期は約1.2usくらいです。厳密ではなく変動します。
RTSN=Hのときは、本体側がKD[3:0]をドライブし、キーマトリクスのRowを出力します。RTSNの立ち上がり時にはKD[4:0]はまだ確定していません。
RTSN=Lのときは、キーボード側がKD[3:0]をドライブし、キーマトリクスのデータを出力します。MPX=Hのときは上位4ビット、MPX=Lのときは下位4ビットを出力します。
KD4=Hのときは、キーマトリクスのRowで指定した列のキーデータを出力します。KD4=Lのときは、キーマトリクスの全RowのキーデータをANDした結果を出力します。

ソフトウェアからI/OポートE8hを変更すると、RTSN=Hの期間中にKD[4:0]が変化し、続くRTSN=Lの期間も短くなるという謎の挙動を見せます。これではキーボード側は正しいデータを返せませんが、このときに返したデータはどうも捨てられるようなので、気にしなくてよいようです。


USBキーボードアダプタ

STM32F401RE-NUCLEOボード版 / Raspberry Pi Pico版

USBキーボードアダプタ (Raspberry Pi Pico版)

STM32F401RE-NUCLEOボードが入手困難になってしまったため、Raspberry Pi Picoでも作ってみました。基本的にはNUCLEO版と同じく74HC257でインタフェースしていますが、Picoは5Vトレラントではないので、Picoに入れる信号については74LVC244を追加してバッファしています。ここは5Vトレラントのバッファなら74LVC244でなくても何でもよいです。

USB-Aのキーボードは、USB OTGケーブルを介してPicoのUSB micro-B端子に接続します。PicoのTP2, TP3にUSBの信号が来ていますので、USB-Aコネクタを追加して接続するのもよいでしょう。(USB-A, micro-Bを同時に接続しないように注意)

MZ-2500に接続するケーブルに関する注意点はNUCLEO版と同じです。

回路図

ファームウェア

 v0.1 とりあえず動いたバージョン Download

ファームウェア書き込み方法

  1. Raspberry Pi Picoに USB-A to microB ケーブルを接続し、Picoの基板上のボタンを押しながらPCに接続する
  2. Picoのフォルダが開くので、その中にファームウェア(*.uf2)をドラッグ&ドロップする
  3. PicoをPCから外す
※書き込むときはアダプタをMZから外してください。

USBキーボードアダプタ (STM32F40RE-NUCULEO版)

STM32F401RE-NUCLEOボードを使ったUSBキーボードアダプタを作ってみました。追加する部品は、コネクタ類の他には 74HC257 が1個だけです。

MZ-2500 (2511/2521/2531) のキーボードコネクタはMini-DIN 8ピンコネクタですが、コネクタを挿す本体側の穴が狭いため、注意が必要です。組み立て式のMini-DIN 8ピンコネクタの場合は外側にかぶせるカバーを装着してしまうと入りません。既存のMini-DIN 8ピンコネクタケーブルを利用する場合は、モールドが細めのものでないと入りません。また、フレームGNDが信号線のGNDとして使われているため、全結線かつシールド有りのケーブルでないと使えません。条件を満たして入手しやすいものにはサンワサプライのKPU-MAC5Nがありますが、結構お高めです。

キーボードアダプタ動作時はMZからの電源供給で動くため、STM32F401RE-NUCLEOボード上のジャンパJP5を E5V 側に切り替えます。

日本語109キーボードに対応しています。キーはだいたい同じ名前のキーに適当に割り当てています。特殊なものは以下の表のように割り当てています。
日本語109キーボードのキーMZ-2500キーボードのキー
全角/半角ESC
CapsLockLOCK
F11HELP
F12BREAK
PrintScreenCOPY
PauseBREAK
HomeCLR HOME
DelINST DEL
Page Downテンキーの ,
Windowsアルゴキー
Menuアルゴキー
ひらがな/カタカナカナ
AltGRAPH

限られたキーボードでしか動作確認できていないので、動かないキーボードもあるかもしれません。USB Hub付きのキーボードや、内部的にHubを通して接続されているキーボードなどは動作しません。
動作確認済み動作せず
サンワサプライ SKB-SL08W
サンワサプライ SKB-L1UBK
ELECOM TK-FCM062
ELECOM TK-FCM077PBK
DELL SK-8185
Lenovo SK-8825
Lenovo LXH-EKB-10YA
FILCO FKB108M/JB
Tai-Hao F21-WE45
Lenovo SK-8805 (※USB Hub付きキーボード)
Lenovo KUF0452 (※内部USB Hub接続)

回路図

ファームウェア

 v0.3 一部のキーボードで [む] キーの入力ができなかったバグを修正 Download
 v0.2 [F1]〜[F8]を押すとキー入力ができなくなるバグを修正
 v0.1 とりあえず動いたバージョン

ファームウェア書き込み方法

  1. STM32CubeProgrammerをダウンロード
  2. STM32F401RE-NUCLEOボードをPCにUSBで接続し、STM32CubeProgrammerを実行
  3. ウィンドウ右上のボタンで"ST-Link"を選択し、"Connect"を押す
  4. ウィンドウ左のメニューから"Erasing & Programming"を選択
  5. "File programming" の "Browse" ボタンを押して、書き込むファイルを選択
  6. "Programming options" の "Verify programming" と "Run after programming" をチェック
  7. ウインドウの下の方にある "Start Programming" を押して書き込み開始
  8. 終了したら "Disconnect" を押してPCからボードを取り外す
※書き込むときはアダプタをMZから外して、NUCLEOボードのジャンパJP5を U5V 側に戻してください。
戻る