AK4495EQのI2C制御備忘録

だいぶ前に買ったけど部品入れの肥やしになっていたAK4495EQを使えるようにしました。
DAC自作には夢がありますけど、考慮しないといけない部分があまりにも多すぎて挫折しますね…
(データシートの分析、試作、プログラム開発、基板設計、アナログ部分etc)
今回はあっさりいけたので良かったです。

AK4495EQをI2Cで制御できたので備忘録です。
I2CのデバッグはRaspberry pi 2で本番制御はArduino Pro Miniです。
Arduinoは秋月電子様のAE-ATMEGA328-MINIです。
(これ安くて小さくて便利なのでお勧め)
5V系から3.3V系へのI2CのレベルシフトはPCA9306モジュールを使いました。
DAIはWM8805を使いました。こっちも自作基板。

作りたい仕様
AK4495EQを2個使ってデュアルMONO動作で、バランス出力も付ける。
11/19追記。とりあえずできました。

以下備忘録

前準備
電源投入時はPDN pinをLOWにしてください。
Highのまま電源投入すると起動しません。
起動の流れは下記のとおり
電源投入(PDN pinはLow)
最低150nsec待ってからPDN pinをHigh
以下I2Cなどで制御します。

PDN pinをHighのまま起動してもI2C操作を受け付けますが、音が出ないのではまります。
AK4495のロジック電圧は3.3Vです。
多くのArduinoでは直接操作できないので注意してください。(3.3V機種の除く)
私は2N7002でレベルシフト回路を作りました。

パワーオンとフォーマットセレクト
パワーオンとPCMフォーマットの選択は同じレジスタにあります。
Raspberry piのI2C機能で起動する場合は下記コマンドとなります。
※フォーマットはI2S 24bit
i2cset -y 1 0x10 0x00 0x07 b

特殊な例ですが2パラする場合は下記のようになります。
i2cset -y 1 0x10 0x00 0x07 b
i2cset -y 1 0x11 0x00 0x07 b

CAD0とCAD1でチップアドレスが決まります。
CAD0とCAD1がLowの場合は0x10
CAD0がHighの場合は0x11
プルアップする場合は1k程度の抵抗でプルアップしたほうがいいでしょう。
I2Cで使用するときはI2Cピンのプルアップを忘れないこと。
パラレル制御関連のピンについてはGNDに落とすこと。

モノラル動作
0x10を左チャンネル、0x11を右チャンネルにする場合

左出力の場合
MONO bit 1
SELLR bit 0
コマンド:i2cset -y 1 0x10 0x02 0x08 b

右出力の場合
MONO bit 1
SELLR bit 1
コマンド:i2cset -y 1 0x11 0x02 0x0A b

カテゴリー: 電子工作 パーマリンク

コメントは停止中です。