CS8416 DAI

概要

CS8416をソフトモードで使用するDAIです。 32kHzから192kHzまで対応します。

入力は8chあり、ロータリースイッチを接続して切替が出来ます。

16文字×2行の液晶パネルを接続して、再生中の入力チャネル、再生周波数、エンファシス状態を表示します。

エンファシスされた入力データの場合は、自動でディエンファシスします。

3個の押しボタンスイッチを操作して、CS8416のレジスタ設定値を変更できます。 変更した設定値は、1チップマイコンのEEPROMに保存します。

外観

基板サイズは100mm×40mmです。四隅の3mm内側に、3mmのネジ穴を空けています。

部品

数量種類ロケーション備考
1DAICS8416U1
11チップマイコンATTINY26LU2プログラム書き込み済み
1出力バッファ74HC245U3DIP品。74HCT245でも良い
1LCDパネルSC1602BS-BLCD1バックライト付きも可
1三端子レギュレータTA48M033FIC15V→3.3Vレギュレータ。秋月で@100円
1水晶発振器DOC-49S3X111.776MHzオシレータ。秋月で5個100円
3押しボタンSWMITSUMI_SOABIT,CHANGE,REGタクトスイッチ。秋月
1半固定抵抗10kVR1LCDパネルのコントラスト調整
1抵抗3kR3CS8416のPLL用。他の値は不可
1抵抗10kR4
2抵抗47kR1,R2
9コンデンサ0.01uC1,C2,C3,C4,C5,C7,C9,C12,C14
8コンデンサ0.1uC6,C8,C11,C15,C16,C17,C18,C20
1コンデンサ0.022uC13CS8416のPLL用。他の値は不可
1コンデンサ1000pC10CS8416のPLL用。他の値は不可
1電解コンデンサ33uC21
1電解コンデンサ100uC19適当な容量で良い
12ピンヘッダPINHEADER_1X21,2,3,4,5,6,7,8,POW,TX1,TX2,TX3
2ピンヘッダPINHEADER_1X6OUT1,OUT2
1ピンヘッダPINHEADER_1X3CHSEL
1ピンヘッダISP_CONNECTORCN1

適宜、ICソケットやケーブル用物品をそろえてください。

回路図

1 2 3

基板

結線

セレクタ

8chセレクタと10kΩくらいの抵抗で、下図のセレクタを作成して CHSEL 端子に接続してください。

電源

+5VとGNDを、POW端子に接続します。

LCDパネル

LCDパネルが外側に伸びる向き(ATtiny26Lに重ならない向き)に接続します。 延長ケーブルを作成する場合は、結線に注意してください。

出力

OUT1とOUT2は同じものです。

MCKがシステムクロック(256fsなど)、BCKがシリアルクロック(64fsなど)、LRCKがフレームシンク(1fs)、DATAがシリアルデータです。

入力

以下の結線をします。 入力は1から8まで8系統あり、同様の接続とします。

DAI TX

CS8416のTXは3系統あり、レジスタ設定で内容を変更できます。 詳細は、CS8416のデータシートで、レジスタ0x02,0x03、Table 3. 「GPO Pin Configurations」を参照してください。

組み立て

コンデンサの取り付けは、以下を参考にしてください。

三端子レギュレータ、水晶発振器の向きは以下を参考にしてください。

操作

[REG] [BIT] [CHANGE]の3個のボタンを搭載しています。このボタンの操作を操作して、CS8416の動作を変更します。

電源投入後は通常モードで起動しますが、REGボタンを押すとEDITモードへ移行します。

通常モード

左上に入力チャネル、右下にそのチャネルの周波数を表示します。

入力チャネルは、入力セレクタの操作によって選択できます。

右上に、エンファシスされた入力の場合は「EMPH」と表示します。 また、デフォルト設定では自動的にディエンファシスを行います。

再生周波数は、32 / 44.1 / 48 / 88.2 / 96 /176.4 / 192 kHzに対応します。入力が無い場合は 「No signal」を表示します。 ただし、176.4kHzと192kHzは、手持ちで送り出せる機器が無いため動作確認が出来ていません。

EDITモード

CS8416で設定可能なレジスタは0x00〜0x09の10個あり、それぞれ8bitのレジスタです。

[REG]を押すと、設定中のレジスタ(左上にREG:XXとして表示)を次のレジスタに移動します。0x00→0x01→・・・→0x09→0x00とループします。

[BIT]を押すと、設定中のビット(左下にBIT:XXとして表示)を次のBITに移動します。7→6→・・・→0→7とループします。また、BIT位置に「↑」を表示します。

[CHANGE]を押すと、[REG][BIT]で選択したビットの設定値を変更します。「値を1にセット」→「値を0にセット」→「何もしない」の3種類をループします。 なお、白地に黒文字(非反転表示)の1または0は「何もしない」設定で、現在CS8416に設定されている値を示します。 黒地に白文字(反転表示)の1または0は、上書き設定を意味します。

下の例では、レジスタ0x04、ビット2を選択しています。 また、ビット7は1、ビット6は0で固定的に上書きされます。 ビット5〜0は特に何も操作しません。

レジスタ4のビット5〜3はRXSEL2〜0、ビット2〜0はTXSEL2〜0で、それぞれには入力チャネルセレクタで選択したチャネルが設定されます。 なお、1または0を上書き設定している場合は、入力チャネルセレクタの値が設定された上から1または0が上書き設定されます。 また、EDITモードで入力チャネルセレクタを操作しても、これらのビットへの反映は行いません。

EDITモードからの復帰はボタン操作では行えません。電源を一旦切って、再度電源投入をしてください。

CS8416のレジスタ情報は、CS8416データシートを参照してください。

以下に、デフォルト設定を示します。

アドレス機能CS8416の
デフォルト値
本プログラムの
デフォルト値
00Control 00000_00000000_0000
01Control 10000_00000000_0000
02Control 20000_00000100_0000
03Control 30000_00000000_0000
04Control 40000_00001000_0000
05Serial Audio Data Format0000_00001000_1000
06Receive Error Mask0000_00000000_0000
07Interrupt Mask/td>0000_00000000_0000
08Interrupt Mode MSB0000_00000000_0000
09interrupt Mode LSB0000_00000000_0000

レジスタ0x04:ビット6,5,4は「EMPH_CNTL2」「EMPH_CNTL1」「EMPH_CNTL0」で、エンファシスされた入力の場合に自動的にディエンファシスを行うよう100を設定します。

レジスタ0x04:ビット7は「RUN」で、通常運用のために1を設定します。

レジスタ0x04:ビット6は「RXD」で、RMCKを出力にするために0を設定します。

レジスタ0x05:ビット7は「SOMS」で、マスターモードにしてOSCLKとOLRCKを出力にするために1を設定します。

レジスタ0x05:ビット6は「SOSF」で、OSCLKの出力周波数を64*Fsにするために0を設定します。。

レジスタ0x05:ビット5,4は「SORES」で、24bitモードにするために00を設定します。

レジスタ0x05:ビット3は「SOJUST」で、右詰め出力にするために1を設定します。

レジスタ0x05:ビット2は「SODEL」で、SDOUTデータのMSBをOLRCKのエッジの後の最初のOSCLKとするために0を設定します。

レジスタ0x05:ビット1は「SOSPOL」で、SDOUTデータのサンプルをOSCLKの立ち上がりエッジとするために0を設定します。

レジスタ0x05:ビット0は「SOLRPOL」で、OLRCKがhighの時に左チャネルデータとするために0を設定します。

上記で0を設定している部分は、デフォルト値と同じですので設定する必要はありませんが、動作を明確にするために敢えて設定してみました。

設定値の初期化

設定値を初期化して本プログラムのデフォルト値に戻したい場合は、通常モードで[CHANGE],[BIT],[REG]の順で3個のボタンをすべて押すことで実施できます。

プログラム

バージョン1.2です。

プログラム 書き込みデータ

おまけ

EAGLE CADデータ

ガーバデータ