ES9218Pを動かしてみる! 2019.9.24

いままでの取り組みはこちら。

 向こうのページはAK4499に譲るとして、こちらではES9218Pについて取り扱っていきたいと思います。

おもむろに再開、え?

無性に半田ごてを握りたくなって、そういえばES9218Pも変換基板もあったな〜と思い出して、
組み立ててみることにしました。

変換基板はなかなかQFP40のものがなくて、AMZONにあるのを見つけて購入したものです。
中華からの直送なので結構な時間がかかりましたが、かなり安かったです。

で、その変換基板の上にES9218Pを並べてみると、微妙な違和感が・・・・・
あれ? なんとなく変換基板のサイズが大きい?
いやチップサイズが小さい?

実際に基板にのせてみると、パッケージの端子が基板のパッドに届きません。
「げ、基板は不良品か?」 
とおもいましたが、側面から眺めてみると、ICの端子の間隔と基板のピッチがずれています。


変換基板とES9218Pを並べてみると・・・何か違和感。

あ、0.4mmピッチじゃん!

あらためて、ES9218Pのデータシートを眺めてみると、ICのリードピッチは0.4mmになっています。
てっきり0.5mmピッチのQFN40と思い込んでいました・・・・ああ、折角やる気満々だったのに・・・・
腰を折られるな〜。

そういえば・・・・

すこし昔にCS43198を試してみようとして、0.4mmの変換基板がなくて作ったことを思い出しました。
結局CS43198もまだ手をつけていませんが、その変換基板がつかえるかも・・・と部品箱をごそごそ。

見つかりました!で、基板をみて40ピン用なのでピッタシです。ををを!ラッキー!
これでいきましょう。

ただ、CS43198用にすでにGNDパターンを接続しているところがあるので、それは事前に削除しておきます。

しかし、この変換基板がつかえたのなら最初から不要な0.5mmピッチの変換基板を買う必要なかった〜と。
ちょっとブチブチ・・・・です。


すこし昔にCS43198用に作った変換基板がつかえそうです。

はじめての0.4mmピッチの半田付け

0.4mmピッチの半田付けは初めてです。でも、結果的には0.5mmピッチと大きく異なることはありません。
私のやり方は次の通りです。

@変換基板にフラクスを多めに塗る。

A変換基板にICをのせる。
B位置あわせを行う。

  この位置あわせがもっとも時間がかかります。でも、ここで手を抜くと取り返しがつきません。
  じっくり時間をかけているうちにフラクスが乾いてきて、適度な粘性を持ってくるのでICの固定がしやすくなります。
  ここが味噌です。乾いた基板の上にICをのせると、ちょっとした基板の振動や傾きでICがずれてしまいます。
C1ピンだけ半田付け
  どのピンでもいいのですが、1ピンのみ半田づけです。このとき半田ゴテは決してICに触れないようにします。
 すこしでも触れればICが動いてしまいます。半田ゴテは基板のランドパターンの端にあてて、半田を離れたところから
 とかして、ランド上の半田の流れにまかせてICの1ピンを半田づけします。1ピンが半田づけできれば、固定もできるので
 対角にあるピンも同じようにして半田づけして固定を確実なものにします。
Dフラクスをタップリぬって残りを半田付け。
Eアルコールをつけた綿棒で掃除

 フラクスがべったり残った状態だと汚いので、綺麗に掃除しておきます。



こんな感じで変換基板にとりつきました。

ブレッドボードに組み立てよう!
さて、変換基板にとりついたのであとは動作させるためにブレッドボードに組み込んでいきたいと思います。
その前に、変換基板の形状が変則的(DIPになっていない)ので、
回路図だけをみながら部品をとりつけると間違える可能性もあるので、事前に実体配線図(?)を描いておきます。
これを見ながら配線すれば、間違いも少なくなります。


まずは実体配線図もどきを描いておきます。これを書くとミスもすくなくなりますし、配線も効率的に行えます。

おっと!1.8Vも必要だ!

ES9218Pを動かすには3.3Vのほかに1.8Vも必要です。手元ですぐにつかえそうな1.8Vのレギュレータがすぐにみつからなかったので
超低ノイズのLT3042をつかったV-regS基板をつかうことにしました。これは3.3V用つくってPiPA5756Sに組み込んでいたものですが、ちょっとだけ拝借です。
抵抗値で出力電圧がきまるので、もともと取り付けていた33kΩの抵抗をとりはずして、16kΩと2kΩの抵抗の組み合わせに交換です。


1.8Vのレギュレータができました。

さて、これで部品もすべてそろったのでブレッドボードに搭載して動かしてみましょう。


ブレッドボードに組み込んだので動作確認開始です。


動かない?・・・・・

まずはPICになにもプログラムをかかずにPCM信号を加えて電源ONです。
いままでのESS社のDACは、なにもプログラムをしなくてもデフォルトでPCMあるいはDSDを自動認識して
動いてくれていましたので、それに期待しましたが、うんともすんともいいません。

一応、ICの周辺の電圧を調べてみましたが、チャージポンプの出力電圧もゼロのままです。

こりゃ、プログラムを組んでやらないことにはチャージポンプすら動かないということでしょう。
すこしでも、電力消費を抑えたいモバイル用に設計されたICのようなので、なにもしなければ
もっとも電力を使わない構造になっているようです。

こりゃ、マニュアルを全部読まないと駄目そうだ・・・・・

動いた?・・・・・

気づいたところから、プログラムでPICにコマンドを入れるようにしています。チャージポンプを動かすことは
できて、波形もでるようになりましたが、なぜか出力レベルが低いです。100mVrms程度の波形しかでてきません。
まだまだ、アンプを動かすコマンドがあるので、まだまだ調べることが多そうです。

あ〜、明日も早いしそろそろ寝よかな〜。

そうだったのか!

寝床についてES9218Pのデータシートを眺めていて、出力振幅があがらない原因がわかりました。
なんとES9218Pには2つのボリュームコントローラがあります。
1つは、これがおそらくメインのボリュームコントローラでレジスタアドレス0x0f,0x10で左右個別に
-127.5dB〜0dBまで0.5dBステップで変更できます。
それとは別に-24dB〜0dBで1dBステップで変更できるボリュームがレジスタ0x03にありました(左右共通)。
これはデフォルトで-24dBのままなので、これを0dBに設定しなおせば良さそうです。

この2つのボリュームは何が違うかといえば、おそらく
前者(-127.5〜0dB)のボリュームはDACのボリュームコントローラ
後者(-24dB〜0dB)のボリュームはヘッドホンアンプ用のボリュームコントローラ
と思われます。まあ、データシートにはそのあたりは書かれていないようです。

で、それに気づけばやはり動かしたくなり、寝床から這い出してプログラムに制御コードを追加しました。
そうすれば、無事最大出力の2Vrmsの出力が得られました。


2Vrmsの出力が得られました。


ヘッドホンのドライブ能力を調べる

手元にある2つのオーディオテクニカのヘッドホンの直流抵抗を調べると、どちらも約50でした。
そこでES9218Pに47Ωの抵抗負荷をかけて、どこまでドライブできるか調べてみることに。


47Ωの抵抗を負荷にしてドライブ能力を計測します。

入力レベル 消費電流(3.3V)
MUTE 約40mA
-6dB 約85mA 大丈夫ですね。
-3dB 約100mA まだ大丈夫。
0dB 約120mA 出力がクリップしてしまいました。

実測で出力レベルが振幅で2Vまでは大丈夫そうです。となると約1.4Vrmsですね。
ちなみに、このときヘッドホンで消費される電力は約85mWになります。
で、ES9218の消費電力の増加分は3.3×(100-40)=198mWです。チャージポンプの変換効率は約43%といったところでしょうか。
ちょっと低い気もしますが、実装の問題や使用している素子にも依存するのでこの値が正しいかどうかはちょっと?なところでしょうか。
でも消費電流が100mA程度なので、RasPiから横取りしても問題のないレベルですね。

さて、そろそろホントに寝よ・・・・・

どのような基板にのせるか考えてみましょう。本命はRasPiですが・・・・

試聴してみましょう! 2019.9.25

ヘッドホンドライバーが付いているので、ヘッドホンで試聴しましょう。
出力からそのままヘッドホンに接続します。あ、抵抗をパラにすると不味いので、
抵抗はフローにしておかなくっちゃ。

ヘッドホンに接続して試聴です。

PCのMEDIA PLAYERでCDを鳴らしますが、まず音量のチェックです。
普段聞く音量だと、大体ボリュームレベルは10くらい(最大100)。
かなり大きな音で20。そして、耳を外したくなるレベルで30くらいでした。
100まで上げるとほとんどスピーカです。もちろん、耳には当てられませんが・・・。
ということで、音量的には問題ないようです。


ちょとボケボケですが1V/divです。普段の聞く音量では
小さい振幅ですので、ドライブ能力は問題なしです。


音質はしっかり!

おそらくES9218Pはポータブルオーディオを想定して開発されたと思うのですが、
よくある安物のプレイヤーでヘッドホンを聞くと、なんとも抑圧された感じの音がします。
おそらくドライブ能力が不足していて出力が飽和しているのかな〜とおもっていますが、
このES9218Pはそんなことはありません。大きな音をだしても、しっかりと鳴っていますし、
音の伸びもあります。常用の範囲なら据え置き型の専用ヘッドホンアンプと勝負できますね。
 ただ、据え置き型みたいにWクラスの出力は無理ですから、音量勝負では完敗でしょうが、
まずそこまで音量を上げることはないですから。

 この要因ですが、ES9218Pではチャージポンプをつかって負側の電圧(-3.3V)を発生させています。
このチャージポンプの電源回路がかなり優秀なのでは?とおもったりです。というのも、チャージポンプの
駆動はかなり細かくソフトで調整することができます。とりあえず、STRONG MODEで駆動をしています。

それと、チャージポンプ出力には平滑コンデンサをつけることになっており、データシートでは22uFが指定されて
いますが、手持ちの関係で100uFとすこし容量の大きなものをつけています。ひょっとして、これが音質に
効果を得ているのかもしれせん。ひょっとして容量より質のいい(ESRの小さい)ものを選んだほうがいいのかな?

あと面白いことにヘッドホンアンプのバイアス電流を選択する機能があります。大小を選択できるので、
もちろん大を選んでいます。消費電流として増える値は2〜3mA程度ですが、ポータブル機ではこの差も
おおきいのでしょうね。

動作周波数について
 ESS社のDACの特徴として、ES9018,ES9018QM2、ES9038PROなどはいずれもフレームクロックに同期したマスタークロックを必要としていません。
その点がRasPiとの接続を容易にしている点もあるのですが、その代わりに外部から任意の周波数のシステムクロックを供給する必要があります。

その周波数は最高が50MHzで、最低がPCM入力で>128FSR、DSDの場合で>3FSRになっています。
すなわち、PCM入力では192kHzでは24.576MHzを越える値を必要としています。いまのブレッドボード上では、すぐに探せたということで
24.576MHzの発振器を搭載しているので192kHzの再生は問題ありませんでした(その後に問題あることがわかりました)が、
384kHzに上げると音がぶつぶつに切れてだめでした(一応音は鳴るようです)。
 384kHzに対応させるには、発振器としての周波数は49.152MHzを越える周波数を要求されます。
さて、試してみたいですね。

手持ちで49.152MHzの水晶もあるのですがSMDタイプなので、ブレッドボード用に変換基板が必要です。
変換基板もないことはないけど、ちょっと面倒だな〜・・・・・と思っていましたが、いいものがありました!

超低ジッタ高精度クロックジェネレータの登場!

いいものがありました!何のためにつくったかといえば、こんなときのためにつくったのですよね!
で、早速接続してみることに。これは周波数も可変できるので、システムクロックと再生可能周波数の関係を
調べるのにも使えるでしょう。


クロック発振器に超低ジッタの高精度クロックジェネレータをつかって動作周波数のテストです。

で、早速調べてみました。一覧にしています。

再生周波数
マスタークロック 192kHz 384kHz 768kHz
(仕様外)
24.576MHz
(192k * 128)

(128FSR)

(64FSR)

(32FSR)
45.1584MHz
(352.4 * 128)

(235FSR)

(117FSR)

(59FSR)
49.152MHz
(384 * 128)

(256FSR)

(128FSR)

(64FSR)
50MHz
(ES9218上限)

(260FSR)

(130FSR)

(65FSR)
100MHz しばらくは綺麗に再生できていたが、途中で再生不可に。
○:再生可
△:途切れる場合あり(定期的に一瞬途切れる)
  または、音が歪む様子。
×:再生不可(音がでない)

結構微妙なことがわかりました。システムクロックに必要な周波数は>128FSRなのですが、
たとえば192kHzなら24.576MHzになります。ここで微妙な点は24.576MHzピッタシの水晶を選んだ場合
=128FSRとなり、>128FSRを満たせません。水晶発振器の誤差もあるでしょうから、128FSR以下であれば
音が数秒毎に一瞬途切れたりします(よく聞かないとわかりませんが、一旦わかると気になってしまいます)。
もし、運良く水晶発振器の誤差がプラスであれば>128FSRを満たせることになりますが、運任せもいやですよね。

ということで、再生周波数を192kHzまで狙うなら、システムクロックは24.576MHzを越える周波数、
384kHzまで狙うなら、49.152MHzを越えるシステムクロックが必要になりそうです。ES9218Pの
上限周波数が50MHzなので、できれば50MHzの発振器を採用したいですね。

共立で売っているRasPi用のES9218Pのボードは何MHzの水晶をつかっているのだろう?
データシートそのままだと38MHzなので、192kHzまでの対応になっちゃいます。仕様で384kHzまで
対応と書いてあるから50MHzなのかな?

共立からでているES9218Pのボード。何MHzで動かしているのかな?

ちなみに、システムクロックに100MHzを設定すると、しばらくは768kHzも綺麗に再生できていましたが、
途中からシャーノイズが発生してきて、しばらくしたらノイズだけになってしまいました。おそらく、内部温度が
あがったりして、動作不良になったのでしょう。消費電流もシステムクロック24.576MHzで192kHz再生で45mA程度
だったものが、100MHz/768kHzにしたら100mAを軽く越えてきましたから。


Raspberry Pi用の基板を描いてみましょう!

主な仕様はこんなところでしょうか。
 ・システムクロック:50MHz (384kHz対応とするため)
 ・出力:ヘッドホンφ3.5(一応、外部出力用の端子も設ける)
 ・電源:RasPiからの5Vを供給(内部で3.3Vと1.8Vレギュレータを使用)。
 ・制御:RasPIからみれば汎用のDACのように見えるように。
      (必要な制御は搭載するPICで行う)。
 ・その他:基板の空きスペースに余裕があれば、拡張できるような端子も設ける。


コードネームはPiDAC9218

RasPiに接続できるように小さいサイズでパターンを書いてみました。
部品点数はすくないのですが、結構きちきちです。その要因は1uFのチップコンデンサが必要なのですが、
そのサイズを3216(3.2mm×1.6mm)をつかっているためです。耐圧は小さくてもよいので、もっと小さい1608サイズにすればいい
のですが、チップコンデンサには容量の表記がないので、あまり色々なサイズをつかうとごれがどの容量かわからなくなってしまいます。
そのため、個人的に2012サイズは0.1uF、3216サイズは1uF、3528サイズは10uFと勝手にきめてパターンを描いています。
でも、これもそろそろ見直さないといけなかな〜。AK4499あたりだと2012でさえ大きく感じてしまいます。

必要な部品をのせて、パターンを大まかに描いてみました。


コードネームはPiDAC9218です。




(つづく)