デバイス動作確認

MCP4726(12bit DAC)の動作確認

・勉強でMCP4726を触ってみる。
・I2Cで制御。
・秋月電子で変換基板に実装した状態のモジュールがあったので購入。250円。
 https://akizukidenshi.com/catalog/g/g107995/

回路図

仕様書のReference回路を参考にした。

USB-I2C Converter (REX-USB61)を使って動作確認

・RATOC Systems社のREX-USB61を使用して、I2C通信を実施。
・VDD = 5[V]を安定化電源から入力
・VREF端子はOpen。VDDをVREFに使用する想定。つまり、VREF[1:0]=00の想定。

初回起動時のREAD COMMAND

・MCP4726仕様書の”6.5 READ COMMAND”を実施。

・PC側をMasterにして、下記コマンドを送信。
 スレーブアドレス(7bit) : 0x60 (HEX) = 1100000 (BIN)
 転送方向 : Read
 ストップコンディション : Stop
 データ転送長 : 6byte

・スレーブ(MCP4726)からのデータ : C0 00 00 E0 00 00
 VolatileとNon Volatileともに下記の状態
 RDY : 1、POR : 1、VREF[1:0]=00、PD[1:0]=00、G=0

・出力電圧 : 3.44mV (テスターで測定)

Vol. DAC Registerにデータ書き込み(出力電圧の設定)

出力電圧max(1111 1111 1111)に設定

・MCP4726仕様書の”6.1 Write Volatile DAC Register”を実施。

・PC側をMasterにして、下記コマンドを送信。
 スレーブアドレス(7bit) : 0x60 (HEX) = 1100000 (BIN)
 転送方向 : Write
 ストップコンディション : Stop
 転送データ : 0F FF = 00001111 11111111

・出力電圧 : 4.974V (テスターで測定)

この状態でもう一度 READ COMMANDを実施

・MCP4726仕様書の”6.5 READ COMMAND”を実施。

・PC側をMasterにして、下記コマンドを送信。
 スレーブアドレス(7bit) : 0x60 (HEX) = 1100000 (BIN)
 転送方向 : Read
 ストップコンディション : Stop
 データ転送長 : 6byte

・スレーブ(MCP4726)からのデータ : C0 FF F0 E0 00 00
 VolatileのData Bit : 1111 1111 1111 になっている。
 VolatileのData Bitがきちんと書き換えられていることが確認できた。

・今のままだと、Volatile DAC Registerに書き込んだだけなので、
 VDDを入れ直すと出力電圧は0[V]付近に戻っている。

EEPROMにデータ書き込み(起動時の初期電圧設定)

出力電圧 VDD/2くらいに設定 (0111 1111 1111)

・MCP4726仕様書の”6.3 Write All Memory”を実施。

・PC側をMasterにして、下記コマンドを送信。
 スレーブアドレス(7bit) : 0x60 (HEX) = 1100000 (BIN)
 転送方向 : Write
 ストップコンディション : Stop
 転送データ : 60 7F F0 = 01100000 01111111 11110000

・出力電圧 : 2.508V (テスターで測定)

・VDDを切って、再度VDDを印加すると出力電圧が2.508Vを維持している。

この状態でもう一度 READ COMMANDを実施

・MCP4726仕様書の”6.5 READ COMMAND”を実施。

・PC側をMasterにして、下記コマンドを送信。
 スレーブアドレス(7bit) : 0x60 (HEX) = 1100000 (BIN)
 転送方向 : Read
 ストップコンディション : Stop
 データ転送長 : 6byte

・スレーブ(MCP4726)からのデータ : C0 7F F0 E0 7F F0
 Vol./NV Data Bitはともに 0111 1111 1111
 Vol./NV両方のData Bitがきちんと書き換えられていることが確認できた。

いったん動作検証はここまで。