コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

テレビ出力の方が一息ついたので今度は音声の出力。
V850ES/JG2 には DAコンバータが 2ch ついていて、こいつらのセトリングタイムが 100kHz くらいは余裕であるので音声の出力に使える。
でも、電圧的には Vdd 範囲でも電流がほとんど得られないのでスピーカーを駆動させるためにはどうしてもオペアンプを通す必要があるわけだ。


コードの茂みの奥で見えにくいけれども DIP8ピンのICが刺さっている。これはオペアンプではなくて PSoC(CY8C27134)。
PSoC のアナログ部分を使ってゲイン値のプログラム可能な簡易アンプとして使おうという作戦。ついでにローパスフィルタも付けちゃえ。
他に部品が要らないのでラクチンラクチン。実験には最適。
流石にパスコンぐらいは付けないと、スピーカーから盛大なノイズが聞こえるけれどもね。


基板にまとめた。
ついでにタクトスイッチを二つつけて、ソフトウェアでゲイン値を変更できるようにする。簡易ボリュームやね。
PSoCのプロジェクトファイル
psoc_amp_070714.zip
V850側の音声ドライバは、DMA を使って DAC にデータを流し込む方式。
カウンタ TP2 を使って 8kHz のトリガを使い、DMA はそのトリガが来たら 1byte を DAC のレジスタへ転送をする。
一般的な音声ドライバの構成。

わかりにくいので図にするとこんな感じ。複数CH の重ね合わせができるように作ったのだけれども、どうしても 1声しかでなくてしばらく悩んでいた次第。どうやら、音声を合成してバッファに用意する部分の処理が重くて、メインに戻って来れていないのが原因だったらしい。コンパイラの最適化をかけることでなんとか回避。
そのうち高速化を考えるにしても、今のところは気をつけて使う様にすれば良いか。
サンプルソースコード
audio_drv_070714.zip
サンプルでは P4.0〜P4.2 に繋いだスイッチを押すと、エアキャップ(プチプチ)をつぶす音が出る様に作ってある。でも、タクトスイッチのクリック音の方が大きくて全然楽しく無い罠。
音声データは 8kHz MONO の wav ファイルの内、波形データ部分を取り出したものを ROM に焼き込んで、それをならしている。


だんだんゴテゴテとしていくけれども、これで必要な要素は揃った。

Leave a Reply