多機能デコーダ VS1053b (9) -- VS1053b 簡易モニタ (3)

VS1053b を購入してから約1ヶ月が経過しました。
依然として、ATtiny2313 を使った簡易モニタのハード/ソフトは、あまり進展はないのですが、VS1053b の内部レジスタを参照/変更してみた結果の続編です。

  • GPIO1 を「L」に落として通常モードで立ち上げても、X data RAM の 0x1E00 の chip ID は 0x0000 のままでした。

これは、chip ID を書き込んで出荷すること「も」出来るということだと思います。
chip ID を書き込むためには工程が増えますから、すべてのチップに書き込んでいるわけではないのでしょう。

  • リアルタイム MIDI モードで、リセット時の GPIO2, GPIO3 の状態により EarSpeaker 音場処理モードの設定ができるとデータシートに記述がありますが、耳で聞いた限りでは、音場の変化はしているようです。

これは、オーディオ出力を録音して wave ファイルを作り、調べてみれば、はっきりすると思います。
EarSpeaker 処理に 12 MIPS の CPU 能力が使われるとデータシートに記述されていますが、EarSpeaker ON/OFF で、途中で停止する MIDI データの演奏に違いが生じるかどうかは、まだ試していません。 今後の課題です。

  • SCI_BASS (0x02) に値を書き込んでトレブル / ベースの強調を試してみましたが、ちゃんと機能しました。

データシートではトレブル / ベースそれぞれの処理に、2.1 MIPS / 1.2 MIPS 消費すると書いてあります。
EarSpeaker と同様に、演奏が停止するデータについては、まだ試していません。

  • データシートに記述のない、GPIO4 〜 GPIO7 まで、個別に「H」レベルにして立ち上げてみましたが、やはり、何も変化がありませんでした。

ことによったら、GPIO ピンのどれかを「H」レベルにして立ち上げたら、クロック倍率が 1.0x 以外になるんじゃないかという期待をしていましたが、外れました。

  • I2S インターフェースの、外部 DAC 用の信号は、データシートの記述にしたがって発生させることができました。

ただし、0xC017 の DDR に設定する値は 0xF3 ではなく、0xF0 のほうが良いと思います。
オシロで信号を見て確認しました。
まだ、DAC の実装はしていませんが、TDA1543 を接続してみる予定です。

  • 0xC028 からの UART は、演奏停止後も正常に動作していました。

0xC028 は UART のステータスレジスタで、RX オーバーランエラーのフラグや、RX データフルのフラグなどが割り付けられています。
演奏停止後も、RX データレジスタには MIDI データが格納され、ステータスレジスタは 0 のままです。
つまり、これは、演奏停止後も

  • UART は動作を停止していない
  • UART RX 割り込みに反応し、次のデータ到着までに RX データレジスタを読み込んでいる

ことが推測されます。
UART が動作を停止していれば、到着する MIDI データに反応しませんし、UART は動作していても、プログラムが受信処理をしなければ RXFULL フラグや RXORUN フラグが立ちっぱなしになるはずです。
つまり、これから分かることは、演奏停止後も DSP コアは停止せず、UART RX 割り込みに応答しているのではないか、ということです。
割り込みから正しく復帰しているかどうかは分かりません。 
割り込み処理終了後に、もとのアドレスに戻らず暴走しているかも知れませんが、UART RX 割り込みに応答して UART 受信処理は実行されているものと思われます。