2016年2月21日日曜日

オーディオ用DACを使ったファンクションジェネレータ 結合テスト

配線図


I2C LCDの電源のOn/OffはMOS-FETで行うつもりだったが、秋月のAQM0802は1mAしか消費しないのでPSoCのGPIOで直接駆動することにした。

LCDの電源実測値
電圧: 3.28V
電流: 0.15mA
ちょっと怖い感じもするが、実測では0.15mAしか流れていなかった。PSoCのPinの設定は「Strong Drive」で正負両方FETでドライブされている。


PSoCの駆動周波数


Github:
https://github.com/ryood/I2S_FG/tree/master/PSoC/I2S_FG/PrototypingKit_FG_Test.cydsn

PSoC CreatorのTopDesign

PCM5102aのサンプリングレートを382kHzにするために48MHz駆動させていたが、演算が追いつかないようだ。

20MHzの水晶で80MHzに逓倍した場合と40MHzに逓倍した場合を比較してみた。サンプリングレートはどちらも
40MHz(I2Sコンポーネントに入力したクロック) / 32bit / 2ch / 2 = 312,500Hz
出力に2000pF/470Ωの1次RC-LPFを入れている。

80MHz駆動

ch1:LPF通過後 ch2:LPF通過前

40MHz駆動

40MHzの方はときどき出力レベルの更新が間に合っていないようで波形が崩れている。


出力波形



ch1:LPF通過後 ch2:LPF通過前

10kHz程度でも1次LPFだけでは波形のガタガタがわかる→正弦波の歪になる。外付けにするにしてもう少しスパっと切れるLPFは必要かな?

メモ:


DMAのバッファの更新をL/RでPing Pongで書き換えすれば48MHzでも間に合う?

L/R出力して、LのDMA転送終了でバッファを書き換えてRを使えば間に合う?

CPUは内蔵クロックで80MHz駆動してI2Sのクロックだけ外付けのクリスタルで生成できないか?(非同期)

<追記:2016.02.24>

非同期作戦はI2SコンポーネントがUDBで作られているのでMaster Clockと同期していないとダメと怒られてBuildできなかった。

PSoC Creatorをだまして96MHz駆動させるのは成功。(10MHz水晶を使う設定で80MHz駆動させて実は12MHzの水晶を使って96MHz駆動させる)

長時間動かして壊れたらいやなので完成してから実験する予定。

</追記>