あたらしいDIXを試してみましょう! 2015.3.11
こんな書き込みをいただきました。
なぜシーラスロジックのCS8416の後継機がWolfsonのWM8805なのか、気になりましたが調べてみると
どうやらWolfonはシーラスロジックに買収されたようです。いや〜なかなか、この世界もM&Aが激しいです。
いや、この世界だから激しいのかな?
CS8416の供給はまだ当面は大丈夫でしょうけど、結構使い易いDAIなのでこれがなくなると結構寂しいです。
そうこうしていると、次のような書き込みもいただきまし。
そういえば、新しいDAIは沢山あるのですが、あまり試したことはないので、ここいらでちょっと調べてみましょう。
調達!
”DIX”をキーワードでDIGIKEYで調べると幾つか引っかかってきました。そこで、今回はTI社のDIX9211とAK4118を
購入してみました。どちらも1000円強です。ちょっと高い印象もありますが、最近の円安でしかたないのでしょう。
そう考えればAK4118は旭化成なので、国内で買ったほうが安いかな?いや、海外生産だったら同じかな?
左:TIのDIX9211 右:旭化成 AK4118
汎用I2Cコントローラを作る!
最近(でもないですが)のこういったICはほとんがソフト制御になっていて、制御の方法もSPI(3線式)あるいは
I2C(2線式)です。なかでも、2本だけで何個ものICが制御できるI2Cが結構主流になってきています。
いままでにI2C制御のICは扱いました。
列挙するとCS8416,WM8805,ES9018S,ES9018K2M,DSD1794,SRC4392,DIT4192,PLL1700、etc・・・。
ICの機能を試すたびに、ソフトを組んでいましたが結構大変です。それにこれからも色々なICを試すだろうから、
ここいらで汎用のI2Cコントローラを作ってみることにしました。
機能としては、任意のI2Cの制御アドレスを設定し、任意の書き込みレジスターの値を読み書きできるように
したものです。
作ってみた汎用のI2Cコントローラ
動かしてみましょう!
動作確認にいつもつかっているCS8416を接続して確認してみました。
汎用I2Cコントローラの動作確認です。
最初にI2C制御のアドレスを設定します。
次に、読み書きするレジスターのスタートアドレスです。
次に、読み書きするレジスターのエンドアドレスです。
上記の設定が終わったら、レジスタアドレスの読み書きできるようになります。
備忘録代わりです。
このコントローラがあれば、いとも簡単にI2C制御用のICの機能を確認できそうです。
こういったコントローラは最初に作っておけばよかったな〜といつもおもいます。
DIX9211を動かしてみましょう!
まずは秋月で買った変換基板(48P)に取り付けて、必要最小限のCR類を
とりつけます。必要最小限なものはPLLフィルータのCRと24.576MHzの水晶です。
変換基板にICとCR類を取り付けました。
あとはブレッドボード上の配線です。電源の配線とI2Cの配線すれば完了です。
そして電源を入れて、アドレス(80H)を設定して読み書きするレジスターアドレスを20H-7EHで設定です。
そして、あとはちゃんとレジスタが読み書きできるか確認しました。
まずは問題ないようです。
これでDIX9211が動きだしました。
無事DIX9211が動き出しました。
データシートは100P以上。。。
DIX9211を動かすにもレジスターの設定が必要ですが、それにしても設定必要なレジスターの多いこと。
さらにデータシートPDFを印刷しましたが、なんと100Pちょっとあります。
読む気しないよ〜
※また明日からしばらく出張(?)生活だな〜。
期末、期初のバタバタ・・・ 2015.4.19
仕事柄、忙しいのは来年度の計画を策定にかかる10〜12月頃が一番忙しくて、世間でいう
3月の期末や4月の期初めは特段忙しいわけでなないのだが、今年は違った。
まあ、色々なことが重なってしまって半田作業はしばらくストップ。
というか、半田ゴテに通電できる環境ですらなかったのですが、
ようやく環境と整いつつあります。
ようやく半田ゴテが握れそうな環境が整いつつあります。
しかし、1ヶ月も半田ゴテを握らない日が経つと、すっかり細かいことを忘れています。
こりゃ思い出すのも時間がかかりそうです。
そうだ、DIX9211を動かそうとしていたんだ!
ブレッドボードを含めて、基板はどこに行ったのだろう?捜索からはじめないと・・・(笑)。
みつけました! 2015.4.28
ダンボール箱のなかから見つけだしました(笑)
思い出すのに時間がかかります。
コマンドをどのように入力するのかを完全に忘れさっています。
ちょっと備忘録代わりに記録をちゃんととりましょう。
まずは、DAIとして最小限の動作をさせるためにコマンド設定です。
RX0(アンプ付き)を入力にして動作させます。
I2Cアドレス | 0x80 | |
レジスタ | 内容 | 説明 |
30h | 0x10 | PLL SCK DIVIDING RATIO AUTOMATIC CONTROL |
34h | 0x00 | RX0入力、Normal Operation |
35h | 0x00 | RECOUT0 RX0 |
問題なく動いているようです。
PCから48kHzの信号を入れています。システムクロックは24.576MHzなので512fsになります。
DATA信号 |
LRCK信号 |
BCK信号 |
SCK信号 |
DACをつないでみましょう。
手近にあったR-2Rにつないでみました。R-2Rはディジタルフィルタがないので、信号をダイレクトに観察するのに便利です。
出力をR-2Rにつないでみました。
出力を観測すると、バラバラです。そりゃそうですね、デフォルトの設定ではDIXの出力は
I2Sになっています。これを右詰(RJ)に変更する必要があります。
I2CフォーマットではR-2Rは上手く動作しません。
RJフォーマットで動かすためにレジスターの設定を追加しました。
I2Cアドレス | 0x80 | |
レジスタ | 内容 | 説明 |
2Fh | 0x00 | Right Justified format |
30h | 0x10 | PLL SCK DIVIDING RATIO AUTOMATIC CONTROL |
34h | 0x00 | RX0入力、Normal Operation |
35h | 0x00 | RECOUT0 RX0 |
無事動き出しました。
RJフォーマットにすれば動き出しました。
つぎは、ASRCをつかって・・・あれ? 2015.4.29
こんどはASRCを接続して、192kHzまで動作するかを確認してみましょう。
ということで、ASRCを探しますが見つかりません。部屋中を2、3回探しまわってもでてきません?
ひょとして捨ててしまったか?とおもいつつ、ふとAUDIO PLATEに実装しているのを見つけて
無事、確保しました。忘れていることが多すぎますね〜。
ASRCを接続して入力周波数を可変できるようにしました。
4kHzの入力をした場合の波形の変化です。192kHzでの動作確認とともに、
ASRCの効果を再確認です。
48kHzサンプリング | 96kHzサンプリング | 192kHz |
さて、これでSPDIF入力は確認できました。
次は、PCM入力ですね。
PCM入力を確認してみましょう!
まずはAUXIN0入力をメイン出力に出します。
このときの設定は
レジスタ | 内容 | 説明 |
6Bh | 0x33 | AUXIN0 select |
これだけでいいはずです。早速確認してみましょう。
ASRCからPCM出力として、DIX9211に入力しています。
動きましたね。
だいたい使い方がわかってきました。
あとは具体的な基板が出来上がってきてから考えましょう。
具体的にはSPDIF入力4系統、PCM入出力6系統で考えていきましょう。
基板パターンを描いてみましょう!
まずは必要となりそうな部品を載せてみました。DIX9211の機能(ポート)が多いために、
必要なICは他にはPICだけで済みそうです。ただし、入出力切り替え制御のための端子
は多くなりそうです。
結構スパースです。
いよいよGW突入
帰省しよ〜〜っと。
GWエンジョイ!
GWもおわっちゃいましたね〜。今回は半分ゆっくり、半分仕事って感じだったので、
逆に頭がボケずに済んだかな(笑)。久しぶりに家族が全員そろうとにぎやかでいいですが、
家が狭く感じます(爆)。
パターン作成中で〜す。 2015.5.6
色々と考えながら大まかなパターンを描いてみました。
基本は3.3V単一での動作になりますが、5V動作もできるようにレギュレータを搭載しておきました。
あとは、色々なモード設定ができるように、選択端子を沢山設けておきましょう。
基板にユニバーサル部分を設けたのは、パルストランスをとりつけたり、
周波数毎のLED表示をしたり、いといろな拡張を考慮してみました。
こんな感じになりました。
ようやくパターン完成です。 2015.5.25
こんな感じでパターンが完成しました。
やっと描きあがりました。
これで基板を作ってみましょう!
基板完成しました。 2015.5.30
部品面です。
半田面です。
部品を載せて完成。動くかな? 2015.5.31
こんな感じで完成です。
動作確認していきましょう。
そのためにはソフトを組む必要がありますが、まずはIO関係を整理です。
FIELD | PCB | PIC | CONTENT |
SELECTOR1 | P18 | B7 | SPDIF RX0 SELECT(DEFAULT) |
P17 | B6 | SPDIF RX1 SELECT | |
P16 | B5 | SPDIF RX2 SELECT | |
P15 | B4 | SPDIF RX3 SELECT | |
P14 | B3 | PCM0 SELECT | |
P13 | B2 | PCM1 SELECT | |
P12 | B1 | PCM2 SELECT | |
P11 | B0 | PCM3 SELECT | |
SELECTOR2 | P9 | C7 | I2S FORMAT(DEFAULT) |
P8 | C6 | LJ FORMAT | |
P7 | C5 | RJ16 FORMAT | |
P6 | C4 | RJ24 FORMAT | |
MODE | M0 | A6 | |
M1 | A7 | ||
M2 | A5 | ||
M3 | A4 | ||
M4 | A3 | ||
AUX PORT | T0 | C3 | FREQ OUTPUT T0 |
T1 | C2 | FREQ OUTPUT T1 | |
T2 | C1 | FREQ OUTPUT T2 | |
T3 | C0 | FREQ OUTPUT T3 | |
I2C | SDA | A0 | |
SCL | A1 | ||
RESET | RST | A2 |
まずはもっともシンプルにSPDIF入力のプログラムのみを書き込んで動作確認です。
こんな感じで動作確認です。
LRクロックの波形をみて、無事44.1kHzがでていることを確認しました。
これで、DX9211とPIC間の接続などは問題ないことがわかりました。
LRクロックで動作確認です。
このときの電流を測定してみましたが、約18mAでした。
SPDIF入力時の動作電流は約18mAです。
思い出したように 2015.11.7
しばらく忘れいましたが、AK4137の検討中にDIX9211を使ったら部品点数が少なくなるのでは?
とのコメントを頂き、このDAIを検討中であったことを思い出しました。ほぼ半年ぶりの作業再開です。
なんで忘れてしまったんだろう(笑)・・・年かな(爆)。
さて、半年もほったらかしにすると機能もすっかり忘れてしまいました。
ということで、再度100ページにわたるマニュアルを1時間ほど眺めてる羽目に。
でも、なんとなく思い出してきました。
ソフトウエア制御で設定します。かなりのコマンドを設定する必要があるかな〜と思っていましたが、
必要になるには数少ないです。ひょっとしてCS8416より少ないかもです。
で、そのソフト制御を確認するために、I2C制御コントローラと接続して、コマンドを叩き込んで
動作の確認を行いました。
こんな感じでI2Cコントローラと接続して動作確認です。
忘れてもいいように
つぎに忘れてもいいように基板の各端子の機能をメモっておきましょう(笑)。
こんな感じで基板の端子の機能を設定しています。PCM3入力(AUXIN0〜2)とSPDIF4入力が可能です。
プログラムを組み上げました。 2015.11.8
動作確認の構成は入力にFFASRC、出力にR-2R DACを接続しました。比較的プログラムも短いので問題なく動作しました。
いや、本当は些細なミスに気づかず、ちょっとてこずったりしましたが(笑)。
こんな感じで動作確認です。
綺麗な波形がでていますね。
基板端子の備忘録号です。最初の設定から少し変更しています。
SELECTOR1 INPUT SELECT |
P18 | Reserved | P11からP18をGND(P10)に接続することで選択。開放時は前の設定を保持するためプッシュスイッチでの選択も可。設定値はマイコン内EEPROMに記録しているので電源ON時は前設定値を継続。 | ||||||||||||||||||||||||||||||||||||||||
P17 | PCM INPUT Ch.2 (AUXIN2) | ||||||||||||||||||||||||||||||||||||||||||
P16 | PCM INPUT Ch.1 (AUXIN1) | ||||||||||||||||||||||||||||||||||||||||||
P15 | PCM INPUT Ch.0 (AUXIN0) | ||||||||||||||||||||||||||||||||||||||||||
P14 | SPDIF RX3 Digital | ||||||||||||||||||||||||||||||||||||||||||
P13 | SPDIF RX2 Digital | ||||||||||||||||||||||||||||||||||||||||||
P12 | SPDIF RX1 Co-axial | ||||||||||||||||||||||||||||||||||||||||||
P11 | SPDIF RX0 Co-axial(DEFAULT) | ||||||||||||||||||||||||||||||||||||||||||
SELECTOR2 FORMAT SELECT |
P9 | Right Justified 24 FORMAT | P6からP9をGND(P5)に接続することで選択。開放時は前の設定を保持するためプッシュスイッチでの選択も可。設定値はマイコン内EEPROMに記録しているので電源ON時は前設定値を継続。 | ||||||||||||||||||||||||||||||||||||||||
P8 | Right Justified 16 FORMAT | ||||||||||||||||||||||||||||||||||||||||||
P7 | Left Justified FORMAT | ||||||||||||||||||||||||||||||||||||||||||
P6 | I2S FORMAT(DEFAULT) | ||||||||||||||||||||||||||||||||||||||||||
MODE | M0 | SHORT:system clock 256fs fixed OPEN: Automatic system clock(128 to 512fs) 自動設定の場合は 54kHz以下は512fs 54-108kHzは256fs 108kHz以上は128fs |
電源投入時に状態を読み込むため、電源ON後の変更は不可。 | ||||||||||||||||||||||||||||||||||||||||
M1 | Reserved | ||||||||||||||||||||||||||||||||||||||||||
M2 | Reserved | ||||||||||||||||||||||||||||||||||||||||||
M3 | Reserved | ||||||||||||||||||||||||||||||||||||||||||
M4 | Reserved | ||||||||||||||||||||||||||||||||||||||||||
AUX PORT | T0 | FREQ OUTPUT T0 | 周波数表示 T[3..0]
|
||||||||||||||||||||||||||||||||||||||||
T1 | FREQ OUTPUT T1 | ||||||||||||||||||||||||||||||||||||||||||
T2 | FREQ OUTPUT T2 | ||||||||||||||||||||||||||||||||||||||||||
T3 | FREQ OUTPUT T3 |
DSD入力も加える? 2015.11.11
こんなご意見もいただきました。
DIX9211のPORT_CとPORT_BはDSD入力とすることもできます。
そのときの標準的な設定はマニュアルにあります。
ということで、DSDとPCMのどちらを入力するかMODE設定端子のM1,M2をつかって
切り替えられるようにしましょう。通常(OPENあるいはH入力)時はDSD入力ですが、
ショート時(あるいはL入力)はPCM入力です。こうすればCOMBO384などと組み合わせて
自動判定ができます。でも、必要かな?それよりAUXIN2のreg=6Bhの設定は
マニュアル間違っていないかな?
DSD-INPUT | PCM-INPUT | ||||
Register | default | PORT_C AUXIN1 M1=H(OPEN) |
PORT_B AUXIN2 M2=H(OPEN) |
PORT_C AUXIN1 M1=L |
PORT_B AUXIN2 M2=L |
34h | C2h | CFh | CFh | C2h | C2h |
60h | 44h | 44h | 55h | 44h | 55h |
61h | 10h | 14h | 14h | 10h | 10h |
6bh | 00h | 14h | 14h??? | 44h | 55h |
DSD対応プログラムを組む前に 2015.11.12
DSDの周波数判定ができるかどうかを確認してみようとおもってDAI9211にLEDを搭載しました。
赤色LEDはかなり明るく光るので1kΩの抵抗を直列に入れています。
LEDを搭載してみました。
PCMで動かすと予定通りの動作です。
DSDソースを準備しましょう。
DSDのチェックをするのにDSDソースを準備しましょう。USB-AUDIOがあればいいのですが、
パソコンを入れ替えたのでソフト動作が???なので、ADC4222を引っ張りだしました。
このボードはPCMもDSDも出力できるので便利です。さらにDSDについては64DSDと128DSD対応です。
DSDソースとしてADC4222を準備しました。
久しぶりに再開 2015.11.28
またまた久しぶりの再開です。週末は帰省することが多いので、
週末にのんびり時間をとることがほとんどできないのですが、なんとかならないかな〜。
まあ、できることからやって行きましょう。
まずはADC4222のDSD出力の確認です。
粗密になっているのがわかると思います。
やっぱり忘れてる・・・
いまやろうとしていることはDSDとPCMの両方に対応させようとしていますが、
レジスタの設定を完全に忘れています。
やっぱりやるときは一気にやらないとだめですね。
ということで、再度レジスタマップを作成です。
REG | SPDIF0-4 | AUX0(PCM) | AUX1(DSD) | AUX1(PCM) | AUX2(DSD) | AUX2(PCM) |
M1=H | M1=L | M2=H | M2=L | |||
0x2F | FORMAT | |||||
0x30 | PLL SCK | |||||
0x34 | CH.0=0x00 CH.0=0x01 CH.0=0x02 CH.0=0x030 |
0xC2 | 0xC2 | 0xC2 | 0xC2 | 0xC2 |
0x35 | 同上 | - | - | - | - | - |
0x36 | 同上 | - | - | - | - | - |
0x37 | 0x00 | 0x02 | 0x03 | 0x03 | 0x04 | 0x04 |
0x60 | 0x00 | 0x33 | 0x44 | 0x44 | 0x55 | 0x55 |
0x61 | 0x10 | 0x10 | 0x14 | 0x10 | 0x14 | 0x10 |
0x6b | 0x00 | 0x33 | 0x44 | 0x44 | 0x55 | 0x55 |
ソフトを修正して動作チェックです。
結局のところ、DSD入力とPCM入力とのレジスターの違いはレジスター0x61のみです。
まずはSPDIF,PCM入力でチェックです。これは以前にも確認しているので問題なく動きました。DACはR-2Rを接続しています。
最初にDSDソースとDACのチェックから。
DSDのソースにはADC4222を使い、DACにはDAC9018Sを使います。まずは、直接接続して動作を確認しておきましょう。
ADC4222とDAC9018Sを接続して動作確認です。
DAC9018Sの設定はP11=P12=P13=Lなので、すべてP14に接続します。
あたりまえですが、問題なしです。
間にDAI9211を接続して確認です。
ADCとDACの間にセレクタとしてのDAI9211を接続して最終動作確認です。
ADC4222→DAI9211→DAC9018Sの構成で動作させます。
こちらも問題なく動作しました。
さて、さて、リリースにかかりましょう。
リリースしました。2015.12.9
だんだん亀リリースになってくるな〜。
次はAK4137で遊んでみましょう。
(一旦おしまい、かな?)