2021年2月11日木曜日

STM32CubeIDE: I2S DACのTDA1543を使う - 抵抗でI-V変換

TDA1543はDIP8、5V駆動可、オーバーサンプリングなしという実験に使いやすいI2S DACです。SPI DACだと出回っているものはせいぜい12bit精度ですが、TDA1543はオーディオ用なので16bit精度、サンプリングレートは192kHzまで対応しています。

TDA1543はTDA1543Aというフォーマットが異なるものがあるので要注意です。


前回の「STM32CubeIDE: I2SをDMAで使う」のプログラムをそのまま使ってみます。

配線図

TDA1543は電流出力型です。電圧として取り出すにはI-V変換を行う必要がありますが、簡単にオームの法則(V=IR)を使って抵抗1本で行いました。

データシートを見ると、

  • 電源電圧VDD MAX.=8.0V
  • フルスケール出力電流IFS=2.30mA(typ)
  • 出力電圧コンプライアンスVOC(DC) MIN.=1.8V MAX.=VDD-1.2V

となっています。VDD=8V駆動するとI-V変換抵抗RLは

RL = (VDD - 1.2)[V] / IFS[mA] = (8V - 1.2V) / 2.30mA = 2.96kΩ

となります。RLが大きいほど出力電圧が高くなるので余裕をもって2.2kΩとしました。

TDA1543のVref(7ピン)で出力のバイアス電流を設定できます。

接続する抵抗の値によって出力電流にかかるバイアスの量が変わります。I-V変換後の電圧がコンプライアンス電圧に引っかからないように、抵抗値を設定する必要があります。コンプライアンス電圧を超えると出力波形がクリップしてしまいます。

カットアンドトライの結果、この回路の場合1.5kΩが良いようです。

出力波形とI2S信号


VDD=8V

プログラムではLchをインクリメント、Rchをデクリメントしています。LogicのI2Sの値を見てもそうなっています。

ところが、Scopeの波形を見るとLch(C1:黄)が右肩下がり、Rch(C2:青)が右肩上がりになっており、プログラムとは逆の動作になっています。

これはTDA1543の電流出力が吸い込み(Sink)型のためです。この回路では波形が反転して出力されることになります。

TDA1543のデータシートのブロック図(一部)

TDA1543のデータシートのブロック図を見ると、OPアンプを使った反転型のI-V変換回路が使われています。こちらだと反転されずに電圧が出力されることになります。

また図のようにR=1.2kΩ、C=3.3nFだと、カットオフ周波数fcが

fc = 1 / (2 * π * C * R) = 1 / (2 * π * 3.3nF * 1.2kΩ) = 40.1kHz

の1次LPFの特性を持ちます。

コンプライアンス電圧


同じ回路で電源電圧VDD=5Vにするとコンプライアンス電圧に引っかかって出力がクリップします。

VDD=5V

VDD=5Vの場合、コンプライアンス電圧VOC = (VDD - 1.2) = 5 - 1.2 = 3.8Vとなりますが、実際にはもう少し高い電圧まで出力されています。

0 件のコメント:

コメントを投稿