EEPROMからの読み出しができるようになったので、読み出しロジックを完成させます。
読み出し部分は、バッファの関係で32バイトづつ、読み取ります。
色々、細かいバグはありましたが、リモートデバッグで1つ1つつ検出、修正。
- RCENは、受信リクエストごとに行う必要あり。これがないとクロックが出ない。
- 32バイトづつ読み込むのに、読み込みカウンタを1つづつしか増やしていない。
- などなど
読み取りのフローは、完成しました。2度読みとか読み飛ばしがないかの単体テストも確認。大大量データでの割り込みタイミングやバッファオーバフローを含めたテストは、通しテストで行うことにします。
最後の段階のQY20へのバルクデータ送信処理に入ります。
転送速度はMIDI-IF仕様の31250bpsですが、QY20自体がその速度で受信し続けることができないので、ウェイトが必要です。今回、32バイトづつ、EEPROMから読みだすので、その単位ごとにウェイトを入れれば、問題なさそう。高速な転送は不要ですし、他の機能との並行処理もないので、割り込み処理は使わずに32バイト分を送信用のレジスタの空きをチェックしながら、ループ処理で送ることにします。
この単純な形なので、30分位で、送信部は完成。
テストは、38400bpsに変えて、EEPROM読み出しして、PCにデータ送信させます。TERATERMで受信データをバイナリ表示させながら、I2Cのパルスと比較して、読み出しデータとの一致を確認。合っているので、読み出し部から送信部までは処理フローとしては正しく動いています。32バイト単位での読み取り、128バイトのページ処理も問題なし。
これで、
QY20 → バルクデータ → EEPROM
EEPROM → バルクデータ → QY20の代わり(チェック用のPCアプリ)
まで完成。
この後、バルクデータが壊れていないか、チェックしていきます。
前回からここまでで、2時間+α、かかっています。結構、早くできました。