2022年8月10日水曜日

食わず嫌いの Philips TDA1543A USB DAC

昔の話だが、最初にCD用のDACを作ったのはバーブラウンPCM1702x8の
EVM-1702だった。この頃、知り合いに話を聞いたり雑誌のDACの記事を
読んだ。当時の評価として当然PCM1702は良い音がすると書かれていたし、
PCM1702を作ったのでTDA1543系は全く興味が無かった(今でも無い)。

当時は別のDACを作ろうと思い、PCM61辺りを買ったが挫折もした。
今と違い安価でプリント基板を自作できなかったので仕方がないだろう。
当時、プリント基板を簡単に作れていれればTDA1543系も作ったかも
しれないが・・・。

まあ、今でもTDA1543系は興味が無いのだが、音も聞かずに食わず嫌いと
言うのはなんなので基板を作ってみた。

I2SのTDA1543を買えば良かったのだが、ビットシフト基板も作ったし
安いAliexpressのTDA1543Aを買ってしまった。

とりあえずIV変換はデーターシートの回路を通り。DIPのちょっと高めの
オペアンプは断捨離で処分してしまったので、とりあえずTL071を付けた。
単電源DACの為、出力カップリングコンデンサが必要なのはマイナス要因
だろう。音?、出ましたよ。

TDA1543Aの罠はビットシフトが右詰16bitでなく右詰24bitにする事だ。
(PCM1704用の回路で動作する。)

THS4631があるはずなので後日交換する予定。抵抗IVも可能みたいだが、
どうも興味がわかない。

2021年10月19日火曜日

ESS ES9038Q2M ボード購入

前々から気になっていたのと、オーディオをハイレゾ化して
CDデッキを処分しようと思いES9038Q2Mボードを買った。

一番安いのを買ったが、入力切替とボリュームはスイッチで
なくジャンパー切り替えの方が良かった。買ったのでこれを
使うが・・・。

前に作ったアンプの空き箱と、手持ちの部品で組み立てた。
気に入れば箱を買って3.3Vと5Vは別電源にしよう。

ES9038Q2M基板はコンデンサの高さを下げる為に容量が
減るがOSコンの100uFにした。オペアンプは前に買った
ジャンクのディスクリートオペアンプを修理した品物
あったので付けてみた。

カップリングコンデンサはCDデッキから外した高そうな
コンデンサがあったので使ってみた。別基板なので抵抗が
必要だったので手持ちの使っていないRMG抵抗を使った。
ここにだけ入れても音は良くなるとは思えないが、今後
使う事も無さそうな抵抗なのでまあ良いだろう。

手持ちのamaneroのピンは下側に付いていたので基板は
裏向きになった。

ノイトリックのパネル用USBコネクタが高かったが、箱に
ノイトリック用の穴が開いていたので仕方がない。

音は鳴るが良いかどうか良く判らなかった。スピーカーを
キッチリ合わせないとダメだな。

とりあえずCDデッキはヤフオク行き。

2021年9月17日金曜日

没作品 PIC32MX AD1860N DAC

SANYO LC7881 DACを作っている時にPIC32MXのサンプル
プログラムを変更せずに動作するDACが作れないかと考えて
作ってみた品物。うまく動けば雑誌に投稿しようと思ってた。

雑誌投稿を考えてDIPで作成した。

マイクロチップ社の元々ののPIC32 USB DIGITAL AUDIO
ACCESSORY BOARDはDACチップとしてAK4645Aが載って
おり、PIC32MXとI2Cで接続されてMCKの分周もAK4645A
の担当だ。これらを何とかする回路が必要だ。

I2C機器が接続されていると見せかける回路と外部分周回路を
作った。これでI2S 32bit信号になるのでAD1860N用に右詰め
16bitに変換すればAD1860Nが鳴る。

まあここまで作って音が鳴る様になったのは良いが、どうも
AK4645Aの録音側のI2S入力に関係するノイズが出る様だ。
SANYO LC7881 DAC その16に書いた割り込みかもしれない。

と言う事で没作品になった。I2C機器が接続されていると見せ
かける回路が参考になるかもしれないので紹介だけした。

2021年9月16日木曜日

SANYO LC7881 DAC その19

トロイダルトランスが届いたので電源系統を組み立ててみた。

+5V、+6Vはちゃんと出るのに-6Vが出なかった。調べると
Aliexpressで買ったLM337が偽物だった。LM317も一緒に
買ったのでこっちも偽物でAMS1117の様な品物かもしれない。

仕方がないからLM337をDigikeyで買おうと思ったら最近の
半導体不足の為か品切れだった。半導体不足なので、たぶん
Aliexpressで買っても偽物が届きそうなのでどうするか悩んで
いた。メイン基板やり直し、TO-220用電源小基板作成など。
とりあえず79L05で-5Vを作ってLM337が入手するまで使う
事にした。

基板はこんな感じになった。

後はソフトウェアの調整だけでブログに書く程の重大な修正は
無いだろう。

2021年8月27日金曜日

SANYO LC7881 DAC その18(Visual C++編)

PIC32MXを複合デバイスにしたので、それと通信するソフトを
作成した。

元々HIDとの通信は過去にやった事があるので、そのファイルを
探してきた。Visual Studioで作っていたが、作ったのは5年前
だった。Visual Studioを使ったのはこのプログラムだったので、
長いことWindowsプログラムはしていなかった様だ。

以前は使用するパソコンとの関係で、Windows XPでも動作する
様にコンパイルしていたが、もうWindows 10より古いOSは使わ
ないだろうから試しにVisual Studio Community 2022 Preview
を入れてみた。

5年前のプログラムなのですっかり忘れていたがC++言語部分は
同じなので、とりあえず動くものが出来た。HIDのコントロール
方法はうっすら覚えている部分もあるが、プログラムの通信部分
の内容は全然判らなかった。

PIC32MXとHID通信し、各種情報やバッファのサイズ等を取得し、
ログをファイルに保存する様にした。

PIC32MXと通信するのでVisual StudioとMPLABを同時に起動して
プログラムを調整するのはなかなか面倒だ。

HIDが追加された為に処理時間が増えたのか、バッファの数値に
バラツキが増えた様だ。

2021年8月25日水曜日

SANYO LC7881 DAC その17(PIC32MX編)

PIC32MXのUSB Audio部分は概ね問題無いと思うが、
長期試験するにあたりPIC32MXの状態をRS-232Cで
通信するのはケーブルが2本になる上に変換基板まで
ついて面倒だと考えた。

以前書いたUSB複合デバイスにする手は無いかと再度
調べたところ、古いMicrochip Application Librariesに
サンプルがある事が判った。サンプルを調べたところ、
異なる種類の複合デバイスではUSB Framework内で
パケットを振り分けてくれるみたいなのでプログラムは
追加するデバイスの分を書き足せば良いだけで、思った
よりは簡単だった。

初めてだったので手順が判らなかった。複合デバイスを
作る為にこのブログを見つけた人の為にお勧めの手順を
書いておく。

①主となるデバイス(私の場合はUSB Audio Class)を
動作する状態にする。

②①で作ったプログラムのusb_descriptors.cを編集し、
主となるデバイスの部分をコメントにして、副となる
デバイス(CDCやHID)のdescriptorを書く。この状態で
①で作った状態のプログラムに副となるデバイスの
プログラムを追加し、主となるデバイスのプログラムが
ある状態で単独で副となるデバイスのみで動作させる。
(CDCやHIDの単独デバイスで完全動作を確認する。)

③descriptorの内容を主にすれば主のみが動作し、副に
すれば副のみが動く様になる。この状態が完成したら
descriptorを複合デバイスに変更する。

注意点はusb_config.h内に書くインターフェースIDと
エンドポイントがそれぞれデバイスで異なる様にする
事だ。

複合デバイスにを考える時にCDC(仮想COMポート等)に
するかHIDにするかを考える必要がある。CDCの場合は
ドライバが必要になる。仮想COMポートにする場合、
Microchip Application Librariesにドライバがあるが、
このPID/VIDは当然AudioのIDと異なる。PID/VIDを
CDCと同じにすれば動くかもしれない。ドライバ内に
書いてあるPID/VIDを変更すれば良さそうに見えるが、
変更すれば署名が要求される可能性がある。一方HIDの
場合はRS-232Cの様にターミナルソフトで接続できない
のでWindowsのプログラムを書く必要がある。考えた
結果、過去にPIC16F1454でHIDを作った経験がある
のでHIDにする事にした。

ここまで作ってから書くのも何だが、複合デバイスに
したのにサンプルプログラムのPID/VIDをそのまま使う
のも何だと思う。仕方が無いからマイクロチップ社の
ページでPID/VIDのサブライセンスを申請した。

2021年8月22日日曜日

USB DAC自作考察

PIC32MXプログラムの改良を検討したが、Windows
Audio Classの場合はどうやってもパソコンからの
データー垂れ流しになる。ふとパソコン側のソフトも
自作になるがHIDクラスで作れば良いのでは?と思い
考えた。

HIDクラスでPIC32MX側からバッファの容量に応じて
データを送ってもらい、リングバッファに入れて現在の
I2Sで再生させるだけだ。パソコン側はプログラムが
面倒なのでwav専用となるだろう。

この状態でハイレゾになるとどうなるか考えた。USB
Audio Class 1.1では192kHz 16bitが限度と書いていた
のを思い出したから検索してみたらUSB Audio Class
の限度でなく転送モード(Full-speed)の限度だった。
どうもUSB2.0対応マイコン+High-speedでもっと
上のハイレゾが使える様だ。こうなってくると、
USB Audio Classの1.1と2.0の違いが良く判らないが
それは置いておいてUSB2.0 High-speed対応マイコン
が必要なので調べた。

今使っているPIC32MXはFull-speedだった。PIC32MZ
ならHigh-speedみたいだ。しかし秋月で1100円もする。
もっと安いのは無いか調べたらATSAM3U1Cが安そうだ。
しかし、こいつは・・・。

まあ簡単に書くと、amanero combo 384の互換品でも
買って自作ファームを書き込めば良いと言う事だ。その
方がハードを自作するより安そうだ。特殊なDACチップ
の場合は付属の水晶モジュールを交換すればOKだし、
変換回路もCPLDに書けて非常に都合が良い。まあ
プログラムしたいならの話だが。

結論はPIC32MXでは現状か192kHz 16bit迄の拡張とし、
それ以上は素直にamanero combo 384を買って使う
のが良いだろう。

訂正:386→384