ちょっと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が
途切れるようなことがなければ、問題なく使えそうなことが
わかりました。
(備忘録でした)