ES9038Q2Mを動かしてみる

時々,ES9038Q2Mが載った基板(ES9038 Q2M DACデコーダー·ボード3ウェイ·スイッチング·サポート·ファイバ同軸USB入力)にLVDS to I2S基板を接続してBBGやラズパイから聴いていました.デジタルフィルタの設定だけを変えて他はデフォルトの状態でそこそこ良い音がしているので,このチップを使った基板を設計してみようかと考えています.データシートはMOUSERのサイトにありましたので設計する為の情報はありそうです.

そこで,実際に設計する前にこの基板でES9038Q2Mを動かしてみようと思います.とりあえず現状のハードウェアの構成は変えないで,音質に関わりそうなES9038Q2Mのレジスタのパラメータを変えたらどう変化するのか確かめてみようと思います.

基板の改造

まずは基板に載っているSTC 15W408AS という謎のマイコンを外してI2CのSDA,SCLとES9038Q2Mをリセットする信号だけを接続しました.STC 15W408ASを取り外すときにSDAのプルアップ抵抗につながるパターンを切ってしまい,さらにES9038Q2Mにつながるパターンも剥がれかろうじて接続されている状態になってしまったので慎重にジャンパー線をハンダ付けしてグルーガンで固定しています.画像では分かり難いですが.

画像の左側の青い基板は,先日作ったArduinoとソフトウェア互換のあるBrduinoです.ES9038Q2M基板にはレギュレータのL7808で8Vを生成しているのでこの8VをBrduinoのDCジャックに接続しています.Brduinoはこんなちょっとしたプロトタイピングには便利です.パターンの切れたSDAのプルップ抵抗をブレッドボードに接続しています.

ES9038Q2Mのレジスタ設定

ES9038Q2MをI2S経由で動かすには,System Registersレジスタ,Soft Start Configurationレジスタそして2つのVolume Controlレジスタの合計4つを設定すればOKです.以下、そのソースです.

#include <Wire.h>

#define ES9038Q 0x48
#define LED 13
#define resetES9038Q A3

void setup() {
  Wire.begin();

  Serial.begin(9600);
  pinMode(resetES9038Q, OUTPUT);

  delay(200);
  digitalWrite(resetES9038Q, HIGH); // リセット解除

  initES9038Q();  // ES9038Q2Mを初期設定
}

void loop() {
  Wire.beginTransmission(ES9038Q);
  Wire.write(64);   // Chip ID and Status レジスタを指定
  Wire.endTransmission();
  Wire.requestFrom(ES9038Q, 1);
  byte chipID = Wire.read();
  
  Serial.print("Chip ID = ");
  Serial.println(chipID);

  delay(1000);
}

void initES9038Q() {
  Wire.beginTransmission(ES9038Q);
  Wire.write(0);   // System レジスタを指定
  Wire.write(0x08); // MCLK = XI(100MHz) / 4 に設定
  Wire.endTransmission();
  
  Wire.beginTransmission(ES9038Q);
  Wire.write(14);     // Soft Start Configuration レジスタを指定
  Wire.write(0x8A);   // soft_start ビットを'1'に設定
  Wire.write(0x00);   // Volume1 レジスタを"0x00"に設定
  Wire.write(0x00);   // Volume2 レジスタを"0x00"に設定
  Wire.endTransmission();
}

setup()の中でES9038Q2Mのレジスタを設定している内容は,MCLKをXI(100MHz)の1/4に設定して,soft_startビットを’1’に設定してNormal Operationに,Volume Controlレジスタに0x00を設定して出力を0dBしています.

loop()関数ではChip ID and Statusレジスタを読んで,シリアルモニターに出力しているだけです.当初,System Registersレジスタの設定を見落として波形が出力されなかったので,Chip ID and Statusレジスタのステータスをでみたら,DPLLはロックしているけどAutomuteがかかっていることが分かってMCLKを設定してなかった事に気がつきました.

とりあえず,これだけでI2Sから入力されるPCMとDSDの再生が可能になりました.今後,レジスタの設定を変えて色々試して見たいと思います.

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク

コメント

  1. yseki118 より:

    ES9038Q2Mのボードですが、amazonのリンクがエラーになるようです。
    私も将来的にLVDS to I2Sをしようと思って、linuxcomさんと全く同じものを購入してしまいました。今、メインのボードになっています。
    で、このボードの電源ですが、iFiの電源やらYAMAHAのトランス電源等を試してみたのですが、最終的にはノートパソコン用のバッテリーに落ち着きました。人によっては電池臭い音に感じるかもしれませんが、私の家では音が激変しました。(お試しあれ)
    ES9038Q2MというとAmulechから「AL-38PD」という、亀の子型のDACが出ていますね。
    Pi4は発熱問題があるので、亀の子ではなく、別個体でPiとはケーブル接続をするという考え方もありますね。
    できたら、このDACですべてを賄ってしまえるように、同軸や光の入力端子もつけていただいて、スイッチで切り替えができるようになっていると、もうこれでオーディオ双六の上がりになるかもしれません。(例のES9038Q2Mのボードと同じになってしまいますが………)

    • ryusai より:

      コメントありがとうございます。
      amazonからこの基板が消えたようですね。ご指摘ありがとうございます。
      さて、ES9038Q2M DAC基板ですが、今考えているのはPiの亀の子ではなく別個体でのケーブル接続です。基本はLOBDASとの接続ですが基板単体でも(別途電源基板が必要ですが)動くようにするつもりです。同軸と光の入力は考えていなかったのですがやっぱり付けますかね、このチップはその機能もあるので。切り替えスイッチは基板上には付けないでケーブルで引き出せるように端子にするつもりです。
      電源は±12~15Vの両電源にしようと思います。黄色基板を±12Vを供給していますがこちらも悪くないですよ。

      • yseki118 より:

        お返事ありがとうございます。
        ES9038Q2MのDACですが、大きなシステムの一部という考えなのですね。納得です。
        そういうことなら、やっぱり同軸や光の入力はあった方が便利ですね。
        頒布を楽しみにしています。