復元・復旧サービス充実|(有)フロンティア・オンライン

復元・復旧サービス充実|(有)フロンティア・オンライン

【深淵オーディオ】(1)設計・スペック:ESP32-S3コアでPro Audio仕様USB DAC 自作(DIY)

‹ 2025/12/22 ›

こんばんは。今回より手作りUSBDACの話となります。


写真の通りの構成で、Pro Audio仕様のUSBDACを作りあげます。汗

そして、なるべく理解が進むような記事にしあげます。



いやー、ちゃっち~ですね。^^;

主要な構成は、よくあるパターンのこちら。


  • DDC(USB、RX):XAIO ESP32S3(無印N2)
  • DAC(I2S、TX):PCM5102A基盤キット
  • ディスプレイ:SSD1306(OLED、表示)

スペック

「で、今回のPro Audio仕様ってどういう感じよ?」


ということで、早速、今回の狙い、目標仕上がりに迫ります。^^


Audioモード:マルチ対応(48KHz~192KHz/16bit、48KHz~96KHz/24bit、48KHz/32bit)、ボタン切替

Control:USBマウント、Stream開閉、Mute、Volume対応

対応ホスト:Windows/Mac/Android/iPhone

品質:超低ジッター、低レイテンシー、楽曲再生用リアルタイム性重視

筐体:携帯可、USB給電、バッテリ駆動なし


「ESP32S3とPCM5102Aの単純構成でここまで狙えるんですか?!」

「MCLKはどうすんの?」

とお思いのあなた、狙えますのでご安心を。^^;

そして、外部マスタ―クロックを使わずやり切ります。

制御設計

では、早速、その制御設計を紹介。

ご存知のとおり、まずUSBDACの担当割フロー図を見てみます。


ここで一度、図を基にUAB-DACの仕組みをおさらいしておきます。


一般論的に言えば、ホスト(PC、スマホ)からUSB経由(USBクロック)でデジタル音源(PCM)で受けたものを、DACが理解できる正確なルールでデジタル音源(PCM)に変換し、I2S送信(I2Sクロック)すればUSB-DACの機能は果たせます。


さて、この一言で2つのクロックが現れました。図で言えば左右の車輪です。


一つは「USBクロック」、元をたどれば音源ホストにも由来するクロックです。

一つは「I2Sクロック」、先に進めばDACにも影響するクロックです。


これら『二つのクロックは、完全に同調した一つのクロックに見立てられる』でしょうか?


答えはいいえです。

この構成では、そしてもっといえば一般的なUSB-DACには二つのGMTがあると思って正しいです。

ということはデジタル音源をなるべく綺麗なデータのままDACまで届けるためには、間にもう一枚「クロック補償コントローラ」が必要になります。


ここで、例えばWindowsPCでUSB-DACを使ったことがある方なら、「あれ?」と思うことがあります。


「WindowsではDACに最適なサンプルレート、ビット深度が選べるじゃないですか!」

「だから、頭からつま先までピッタリフィットする設定を選んで同調し、ストレートに高音質ですよ!」


と・・・、一見でDDC(デジタルデジタルコンバート)の全同調をそのように感じてしまったあなた、Pro Audio仕上げまで迫りたいあなた、理解を深めたいあなた、iPhoneまできっちり再生したいあなた、一旦この思い込みを捨てるところから始めましょう。


PCM2704型が終焉した理由、今XMOS(など)が必須の理由が正にここにあります。


今回は、ProAudio仕様を始からうたってますので、作り上げる重要なパートとして、ESP32S3の限界までXMOS同等の機能を埋込もうという流れです。^^


ESP32S3スペック確認

今回のパクリMOS心臓部には、軽快さ・技適通過、実効性を鑑みて、XAIO製ESP32S3をチョイスしました。


ESP32S3はUSB-OTGモード(USB1.0/1.1 full-speed規格まで)が使えます。

(ESP32P4だとUSB2系high speedも行けますが、まだちょいとお高い、サイズを鑑みたいとなると、今はwaveshare社nanoキット一択かなと)

(UACはプロトコル仕様なので、ESP32S3でもUAC1.0/2.0どちらも対話可能)


そして、DAC同調マスタークロックはESP組込み分でPLL160MHzとXTAL40MHzの2種が選べます。


GPIOピンは、USBに+D/-D2つ、DACにMCLK、BCLK、LRCK、DOUTの4つ、ディスプレイにSDA、SCLの2つ、デバッグSerial用2つの計10ピンが、XAIOキットで賄えます。

電源は、USB・DAC5V(基板に3.3V降圧が付いてる)、OLED3.3V、5VはUSB給電、3.3VはXAIO配電で考えてます。


ソフトウェア構成

パクリMOS本体のコントローラソフトウェアは、勿論ESP32S3で構築します。


使うソフトウェア環境は次の通りとなります。


IDE:Visual Code

環境:PlatformIO

Target:XAIO ESP32S3

Platform:Espressif32

Framework:ESP-IDF 5.5.0 2nd stage

Components: ssd1306 lib(http://robotcantalk.blogspot.com)、TinyUSB(tinyusb.org)


「UACするならUSB Device UACは要らんの?」

(https://github.com/espressif/esp-iot-solution/tree/master/components/usb/usb_device_uac)


ということで、USB Device UACはUAC2.0HighSpeedまで対応してますし、ほぼほぼフルスペックなのですが・・・。

今回の目的Pro Audioに達しがたいので使いません。


つまりなのですが・・・、UAC手続きとUSB応答をフルコーディングします。

じゃないとですね・・・、残念ながらパクリMOSにはなりません。^^;


次回は、パクリMOSの基本構成と初手のマスタ―クロック作りに入ります。