ちょっとTea Tim!? 思い出したようにAD1860をDACとして動かしてみる(備忘録)。 2024.3.15

以前にRaspberry Pi用のI/O基板にDACを搭載するために、
AD1860(18bitのマルチビットオーディオDAC)を使おうとして
失敗しました。
 失敗の原因は、Raspberry PiのOSはLINUXのため、割り込みが
頻繁にかかります。そのため、AD1860へのデータ転送中にCLK信号が
途絶える状態になってしまい、正常にデータが転送できないということでした。

では

CLK信号が途絶えなければ、大丈夫じゃなかろうか?
ということで、割り込みがかからないMCUをつかって、
AD1860を動かしてみることに。
 ちなみに、なぜこの実験をしようかと思ったかですが、
単にふと、思い立っただけです。ほかにやることもおおいのだけど(笑。


MCUには秋月のRP2040ボードを使いました。AD1860は-5Vも必要なので、
それはDCDCで生成しています。


DACを動かすためのサブルーチンは簡単です。
ちなみに、プログラム作成はRasPiをつかっています。

void ad1860_out(int a)
{
 int j=0x20000;
 output_high(LE);
 for(int i=0;i<18;i++){
  if(a&j) output_high(DATA); else output_low(DATA);
  output_high(CLK);
  j = j >> 1;
  output_low(CLK);
 }
 output_low(LE);
}

大丈夫そう!

1周期が128点の正弦波をテーブルを作成して、
それを順じ出力するプログラムを作成して動作させてみました。
特にノイズ等もなく出力できるようです。

ちなみに、発振周波数が1.2459kHzになっているので、
DAC出力のサブルーチンの所用時間は
1/1245.9/128=6.27E-6(s)
となって、およそ6.3us以下が得られる感じです。
クロック周波数は18倍だから260nsかあ〜。
もうちょっと速くなりそうな気もするけど、こんなもんかな。

ノイズもなくDACとして使えそうです。

次に一度DACにデータを送信したら、100us休止するように
変更しました。すなわちデータ転送が終了した後に、クロックがなくてても
データが出力し続けることができるかの確認です。
こちらも、ノイズもなく問題なく動くようです。
さらに休止時間を1msにしても大丈夫でした。


DACへのデータ転送後に100us間クロック停止させていますが、
ノイズ等もでないようです。


まとめ
AD1860を汎用DACとしてつかう場合、データ転送中のCLKが
途切れるようなことがなければ、問題なく使えそうなことが
わかりました。

(備忘録でした)