posted by rerofumi
2007/7/14 土曜日 17:41:54
テレビ出力の方が一息ついたので今度は音声の出力。
V850ES/JG2 には DAコンバータが 2ch ついていて、こいつらのセトリングタイムが 100kHz くらいは余裕であるので音声の出力に使える。
でも、電圧的には Vdd 範囲でも電流がほとんど得られないのでスピーカーを駆動させるためにはどうしてもオペアンプを通す必要があるわけだ。
コードの茂みの奥で見えにくいけれども DIP8ピンのICが刺さっている。これはオペアンプではなくて PSoC(CY8C27134)。
PSoC のアナログ部分を使ってゲイン値のプログラム可能な簡易アンプとして使おうという作戦。ついでにローパスフィルタも付けちゃえ。
他に部品が要らないのでラクチンラクチン。実験には最適。
流石にパスコンぐらいは付けないと、スピーカーから盛大なノイズが聞こえるけれどもね。
PSoCのプロジェクトファイル
psoc_amp_070714.zip
psoc_amp_070714.zip
V850側の音声ドライバは、DMA を使って DAC にデータを流し込む方式。
カウンタ TP2 を使って 8kHz のトリガを使い、DMA はそのトリガが来たら 1byte を DAC のレジスタへ転送をする。
一般的な音声ドライバの構成。
カウンタ TP2 を使って 8kHz のトリガを使い、DMA はそのトリガが来たら 1byte を DAC のレジスタへ転送をする。
一般的な音声ドライバの構成。
わかりにくいので図にするとこんな感じ。複数CH の重ね合わせができるように作ったのだけれども、どうしても 1声しかでなくてしばらく悩んでいた次第。どうやら、音声を合成してバッファに用意する部分の処理が重くて、メインに戻って来れていないのが原因だったらしい。コンパイラの最適化をかけることでなんとか回避。
そのうち高速化を考えるにしても、今のところは気をつけて使う様にすれば良いか。
サンプルソースコード
audio_drv_070714.zip
audio_drv_070714.zip
サンプルでは P4.0〜P4.2 に繋いだスイッチを押すと、エアキャップ(プチプチ)をつぶす音が出る様に作ってある。でも、タクトスイッチのクリック音の方が大きくて全然楽しく無い罠。
Leave a Reply