おまえは誰だ?(CS4245を調べてみる)の巻き 2022.1.5

部品箱を整理していたら、ふとこんなICが・・・それも複数個でてきました。
WHO ARE YOU? お前は一体何者だ?


CS4245なるICがでてきました。これってなんなんだろう?

全然記憶がないのですが(あ、そろそろボケだしたか?)、どんな機能のICかを調べてみると
DACとADCが同居したようなICのようです。どちらも192kHzまで対応ですし、Dレンジも結構大きいです。

でも、全然入手した経緯が思い出せません。うううう・・・・

ありうるパターンとしては
 @自分で買った
   それなら、HPのどこかにこのICの記事があるはずですが見あたりません。
   データファイルの文字列検索もしてみましたが、それらしいものは見つかりません。
   単に買ってみただけなんだろうか?

 A頂もの
   どなたから頂いたものかもしれません。でも、複数個tというのはどうしてだろう?

入手経路はなぞのままです。


どうやらDACとADCが一つのパッケージになったICの様です。

CS4245のデータシートはこちら

データーシートの日付から2012年にはリリースされたもののようなので、入手しても数年前程度でしょう。
それで、普通忘れるか〜てな感じです。

まあ、思い出す努力をするよりも折角なので動かしてみる努力をしてみましょう!

変換基板はあれど・・・

0.5mmピッチのQFN48なので変換基板が必要です。で、探してみたら
中華製の安い変換基板がみつかりました。わあ〜これてブレッドボードでは使えないな〜。


変換基板ありましたが、これじゃあブレッドボードは使いにくいな〜。

もうちょっと探してみましょう。
ををを! 1枚だけつかえそうなものがみつかりました。


これならブレッドボードにでもつかえそうです。


とりえあえず、最小限で動作させるための回路図を書いておきましょう。

回路はとてもシンプル 2022.1.6

 回路といってもほとんど外付け部品はありません。あるのは電源のパスコンと
PLLやアナログ回路の数個のコンデンサ程度です。
 クロック源をどうしようか考えましたが、手元に24.576MHzなどのディジタルオーディオ用の水晶発振器が
ないので、ここではMAX9485をつかったPLLをつかいます。これを使えばプログラムで色々な周波数を
得ることができます。これは、Renew FFASRC4392にもつかいました。


回路はシンプルです。コントローラ部分は省略です。あとは適当につくります(笑

変換基板に実装

回路を描いたところで、ブレッドボードがつかえるように変換基板にICをのせていきましょう。
このとき、必要なコンデンサなどはあらかじめ変換基板に実装しておきます。こうすればブレッド
ボードの配線が簡単になるのと、もう一度同じ回路をブレッドボードで組もうとしたときに、
2度手間が省けますからね。といっても、2回目を組むかどうかは極めて怪しいですが・・・
 あ、そんなことないです。MAX9485については以前ブレッドボードで使ったことがあるので、
必要な部品がすでに搭載されています。それもあってMAX9485を使う気にもなったのですが、
数年越しに役に経ちました。


CS4245を変換基板に実装です。あわせて必要なコンデンサも搭載しておきました。


裏面にもコンデンサが搭載されています。


以前にMAX9485を試したときのものを流用です。
必要な部品は搭載されているので、便利に使えそうです。


ブレッドボードに組み込もう! 2022.1.7

搭載する部品はCS4245とMAX9485そしてPICだけでもいいのですが、
何も表示するものがないとデバッグもなにもできない可能性があります。
搭載する素子はすべて3.3Vでの動作になるので5Vで動くLCDの搭載は面倒になるので、
3.3Vで動くGLCD(128x64)を使いました。I2C制御なので配線も簡単です。
制御ソフトについては、以前に遊んだときにライブラリにしておきました。


ブレッドボード上に組み立てます。表示のためにGLCDも搭載です。

PICは最近CCS-Cのコンパイラを新調し、あわせてPICKIT4も購入したこともあり
PIC18F27Q43を使いました。これは使用可能な電圧も5Vまで(当然3.3Vも)使えるのと、
プログラム容量が64kWまでつかえます。いままで主につかっていたPIC18F26K20に比べて
使用可能電圧も広いですし、なによりもプログラム容量が倍あるのが大きいです。

で、さっそく適当のプログラムを組んで動かしてみましょう。
まずは、CS4245のレジスタの読み出しをしてみます。
使用するレジスタは16程度と少ないので読み出しも設定も簡単です。

全部読み出してみましたが、IDを示すレジスタは値はC4になっています。
下位3ビットがREVISIONを示すようなのですが、データシートでは1〜3までは
定義してありましたが、4ということはさらに新しいREVISIONということのようです。
ひょっとして、最新のデータシートを見れば書いてあるかな?でも、メーカサイドから
データシートをDLしたのだけどなあ〜。


IDを示すレジスタ(01HアドレスはC4になっています。データシートではデフォが
C1のようです。



データシートのデバイスRevisionには、また4が定義されていないようです。

動かしてみましょう!

ADCとDACの両方が搭載さているので、ループバックで動かしてみましょう。
すなわち

 アナログ信号入力 → ADC → DAC → アナログ信号出力

という流れになります。設定はクロック周波数を24.576MHzにしてサンプル周波数は
192kHzにします。クロック分割は÷2です。フォーマットはI2Sに設定です。


ADCのI2S出力をそのままDAC信号に入れてループバックで動かします。


わざわざ配線しなくても、プログラムでループバックもできるのですが、ここでは動作確認も含めて
外部配線で行います。そしてADCとDACは非同期で動く設定とします。


192kHz、I2SでADCとDACを非同期で動かすための設定です.


設定値を読み出してあとあと確認できようにしておきましょう.

さて、どんな感じでしょうね!

ループバックで動くように配線して、ADCには発振器からアナログ信号を入力します.
そして、DACから信号ちゃ直接オシロで観測です.


こんな感じでテストしています.

サンプリング周波数は192kHzということもあり、かなりの高周波数でも
忠実にサンプル&再生ができそうです.入力信号レベルは±930mV程度のようです.
正確な値は一度データシートを確認しておく必要はありそうですね.


下:ADC入力信号 上:DAC出力信号 周波数1kHz
入力振幅±930mVまではリニアです.


下:ADC入力信号 上:DAC出力信号 周波数1kHz
入力振幅±930mVを超えるとクリップが生じます.
ADCでクリップしているのかDACでクリップしているかは
データシートを確認する必要がありそうです.


下:ADC入力信号 上:DAC出力信号 周波数1kHz
三角波でも再現性は高いですね. 流石192kHzサンプルです.


下:ADC入力信号 上:DAC出力信号 周波数20kHz
20kHzの三角波でもここまで再現性ができています.

さて、CS4245の素性もだいぶ分かってきました.
これからどう料理したものだろうかーーーマイクアンプなんかも内蔵しているようだけど、
マイクって使わないしな〜ーーーー.


回路図を描いてみる 2022.1.8

実際に使えるようにするために必要部分を加えて回路図を描いてみました.

仕様としてはこんなところかな.
@電源
 5V単一で動作. アナログ部は5Vで動かし、ディジタル(3.3V)のためにレギュレータを搭載.ただし電流は0.1A程度なので放熱板なし.

ADAC部分
 受信フォーマットはI2Sのみ(近頃はこれしか使わない感じです). 
 出力レベルを調整するためのVRを実装できるようにしておく(ボリュームとしても使えるように)
 入力周波数については自動判定できるように. CS4245は周波数の自動認識機能がないので外部でLRCKとMCKを計測する必要があります.

BADC部分
 入力は2系統(ライン×2 あるいは ライン×1,マイク×1)
 入力感度は2ch個別にそれぞれVRで可変できるようにしておいたほうが良さそう.
 折角なのでマイク用の増幅回路も使える選択にしておく.
 サンプリング周波数は44.1,48,96,192kHzから選択

回路図を描いてみました.

切替やモード設定端子の数は?

切替(トータル1)
 @ADC入力のみで1端子

モード設定端子(トータル3)
 @ADC周波数設定(x2)
 Aマイクアンプ使用選択(x1)

合計4本で済みそうです.まあ予備を2個くらい設けて置けば十分でしょう.

まずは描いてみましょう! 2022.1.10

久しぶりに基板のパターンを描いたような気がします。そのせいか、CADの使い方をすっかり忘れて
いるところもありました。加齢とともに忘却の速度も早まるのかな〜(笑。

 で、部品点数はさほど多くはありませんがちょっと窮屈な配線になってしまいました。


まずはベタを除いて描いてみました。


描いたパターンは回路図とは異なるところもあるので、まずはこのパターンで回路図を
再度書き直して、チェックしましょう。

#あ〜、三連休も終わりだなあ〜。

回路図修正 2022.1.11

アートワークに合せて回路図を修正です。


回路図のPDFはこちら。

回路図とあわせながらパターンの部品番号も修正です。これで完成かなあ〜。
試作に出すなら、もう1回くらいはチェックしておいたほうがいいでしょう。


部品面パターンです。

0
半田面パターンです。

基板作成開始 2022.1.16

まずは基板メーカにデータ送信です。うまくいけば来週には基板が手元にとどくでしょう。


基板到着! 2022.1.31

予定より1週間ちょっと送れましたが、ようやく基板ができてきました.

ようやく基板ができてきました.

あれ?

速攻で間違い発見です. でも、プログラム開発のときにしかつかわないので、
まあ関係ないといえば関係ないです. でも、一応修正しておかないとICSPが使えません.
部品実装するときに直しておこう〜っと.


←の部分がGNDに繋がっていないといけないのですが---


忘れないように修正しましょう.

基板実装 2022.2.1

必要な部品を実装です。

お出かけ用の写真をパチリ。

動作確認にはいりましょう! 2022.2.7

まずはデバッグ用のLCDをとりつけて、ブレッドボードと同じソフトを動作させてみます.
これが動けば、まずは各ICとのI2Cなどは問題ないということでしょう.
で、ヒヤヒヤしながらソフトを書き込んで動かしてみましたが、問題なく表示できました.
さて、これから本格的にソフトを作っていきましょう.


まずはテストプログラムで動作確認です.

ソフトは概ね完成です 2022.2.14

時間の合間をつかってソフト作成です。


入出力を接続してソフトの作成です。


LCDで内部変数を表示しながらするとデバッグも速いです。

ほぼソフト完成しました。
マニュアルを書きながらでも必要な機能があれば付け足していきましょう。

データシートの誤記? 2022.2.15

この基板にはDAC出力のMUTE用のリレーを搭載しています。直接はCS4245のMUTE端子で
コントロールしています。電源投入後の立ち上げ時には自動的にMUTEがかかるようになっています。
そこで、機能追加としてDACに規定以外の信号が加わっているときはMUTEがかかるように、ソフトを
追加することにしました。
 しかし、MUTEに関する操作レジスターは03hのBit2なのですが、それをOn/OFFにしても全然リレーが
反応しません。そこで、物は試しにBit3をOn/OFFしてみると、MUTEリレーが動作するではないですか!
たぶんデータシートの記載間違いなんでしょう。こういった誤記は大手メーカといえども、散見されたりします。


MUTE機能はおそらレジスタ03hのBit2ではなくBit3の様子です。

製作マニュアル書き

製作マニュアルも作成しました.
DIF4245Manual.pdf


試聴!  2022.3.2

SRC4137の出力をつないで音出ししてみました. 音的にはシーラスロジックらしいな〜といった感じです.
シーラスロジックらしいって何?って言われそうですが、一言で言えばスッキリ、さわやか. ちょっと淡泊な感じかも.
ひょっとして、DACの出力のDCカットコンデンサ(普通の電解コンデンサ)のカラーがでているのかもしれません.
それでも24Bitを謳うDACなので、音の分解能はよいですね. 普通に高級DACとして組み込んでもばれないと思います(笑


試聴してみました. シーラスロジックらしいスッキリ、さわやかな感じの音です(主観ですが).

リリースしました。 2022.3.2

(おしまい、かな?)