YAMAHA QY20のデータバックアップ回路(3)「バルクデータのサイズを間違えていた!!」

2022/08/27

YAMAHA QY20 バックアップツール 電子回路

MIDI-I/Fの受信部(31,250bps、8N1の非同期通信処理)を作成します。

RS232C通信は、何度も作っているので、大まかな手順はわかっており、数時間でできると予測していました。しかし、これも毎度のことながら、通信速度の設定が面倒です。

今回は、内部カウンタが8bit/16bitの利用と、クロックの分周設定がレジスタで直接設定するのでなく、パラメータ設定によって、変わるというのがわかりにくさ。BRG16とBRGHの2つのビット設定によって、決まります。この分周をもとに、31250bpsのカウンタを計算します。31250bpsで受信できるようになりましたが、連続受信するとオーバランエラーが発生しました。連続受信可否のビット(CREN)を0にすると、受信そのものが止まります。ビット名と処理内容が一致していないような。。。


この対策で試行錯誤して3時間ほど費やしました。最終的に何も対策しなかったのですが、オーバーランエラーは発生しなくなりました。オーバーランしたときの復帰処理は入れていありますが、動作したことはなさそうです。


受信データを表示できないので、受信データ数や最終データだけビット表示させるなどして、受信が正しくできていることは確認できました。


PC版では、データリストア時にQY20がチェックサムエラーを表示しているので、データフォーマットとチェックサムの計算方法を確認。QY20の取説に、バルクデータのフォーマットが書かれているのですが、細かいところは記載されておらず、結局、わかりませんでした。


分かったことは、 QY20のデータメモリが、約128KBytesであることがわかりました。すなわち、使う予定だった64Kbytes(512Kbits)のEEPROMでは足りない。8種類を書き込む得る予定(1回に8KBytes想定)でしたが、これじゃ、1Mbits(128Kbytes)のEEPROM に1つしか書けません。まぁ、仕方がないので、その仕様に変更です。


せっかく、ページ選択ボタン処理や表示処理を作ったのに、ほとんど意味がなくありました。7SegLEDを使った処理モード表示を充実させます。


今日、やったのは、

  • MIDI-I/F受信部の完成
  • 内部の状態遷移の整理(ページ切り替え、実行モード、処理中モード)
  • 各状態における禁止動作の処理
  • 受信処理のデバッグ・テスト表示

 で、7時間程度です。

QooQ