YAMAHA QY20のデータバックアップ回路(4)「I2Cは闇だ! リモートデバッグ、ロジアナ必須!!」

2022/08/29

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

 前回の記録から、2日経っています。


MIDI-IFの送信処理を行うにも、送信するデータを作るのが面倒なので、先に、MIDIデータをEEPROMに読み書きする処理を作ることにしました。


同時に、MIDI-I/FのUART受信(送信)しながら、EEPROMへのI2C書き込み(読み出し)という並行処理の処理フローも考えることにします。それぞれの処理が出来上がってから、フローを変えるのは二度手間なので。


前回述べたように、EEPROMを512Kbits(64KBytes)から1024Kbits(128KBytes)に変えることにしました。EEPROMへの読み書きには、スタートアドレスを送るのですが、アドレスビットを見ていて、あれれ、、、、と気づきました。私の使う予定のEEPRMシリーズは、ハードの信号線3つと内部の16ビットアドレス指定です。

そのため、3つの信号線を、VSSに落としています。しかし、1024Kbitsでは、16ビットのアドレスで指定できないので、3つの信号線のうち、1つをソフト制御する仕様のようです(互換性のため、アドレスデータをさらに1バイト拡張なんてやっていない。。)。

そのため、、、、

だって。A2ピンをVSSに落としているのを、VCCに付け替えるのですが、Pin1~Pin4がVSSに落としてあるのを、Pin3だけ、VCCに変えるのは結構面倒でした。


ハード修正後、ソフトに取り掛かります。既存プログラムを探したところ、EEPROM制御したのは、H8/3694であり、PICでは作ったことがなく、I2Cによるセンサーモジュール制御のソフトだけありました。

まぁ、I2C通信制御が肝なので、EEPROMとのプロトコル処理は、なんとかなるでしょう。ということで、まずは、I2C通信制御のプログラムを再利用しました。

ところが、全然、通信できません。LED表示だけのデバッグは無理なので、こうなったら、ロジックアナライザか、MPLABを使ったリモートデバッグですね。PICのI2Cモジュール制御がうまくいっていないので、リモートデバッグで作業開始です。


I2Cのスタート信号が完了していません。ググっても手順は間違っていないのに、なぜか動きません。PICのチップ不良まで疑いましたが、何のことない、初期化プログラムが動いていなかっただけでした。このために、4時間くらい、無駄にしました。


次の問題はEEPROMからACKが返ってこない。。。現在、ココでハマっています。EEPROMがアドレスを認識できていない可能性が大きいのですが、そろそろロジアナの出番でしょうか。。。ロジアナといっても、1000円もしない怪しいモノですが、10MHz位までは計測できます。


前回からここまでで、15時間くらいかけているでしょうか。。。







QooQ