2016年1月24日日曜日

PSoC 5LPとオーディオ用DACを使ったファンクションジェネレータの構想

Github:
https://github.com/ryood/TDA1543/tree/master/PSoC/I2S_Test/PrototypingKit_DDS.cydsn

前回、DDSで波形を生成したとき10kHzのサイン波がブレブレだったのはDMAの転送元のバッファの書き換えがI2Sの送信に追いついていないのが原因だったようだ。

バッファを2ch分でなく同一のものを参照するようにしたらブレはなくなった。

10kHz

100kHz

129.8kHz

LPFを入れていないのでガタガタはあいかわらずですが。

I2Sのクロックは9MHzにしたのでサンプリングレートは9MHz/32(bit)=281.25kHzだが、PSoC 5LPの内蔵クロックの誤差を測定してSampling Rateを279658Hzに設定した。

129.8kHzの測定はこのサンプリングレートの1/2の周波数をDDSで出力したもので矩形波になっている。

このままTDA1543でLPFを入れるか、PCM5102AにするかわからないがDDSで波形を生成する方向でやってみようと思う。

入力インターフェイス

ロータリーエンコーダーで周波数を選択するようにコードを書いたが、100kHz程度まで出力できて1Hz単位で周波数を設定するのは結構しんどいのでキーパッドとロータリーエンコーダーを組み合わせて選択することを考えてみた。


メモ:

192kHz/32bitでI2Sのクロックは12.288MHz。12MHzにするとCPUの駆動クロックは6倍で72MHz、7倍で84MHz(PSoC 5LP Prototyping Kitは80MHzでなので仕様外)。