ブログ

Armadillo-X1:I2C接続D/Aコンバータ(MCP4725)を使う

at_kazutaka.bito
2017年5月7日 20時25分

Armadillo-X1の拡張インタフェース(CON8)のI2Cインタフェースで、I2C接続D/Aコンバータ(MCP4725)を使ってみました。

1.拡張インタフェース(CON8)のI2Cを使えるようにする

Armadillo-X1製品マニュアル 21.6.3. I2C の手順を参考に
I2C1
 20pin:SCL
 21pin:SDA
を使えるようにします。

1.1.DTB(Device Tree Blob)の準備

標準のカーネルでビルドした際に生成されるI2Cインタフェースが設定されたDTB(Device Tree Blob) linux-3.14-x1-at[version]/arch/arm/boot/dts/armadillo_x1-i2c1_lm75b.dtb をArmadillo-X1に置きます。

1.2.armadillo_x1-i2c1_lm75b.dtb(I2C1を設定したDTB)を追加します。

(以下は、ホームディレクトリにarmadillo_x1-i2c1_lm75b.dtbを置いてある場合)

root@armadillo:~# mount -t vfat /dev/mmcblk2p1 /mnt
root@armadillo:~# cp armadillo_x1-i2c1_lm75b.dtb /mnt/
root@armadillo:~# umount /mnt

2.DeviceTreeの選択

保守モードで、手順1のarmadillo_x1-i2c1_lm75b.dtb(I2C1を設定したDTB)を選択します。

2.1.電源を落とします。

root@armadillo:~# halt

を実行後、電源を落とします。

2.2.保守モードで起動します。

Armadillo-X1製品マニュアル 図4.8 スライドスイッチの設定 を参考に保守モードにスイッチを設定して、電源を入れます。

2.3.armadillo_x1-i2c1_lm75b.dtb(I2C1を設定したDTB)を選択します。

=> setenv fdt_file armadillo_x1-i2c1_lm75b.dtb
=> saveenv

2.4.通常モード(オートブートモード)で再起動します。

電源を落とします。

図4.8 スライドスイッチの設定 を参考にオートブートモード側にスイッチを設定して、電源を入れます。

以上で、拡張I/F(CON8)で、I2C1が使用できるようになります。

I2C1は、"dev/i2c-1"というデバイスファイルとして見えます。

3.I2C接続D/Aコンバータ(MCP4725)を使う

Armadillo実践開発ガイド 第3部 2.2. I2C接続A/Dコンバーター を参考に作成したサンプルプログラム i2c_mcp4725_20170507.tar.gz を添付します。

i2c_mcp4725.c
・デバイスアドレス:0x60
・実行時のオプション:
  -d:デバイスファイル
  -s:D/Aコンバータのステップ数(0-4095)
・mcp4725.c内の"mcp4725_write"の実行(-sオプションで指定されたステップ数(0-4095))

mcp4725.c
・mcp4725_write関数:MCP4725への設定
  パワーダウンモード
  ステップ数(0-4095)

3.1.サンプルプログラムのビルド

Armadillo-X1にi2c_mcp4725_20170507.tar.gzを展開すると、i2c_mcp4725ディレクトリが生成されます。
(以下は、i2c_mcp4725_20170507.tar.gzをATDE5のホームディレクトリに置いた場合)
i2c_mcp4725ディレクトリで、makeを実行すると、i2c_mcp4725という実行ファイルが生成されます。

[armadillo ~]# tar zxvf i2c_mcp4725_20170507.tar.gz
[armadillo ~]# cd i2c_mcp4725
[armadillo ~/i2c_mcp4725]# make 

3.2.サンプルプログラムの実行

下記オプションを指定して実行します。
  -d:デバイスファイル(今回は"/dev/i2c-1")
  -s:D/Aコンバータのステップ数(0-4095)
実行例

[armadillo ~/i2c_mcp4725]# ./i2c_mcp4725 -d /dev/i2c-1 -s 1000

MCP4725から、-sオプションの値に応じたアナログ電圧が出力されます。