2016年1月27日水曜日

PSoC 5LP Prototyping KitでPCM5102Aを使ってみる。

32bit/384kHzまで出せるPCM5102Aを使ってみた。

オーディオ用のDACのわりには外付け部品が少なくてすむが、気を付ける点がいろいろある。SSOP(0.65mmピッチ)なのではんだ付けも慣れてないとしんどいが、3.3V駆動で絶対定格が3.9Vなので電源電圧も気を付けないといけない。電源の逆電圧も絶対定格で-0.3Vとなっているので電源の逆接続もあぶない。

なので半年ぐらい手を付けないでいた。

データシートからわかること

I2SのDACなので基本的には電源とWS、SCK、SDの3本の入力、ROUT、LOUTの2本の出力が基本だが、20Pinにいろいろと機能が割り当てられている。


I2Sのクロックは12pinのBCKだが、別にSystem用にSCKというクロックも入力としてある。PCM5102Aには内部にPLLが入っていてSCKをGNDに落としておけばBCKからSysytemクロックを生成してくれるようだ。(3-Wire I2S)

CAPxxという名前のPinは負電圧を作るためのチャージポンプ回路用のキャパシタを入れる。

DEMPはデ・エンファシスとなっているがよくわからない。クロックの波形をいじるのかな?

FLT、FMT、XSMTは動作設定用で、LDOO、VNEGは使わなくてもよいようだ。

応用回路例


基本的にこの回路図通りに配線した。SCKは3-Wire I2Sとして使うのでDGNDに落とした。

ブレッドボード図


PSoC 5LPのプロジェクトはTDA1503用に作ったものを16bit/48kHzに設定して使った。
https://github.com/ryood/TDA1543/tree/master/PSoC/I2S_Test/PrototypingKit_DDS.cydsn

16bit/48kHzだとI2Sのクロック(BCK)は1.536MHzにしないといけないがクロックをPSoC 5LPの内蔵クロックを使っているので設定できない。

データーシートではクロック周波数は「±4% tolerance」となっているので
1.50048MHz~1.62552MHz
でOKなのでそのままやってみた。


電源電圧(実測)
DVDD - DGND: 3.25V
AVDD - AGND: 3.22V
I2S信号

ch1:SCK(BSK) ch2:WS(LRCK)

クロックは1.5556MHzで許容範囲内。サンプリングレートは48.54kHzになっている。


ch1:SDO(DIN) ch2:WS(LRCK)

データーはL/Rで同じものが送られるはずだがちょっとおかしい?

出力波形

ch1:ROUT ch2:LOUT

1kHzのSin波が出力されているが、ch1:1ROUTの波形がおかしい。

ch2:LOUT(拡大)

LOUTはきれい。

ch1:ROUT(拡大)

ROUTは変な波形が重畳している。カーソルで測定すると(Δ43.600us/22.94kHz)だった。やっぱりI2Sのデータが変なのかもしれない。

メモ:

データを32bit/384kHzまであげられるかテストする。
384kHz×32(bit)×2(ch)=24.576MHz 
なので80MHzのPSoC 5LPではDDSの演算が追い付かないかもしれない。

PCM5102Aはデジタル・フィルタが入っているのでゆるいLPFでも波形はガタガタがなくてきれい。

384kHz出せなくてもやっぱり5102Aでやろうかな?