PC Audioは以下の様なパターンがあります。
これまでやったことがなかった一番下のタイプを、AtherosのPCMドライバーで試してみました。
ターゲットはハードオフで324円で購入したAtherosのAR9341を使ったルーターです。
I2Sは機器内での配線の為の規格で、あまり長く引き伸ばすこはできません。しかしクロックが信号線に含まれるためにより正確な処理が可能です。
SOCでI2Sのサポートがあってもマスタークロックのない3本の信号線のものがありますがAR9341は4本の正式なI2Sのサポートです。
I2Sは4本必要なのですが、ちょうどルーターのLANのLEDが4つありそれを使うことにします。LEDはGPIO1,2,3,4に接続されていました。
LEDではなくI2Sで使うためC394,C398,C397,C396を外します。プルアップやダンパー抵抗はあっても動くことが多いので、そのままにしておきます。
GPIOのPIN MUXでGPIOからI2Sに変更します。hintsはこの様にしました。
# pcm
hint.pcm.0.at="apb0"
hint.pcm.0.maddr=0x180b0000
hint.pcm.0.msize=0x1000
hint.pcm.0.irq=7
# I2S
hint.gpio.0.func.1.gpiofunc=15
hint.gpio.0.func.1.gpiomode=1
hint.gpio.0.func.2.gpiofunc=14
hint.gpio.0.func.2.gpiomode=1
hint.gpio.0.func.3.gpiofunc=13
hint.gpio.0.func.3.gpiomode=1
hint.gpio.0.func.4.gpiofunc=12
hint.gpio.0.func.4.gpiomode=1
gpiofuncはデーターシートを参考にしています。
LEDを付けたままアノード側から信号を拾い出します。LEDを付けたままの方がパターンの強度が保たれます。
48Kのマスタークロックは256fsです。
pcmドライバーのコードはここにあります。
新潟精密のDACにつないでWBGOを聞いてみました。自分が作ったと言うだけどいい音に聞こえますし、オカルトUSBケーブルも必要ありません。
シルバーの箱はぺるけさんのFET式差動ヘッドフォンアンプです。
コネクタはUSB DAI同じにしました。
Pin | Function |
---|---|
1 | 5V |
2 | GND |
3 | MCLK |
4 | BCLK |
5 | LRCLK |
6 | SDATA |
FN1242,PCM5102はOKでしたがTDA1543,AK4382AはNGでした。まだ調整が必要なようです。
STEREO_CONFIGのI2S_DELAYが現在0なのですが1で試してもだめでした。1にするとちゃんと鳴ってるFN1242にもノイズが出ます。
このルーターはブートローダーをu-boot_modで焼きなおしてあります。
そのままつないだらノイズまみれだったFN1241がバッファに74HC125を入れたところちゃんと鳴るようになったのですが、74LVC125に変えたらまったく鳴らなくなりました。FN1242は鳴ります。LVCの方がいいというページもあったのですが。