製作編21
PCM1792AのI2Cインターフェースを使って、モノラルモードの設定を行います。記事作成に余裕があるため、9月4日まで隔日のアップロードを継続します。
I2Cについて
I2Cはフィリップスが開発したシリアルバスです。通信はSDA(シリアルデータ)とSCL(シリアルクロック)の2線式です、7ビットのアドレス空間のうち16の予約アドレスを除いた112個のノードが同一バス上で通信可能な規格です。今回はArduinoをマスター、2枚のDAC基板をスレーブとして通信を行います。話は逸れますが先日ニュースで通信規格仕様中で使用されるマスター、スレーブの呼称を変えるとの報道がありました。日本人にはあまりピンときませんが、奴隷制度を連想する事が理由だそうです。馴染んだ呼称を変える事はすぐにはできそうにありません。
PCM1792Aの仕様
下の抜粋は、PCM1792Aのアドレス設定に関する仕様です。
下位の2ビット(ADR0/1)がICの端子電圧で設定され、1つのバス上にアドレス4Ch~4Fhとして最大4個接続可能です。デジットキットではADR0/1を決める各端子がプルアップされているため、デフォルトでアドレスは4Fhとなっています。今回はこのアドレスと、ADR0を決める端子をGNDに落として4Ehの2つのアドレスを使用する事にしました。下記はこの仕様をソースコードに反映した部分です。
次はモノラルモード設定に関する仕様を確認します。設定機能はレジスタ20にあります。下記がレジスタ20の機能一覧です。
この中のMONOビットとCHSLビットを操作して各DAC基板をL/Rバランス出力モードに設定します。下記がMONOビットに関する仕様の抜粋です。
MONOビットはデフォルト0で、ステレオ動作となっています。このビットを1にセットします。次にCHSLビットの仕様を確認します。
CHSL=0でLチャンネル、CHSL=1でRチャンネル再生モードとなります。これらの設定は、ArduinoのWire.hライブラリを使用すると簡単に設定できます。下記はそれぞれのDAC基板にL/Rチャンネルモノラル再生モード設定を行う関数(MonoLI2CとMonoRI2C)のソースです。関数の呼び値valueに設定するDAC基板のアドレスを入れてコールするとその基板が所定の動作モードに設定されます。
動作確認用のMain関数は、上記をコールしてループ処理でアイドリングさせています。
これで確認用のソースの準備が完了しました。
I2Cバス接続
次はDAC基板とAruduino間を接続します。ソースを作成するためにPCM1792Aの仕様を見ていたところ、このICは5V入力に対応していますが、出力レベルが3.3Vの為、回路変更する事にしました。作成すみのシールド基板を改造します。改造する回路図は以下のとおりです。
改造後のシールド基板かこんな感じとなりました。段々汚くなってきましたが、隠れてしまうので気にしない事にします。
次は配線用ケーブルをつくる為にDAC基板の仕様を確認します。
CN3B(5pin)がマイコンインターフェース用のピンヘッダです。シリアルバスは2芯のシールド線を使用する事とします。SPDIF出力ではシールド電線を使って痛い目にあいましたが、このバスは低速なので問題なしと判断しました。
1ピンと2ピンはプルアップされているので、アドレス4Fh設定の場合はオープンとなります。2本の電線は短くカットして端末保護チューブを被せて処理しました。
一旦、このケーブルを使って動作確認を行う事にします。本記事のアイキャッチ写真はDAC基板に作成したケーブルを接続した状態です。紙面が尽きたので確認は次回記事で紹介します。
つづく(製作編22)