2014年9月27日土曜日

MCP4726の使い方メモ。



がた老AVR研究所
によると、


 EEPROMの使い道はまだ良くわからない。判然とはしないが、電源断を含む運転を想定していて、前の値を保持しているだけのようだ。

この辺りは私も手を出す予定はないのでパスしよう。


ディバイスのアドレスは出荷時に固定で、あとからは換えられない。

D/Aコンバータを増やすたびにFPGAのIOを消費するかと思ったが、
恐らくその心配はなさそうだ。(I2Cだし……)

と、思ったのだが、秋月のDIP版の説明書が、マニュアルの必要部分を要約していて、
どうやらアドレスは全て
「ICアドレス:‘1100000’(7ビットアドレス) 」で固定らしい。
良く見ると「http://akizukidenshi.com/catalog/g/gI-07611/」の説明にも書いてあった。
最悪だ。
この説明はマニュアルのpage.46
ICの型番でアドレスが決まっている。
「http://www.chip1stop.com/」に「MCP4726A0T-E/XX」以外の型番を発見。



 データシートには具体例があるので、数値入力12ビットをアナログ化する手順だけなら間題ない。1ブロックを27ビットとし、頭1バイトをI2Cのマスター書き込み宣言、続いてデータバイト2バイトを送る。それぞれのバイトのあとにACKビットが1ビットづつ付くので計27ビット分を送ると、ディバイスはアナログ電圧をラッチする。



I2Cのクロックは、625μsのサンプリング期間に27ビットが送り終える速さにしなければならない。ビットレートを100khz程度で、30ビット->300μsで送れるようクロックを調整する。



そもそもの、I2Cについては、
電子工作の実験室」の「I2Cモジュールの使い方」(http://www.picfun.com/i2cframe.html)の
I2Cの接続構成とプルアップ抵抗
I2Cの基本データフォーマット

CCS Cコンパイラ実用プログラミングテク」の「11. I2Cの使い方(旧)」を参考にする。



あとはマニュアルのpage.50からのタイミングを見れば大体なんとかなりそうだと分かった。

ただ、プルアップ抵抗の値が心配なのと、クロスストレッチって、これショートしてませんか?
まあ、クロスストレッチに関してはその部分のタイミングが掛かれていないので、考えなくても大丈夫かな?

データシートのpage64によると、プルアップは

R1 and R2:
5 kΩ - 10 kΩ for fSCL = 100 kHz to 400 kHz
~700Ω for fSCL = 3.4 MHz



出力電圧は電源電圧に対して12Bit分に分割されると考えて合っているのだろうか?
……まあ、やってみれば分かる事か。




型番メモ。

秋月電子
MCP4726A0T-E/CH
2個入り180円(1個90円)


「http://www.chip1stop.com/」

「MCP4726A0T-E/CH」
1個135円~
「MCP4726A0T-E/MAY」
1個200円~


「MCP4726A1T-E/CH」
1個135円~


「MCP4726A2T-E/CH」
1個135円~


「MCP4726A3T-E/CH」
1個135円~

今回は6個使う予定なので、数百円高くなるが、秋月に無い型番はこちらで調達しようと思う。
Clockは共有できるので、クロック以外の6ピンが2ピンに削減できる予定。




page.8より

SCL pin Frequency

Standard mode 0 100 kHz Cb = 400 pF, 2.7V - 5.5V
Fast mode 0 400 kHz Cb = 400 pF, 2.7V - 5.5V
High-Speed 1.7 0 1.7 MHz Cb = 400 pF, 4.5V - 5.5V
High-Speed 3.4 0 3.4 MHz Cb = 100 pF, 4.5V - 5.5V

要するに、3.3Vの場合、通信速度は、400kHzまでらしい。



page.2の表より、Vrefやゲインと抵抗を操作できる。
ゲインはGで、
抵抗はPDで操作する。
PDについては、page.40の表より、

TABLE 4-2: POWER-DOWN BITS AND
OUTPUT RESISTIVE LOAD

PD1 PD0 Function
0 0 Normal operation
0 1 1 kΩ resistor to ground
1 0 125 kΩ resistor to ground
1 1 640 kΩ resistor to ground

今回は{PD1,PD2}={0,0}とする。

VrefやGはpage.51~55までの操作(など?)で変更できるが、
今回はデフォルトのままで使う。








3 件のコメント: