WM8741 WM8742 I2Cコントロール 2012/03/03 2015/05/10 変更

'12/03/03 初回 '12/03/05 muteその他説明追加 '12/03/18Arduino追加
'12/03/20 18F26k22追加 他追記 '12/03/25 18F26k22変更 液晶追加 '12/03/30 Arduino I2C
液晶追加
'13/03/24 LCD関係変更 公開。4/28書き換え
追記追記で解らなくなるので書換え。
DAC関係ICをソフトモードで簡単コントロールしましょう。
ハードとソフトを公開します。気まぐれなので、いつまでするか不明・・・・
簡単にするため音量設定とフィルター設定とミュートに機能を絞っています。
MPLAB X と XC8 ICD3に変更し,慣れるため?書き直しました。
C18バージョンもあります。
他の確認(ベタアース)も含め基板を作りました。95x72秋月さんのBタイプサイズ。
データを送ってから2週間と4日で着きました。

いつもの飛ばす寸前の状態でのテスト

回路のPDFは、 ココ 。
Eagleデータは、ココ。 FusionPCBのデータは、ココ。
VRを繋ぐときは,AD入力最大時が音量最小になりますので注意してください。通常使用とVR+-入替えてください。
AD入力はRA0にしています。
VR+-入替えずにプログラム内で ニョロ(~)を使用して反転すれば・・・
手持の関係で、LCD照明少しくらいかも。680Ωぐらいが適当。
I2Cプルアップは、LCDデータシートなど見ていると10kΩ?みたいなので,変更。ホントカ?
LEDは、1608タイプを載せてます。パターンは、2012。
SA56004は、何となく載せてます。
PICは、手持で1.27ピッチの物を載せてます。秋月さんで入手できるのは、PIC18F2515のフラットタイプかと思います。
ピンが同じなので、CONFIG設定を確認すれば問題なく使用できると思います。
基板は実費290円でしたので、基板代+手間賃=362円切手(310円 & 52円) と 82円切手を貼り返信先を記入した封筒を入れて送ってもらえれば送ります。
MPLABX(1.70) XC8(1.12) ICD3使用しています。プログラム内容は、ざっと見ていただければ。。。
データ一式は ココ 。
自分に使用しやすいようにAD入力値を変更しています。 >>1のところです。
また、LCD関係などreadme.txtを見てください。
例のように気に入らない所直してください. 右クリックで落せます。
とりあえず実機でボリュームで音量変化確認しました。swのボリュームは見ていない。フィルターは耳のいい人に確認はお任せ。
C18で書いている方は、ワーニングも解消されて(ほんとか?)動いているようです。
こちらのバージョンは,プログラム上でしたらメールいただければ添付いたします。
データを使用にあたり 上のHOMEに飛びindexページ下の方にある[定番の記入(注意事項)]を一度ご覧ください。
今、このDAをお持ちの方は、秋月さんに,なにがしかの部品を注文する時ついでに購入をお勧めします。
PIC 18F26k22 220円 I-05398
ブレッドボード EIC-801 250円 P-00315(基板で組んだ方がいいと思う。I2C関係おかしくなるとガクブル.)
タクトスイッチ 10x3 30円
VR ?円
コンデンサ,パスコン,抵抗 電線諸々は、工作される方は部屋に転がっていると思う。
Pickit3も部屋に転がっていることでしょう??
MPLAB Xは、最初違いに戸惑いましたが使用していると慣れてきました。てか、使いやすいかも。
ちょこちょこ試してみて自分的には、 CS8416とPCM1792Aの一枚にまとめたのもいいかなと思い。
下の物を書いたので,少し修正して頼もうかと思っています。
★今回の動作
簡単にするため2項目に絞っています。
1.音量の設定
音量に関しては、立上がってから音量を絞る書込みをしています。なので、
書込みが終了するまで、最大で出力されます。無負荷で15mSほど信号が確認できます。
最初MUTEを使用していませんでしたが、使用しないと実用的ではないかもしれないので使用しています。
ミュート端子(25PIN)をプルダウンし、電圧を出力するようにPICでコントロールしています。
他の機器を接続して最終的にポップノイズが発生する場合は、リレー受けしてください。
プログラムによってミュートを省いている物もあります。簡単に追加できると思います。
2.フィルター設定
設定データを送っているだけで何も難しいことはしていません。
特に今回設定値を表示していないので、ブラインドテストに使える。??
適当にSWを押続けて、放し "どれか当てる"。
RC0-3のLEDを使用して、現在にフィルター設定を表示したらいいと思います。
3.初期設定
CS8416がI2Sで出力しているため特に設定しなくても動きます。動作確認は、パソコンから48kで出力していると思います。
他のモードにしたいときは、" WM8742 その他初期設定"のところに"WM8742 ミュート"の内容を変更して追加してください。
たとえば left justifiledに変更するときは、R5(05h)Bit2-3を01に変更。
writeWM8742(FORMATCONTROL<<1, 0x06);
を追加します。Bit0-1は、24bit(10)のまま。
元の0b00001010を0b00000110に変更するイメージです。
4.I2C
今まで見てきたCS8416,PCM1792A,SRC4392の取説はわかりやすいです。が、
WM8741,WM8742の取説は少し見にくいかもです。
マニュアルRev4.2 21ページを参考に。レジスタアドレス関係は、44ページからを参考に。
注意点?は、レジスタデータが、なぜかD0-D8と9Bit有ります。
D8に相当するBitは、レジスタアドレスの最後に送信しないといけないようです。
今回送信は一項目ずつですが、データを続けて送ればアドレスが自動でincするのが一般的です。たぶん
参考までにキャプチャしたタイミングです。

最初の0x00が、DACLLSB。データ0x36送信しています。
次の0x02が、DACLMSB。データ0x27送信しています。
DACLMSBアドレスは0x01なのですが、先のデータシート通り レジスタDATA-D8を同時に送るのでアドレスBITをずらしているのでこのようになります。
たまたま、昔にロジックアナライザーを購入していて1回ほどしか使用していなかったため使用しましたが、オシロがあれば今回のはデバッグできると思います。
有れば信号が見えるので、おもしろい?ですけど。
★ハードとソフト準備
DAC基板は、WM8742が乗っている物をオークションにて購入していたので、それを変更。
コントロール基板は、昔18F14K50のを購入していたので活用。(DV164127)
新規に18F26K22とArduinoで、試しました。
ソフトのツールは、MPLABとC18。
インストールは、ググってください。
ICD2を飛ばし修理中だったので、18F14K50の時はPICKIT2を使用しています。
18F26K22は、PICKIT2は使用できないので、ICD2です。
ICD2は私の不注意で飛ばしたにもかかわらず、無償修理(交換)でした。
MICROCHIPダイレクトで、購入したから??。それともどこで購入しても??
★ハード改造
DACは、配布者に確認をとっていないので詳しい改造写真はありません。
DAC改造(DACは、5Vと3.3Vが有るので注意してください。)
DACの24,26,27pinを裏側(ベタアース)で、GNDに落ちているのでカットします。
100キンで購入した、三角刀で簡単にカットできます。
24PINは、I2Cを選択するため"オープン"にします。
26,27PINは、それぞれSDA,SCLで使用します。2.2K程度の抵抗でプルアップしてください。
25pinのMUTEは、プルダウンに変更します。
DAC改造は、以上です。
マニュアルRev4.2 5,6ページを参考に。
★試してください
ハードの制作改造は、めんどくさいですけど、ハードさえ問題なく決れば、ソフトはICSPで簡単に書込みできるので
まだ、制作されていない方は試してみてください。
思っているより簡単にコントロールできると思います。
ソフトコントロールしている物は、自分でなかなか改造しにくいと思います。
一般的?なDAC関係の物なら今回のソフトを改造すれば、思いのままです。
★今後の展開
基本的に各自で拡張していただければ・・と思います。
3.3VI2C液晶が有るようなので追加できると思います
PCM1792Aの方が好みなので、そのうち試してみます。
聞いた感じ
OPAMP-ヘッドフォン直結。
TPA6120Aをアンプにして、ヘッドフォン。
TPA6120Aをアンプにして、安いスピーカー。13cm+2.5cm S-RS70-LR(テスト用で壊れても泣かない安い物)
なんか低音が強調されている???設定何か忘れている??。
おかしくない??
PCM1792Aと違うけど?????
最近の小さいスピーカーだといいかも????
★これで、あなたもDAC関係のソフトコントロールは完璧!!★
です。
何かご要望があれば、
迄。
フリーメールで、一部うっとうしいところは、問答無用で削除設定しています。
★そんなことはない
いろいろとweb見ているとICに触ったらノイズ出た,線を触ったらノイズ出た などというのを見かけますが、ありえません。
上の写真の状態でも、問題ないです。(さすがに配線は引っ張るとやばいですが。)
そのような状態になるのは、電源・アース取り回し。基板の配線(パターン)取り回しがおかしいと思います。ハンダ不良も。
音がいい悪いなどの前に不安定な状態を直すのがいいと思います。
えらそうに書いてみました。
★★そんなことはない 再現しました。(恥ずかしいけど)
IC触ったら良くなった。線を触ったら正常になったと一部の人の書き込みを見ますが私も再現しました。
原因は、入力切り替えにICを使用していたのですが、そのICのGND配線の忘れでした。
初めて体験したのですがおかしい状態の時は、ほんとにIC触ったら直ったり、配線を触ったら直ったりと非常にオカルト状態。
配布されている基板で、そんなことになるときは、ICハンダ不良が原因でしょう。GND取り回しもあるかもですけど。
その他IC壊れたとか書いている人もあるようですが、ハンダ不良でしょう。
具体的には、

このICの8pinをGNDに接続してなかった。
9Pin、10PinとかICを触ると音出たりでなかったり、非常に オカルトに なります。
このオカルト状態は、とても不思議なことになります。配布基板などだとIC壊れたと思い、IC張り替えるとハンダ状態が変わるので直るのでしょう。