CS8416(ソフトウエアモード)とPIC16F887 2009/06/04  2010/04/22 変更
home  
CS8416単体動作用&PCM1792A単体動作 ページ.

ココのよりもDIX9211(クリック)をおすすめします。

-------------------------------------------------------------
確認している図面・プログラムなど。 2010/04/22
一通りの図面,HEXファイルを下にupします。
変でしたらごめんなさい。

3.3Vで動きます。LCDの照明のみ5V必要です。

○ソフト
ここをクリックしてください。  2010/04/22 up. 16F887用
RB3,4をそれぞれGNDに落とすとCS,PCMが有効になるよう変更。
今も続けてテスト中。ますます配線が、スパゲティ。

初めてCS8416を使用する時は、一度下の方にあるアドレスを設定してください。

○コントローラー図面
CS8416を使用する時は、RB3をGNDに落とす。
PCM1792を使用する時は、RB4をGNDに落とす。
後は端子名変更など。

16F877で図面記入していますが、16F887を使用してください。セラロックは不要です。

○CS8416図面
SV6-SV7間の渡りを追加。
○PCM1792A図面
特に変更無し。

コントローラー
↓クリックで大きくなります。
PCM1792 コントローラー
CS8416
↓クリックで大きくなります。
CS8416
PCM1792
↓クリックで大きくなります。
CS8416

-------------------------------------------------------------
○PCM1792Aを単体で動かすプログラムも書こうと準備。 2010/04/08
SRC4392でSRC → CS8416ハードモードで受け → PCM1792A → TPA6120。
ややこしい。
単体で、動かすことは無いように思う。書き換えるのめんどくさいだけか?。
SRC4392 or CS8416とPCM1792Aは同時につなぐと思うので、それぞれあればok?

○音でねぇ。
つなぎ終わりプログラム書込 MPLAB IDEの [/]様なのをクリックしてスタート。
VR+押しても・・・沈黙のまま。

結局±12V電源スイッチONにしていなかった。orz.20分ぐらい悩んだ。

○電気食わない?
3.3Vで動かしているが、電源は5Vからレギュレーターで落としている。
室温20℃でレギュレータ熱くならない。
何かやってしまいそうなので電流測っていないが、思っているほど電気食わなさそう。

±12V系のオペアンプ,TPA6120は、ほんのり。
PCM1792A
いい加減にケースに入れたいのですが、最終的にどうするかなかなか決まりません。
そのうち配線間違えて、全滅?

○I2C使うコンパイラ
CCSCが有れば、レジスタの読み書きはとても簡単です。その他もです。

後閑氏のPIC18F解説本を見る限りでは、18FシリーズでコンパイラC18使用すれば
書き方は同じようです。当然同じか。(460ページ前後です。)
丁寧に解説してくださるので、初心者には大変ありがたい。

CCSCが便利なので、なかなかC18移行できないです。
次回秋月に何か注文する便に18F4550でも仕入れて試そう。
-------------------------------------------------------------
○CS8416ハードモード → ソフトモード変更
普段使用しているPCM1792Aに接続して使用しても問題なさそうです。

インターフェイスは3.3Vのみです。パターンをカットしてCS8416のVLに5Vを接続すれば
問題なく5V系でも使用できると思います。

また違うことを書いているかも・・・・ ↓信用しないでください。

オモイッキリ勘違い・・・
ソフトモードのみでFSWCLK有効です。もう一度試してみました。
何を勘違いしていたのだろう。?

現在使用しているハードモードの物を改造するため方法を記入しておきます。
一応データシートを見て確認してください。

改造と、コントローラー作成もそんなに難しい物では無いと思います。
少し自作をされる方であれば部品もお持ちでしょうし、是非、試してみてください。

1.入力サンプリング周波数判定
レジスタの18hを読めば判断可能です。が、外部OSCを固定しないといけないようです。
外部で切り替えた場合は信号をPICに入れてあげれば、いいとは思いますが。
   Reg 18h
  12.288MHz  11.289MHz 
44.1kHz  0x46  0x40 
48kHz 0x40 0x3a 
96kHz 0x20 0x1e
192kHz  0x10 0x0f

外部OSCを使用する設定にすると0x40に固定されるようです。
元々ソフトウエアモードの目的?は、外部OSCを使用するため?なので、表示は外部クロックに切り替え回路で
表示させればいいと思う。何かレジスタで細工できればいいですが。

2.外部クロックを使用する
レジスタ00h-6Bit[FSWCLK]を"1"に設定すれば可能のようです。
変更すれば、即有効になります。聞き比べるには便利でしょう。
対応する物は、次の表になると思います。
  外部発信器
44.1kHz   11.289MHz
48kHZ  12.288MHz
96kHz  24.576MHz
192kHz  49.152MHz

11.289と12.288は手持ちにありましたので、確認しました。
49.152の代わり?に50.000MHzの手持ちで確認しました。

3.入力無し時 の信号出力
レジスタ01h-7Bit[SWCLK]を"1"に設定すれば、外部クロックの信号を利用して信号が出力されます。
後のDACに信号を与えるための物のようです。

4.ハードウエアからソフトウエアモードに
a.入力
入力が増えるので、各Pinを変更。75Ωはターミネーターです。
入れなくても動作すると思いますが、他CHへの信号飛び付きがあるでしょう。
余分な信号が、他CHへ飛びつき防止に入れましょう。
CS8416 ハード ソフト

b.ジャンパー設定
ハードからソフトモードへの変更。
アドレス設定は、私がたまたまそのようにプログラムで設定しています。

CS8416 ハード ソフト

C.I2C
SDA・SCLを引き出します。

CS8416 ハード ソフト

d.外部クロック
これがないと試す意味がない。

CS8416 ハード ソフト

e.リセット
PICでコントロールするので、今つないでいる物をとります。

CS8416 ハード ソフト

回路図上は以上を参考に変更してください。ただし、お手持ちのボードが変更しづらい物は・・
あきらめる??根性で改造する??

 改造参考 のPDF

5.コントローラー その1 
んで,以下のコントローラーをつなげばOK。


CS8416を16F887でコントロールするソフトを置いておきます。
ここをクリックしてください。
txtをhexに変更して書いてください。
コントローラーハードは、別ページに記入有ります。どこにデータがあるか自分でも解らなくなった。
なので、図面はここ をクリックしてください。
PDFは、上のリンク内にあります。図面は、Eagleで書いてあります。
16F877になっていますが、16F887を搭載してOSCは、取り付けなくてOK.

6.コントローラー その2 
16F886を使用した物も置いておきます。図面は、余分な物が書いてあります。
テストしていた基板なので、そのまま図面になっています。(デジトラ・ダイオード)


コントローラー図面   と ソフト

データをご利用の方はトップページ下の方に、きまりごとを記入しているので目を通してください。
ソフトにバグ(ご要望)など有る場合は、時間がある限り対応したいと思っています。

7.電圧について  
PICは、そのまま3.3Vでも動くと思います(NOBROWNOUTにしていたと思う,検知電圧変更できたような・・)。
LCDに関しては、ググっていただき改造が必要です。
CS8416のVL(21)も変更。外部発信器も3.3V用にしてください。

下の写真は、16F887で作った物です。
16F887 CS8416  

下の写真は、16F886で作った物です。
PORTプルアップに抵抗が見えますが、使用していません。
16F886 CS8416  

部品表です。


左から、コントローラー基板。最初に作ったCS8416。TPA6120ヘッドフォンアンプ
接続は、+5V,GND,SDA,SCL,RESETです。CS8416アドレス A0,A1は、GNDに接続。
コントローラー電源は5V,3.3Vどちらでも可能。ただし、LCD配線見直してください。

図面は、別ページにあります。各自修正してご利用ください。

ア.他の参考ページ。
最初にテストを始めた状況は、
ここをクリックしてください。
図面とかその他、
ここをクリックしてください。

A.現在の操作方法。
レジスタ変更は、即座に値が有効になります。

A.電源投入時。
入力 0ch。

右上表示は、コントロールチップ
cs CS8416


以下pcmは、cs表示に置き換えて読んでください。

B. CH切り替え(白)
チャンネル番号が点滅。

C. UP(緑)もしくはDOWN(ダイダイ)
チャンネル表示が0から7の間で変更可能。

D. CH切り替え(白)  再度押す。
再度CH切り替えを押すと変更確定。

E. この状態で、UP(緑)とDOWN(ダイ)で
アドレス切り替え。

F. Change(黄) データ書き換え設定。
カーソルが表示される。

G. UP(緑)もしくはDOWN(ダイ)
カーソルが表示されている状態でデータのINC・DEC。

H. 再度Change(黄)でカーソルが移動。
操作方法は上位と同じ。
 

I. Change(黄) 再度押す。
カーソルが消えて設定値が書き込まれる。

B.CS8416レジスタ設定について。
電源投入時、PIC 16F887 EEPROMのアドレス0x00〜0x05までをCS8416の同アドレスに書き込みます。

変更したレジスタは、保存されます。が、上記アドレス以外は電源を切ると初期値に戻ります。

アドレスと設定値の対応を書いておきます。ここを変更すると動作しないビットがあるので
CS8416のマニュアルをよく見てください。

基本動作の設定です。SRC4392と違い単純かと思います。
ハードさえできていれば、この設定で必ず再生できると思います。DAC I2Sでし。
CS8416 アドレス設定
0x00    0x04
0x01    0x80
0x02    0x40
0x03    0x00
0x04    0x80
0x05    0x85


C.図面など
図面などはこちらのページを見てください。  ←クリックしたらページ飛びます。
図面に手を加えているところを記入してお渡しします。

CS8416のGP0,GP1はPICに接続してありますが、プログラム上では使用していません。

D.部品リスト
こちらのページを見てください。  ←クリックしたらページ飛びます。
PICが16F887だったりおかしいところもあるかも。
LCDは、3.3V用に改造しています。5Vを供給し、300Ω程度の抵抗を追加しないとバックライトは点灯しません。

E.修正しているところなど
デジトラをトランジスタにしています。
何かしようとして基板に穴を開けています。(動作に影響はありません。)



プルアップを忘れてチップ抵抗を貼り付けています。


F.バグなど
バグ・要望があればできる限り対応いたしますが完全に対応できる保証はないです。