・勉強で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がきちんと書き換えられていることが確認できた。
いったん動作検証はここまで。