Raspberry PiでFT232Hのi2cデバイス制御(6)
今回は、AdafruitのFT232Hスクリプトを使って、試験基板のDRV8830を制御していこうと思います。
ラズパイは、前回のFT232Hスクリプトのインストールが完了している状態で、かつ、カレントディレクトリはホームディレクトリです。
まず、Adafruitが公開しているi2cデバイススキャンプログラムを動かします。コードは、下記URLリンクにある、I2C Device Enumerationにあるものです。
I2C | Adafruit FT232H Breakout | Adafruit Learning System
手順を下記します。
①ターミナルに下記コマンドを入力します。
(サンプルコードダウンロード)
②ターミナルに mv download i2cScan.py 入力
(サンプルコードのファイル名変更)
③ ターミナルに sudo python i2cScan.py 入力
(サンプルコード実行)
成功すれば、DRV8830のデバイスアドレス0x60が表示します。下記キャプチャ参照。
次に、DRV8830にデータをリードライトするテストプログラムを動かしてみたいと思います。
手順を下記します。
①ターミナルに vi testDRV8830.py 入力
②ターミナルに i を入力し、VIを挿入モードにし、下記コードをコピペし、esc キー押下し、wq を入力してVI終了。
import Adafruit_GPIO.FT232H as FT232H
import time
import sys
# Temporarily disable FTDI serial drivers.
FT232H.use_FT232H()
# Find the first FT232H device.
ft232h = FT232H.FT232H()
# Set i2c instance as DRV8830.
i2c = FT232H.I2CDevice(ft232h, 0x60)
# check DRV8830.
if i2c.ping():
print 'DRV8830 Found'
else:
print 'DRV8830 is not found. Program end!!'
sys.exit()
# write FAULT registor clear
i2c.write8(0x01, 0x80)
# read CONTROL registor clear
value = i2c.readU8(0x00)
# CONTROL register value check & write CONTROL registor
if value == 0x66:
# 2V reverse -> 1V forward
i2c.write8(0x00, 0x35)
print 'Output 1V Forward'
else:
# 0V/1V forward -> 2V reverse
i2c.write8(0x00, 0x66)
print 'Output 2V Reverse'
③ターミナルに sudo python testDRV8830.py 入力
(テストプログラム実行)
実行するごとに、DRV8830の出力が-2V⇒1V⇒-2V⇒1V⇒・・・となります。
テスターでDRV8830のVout1,Vout2端子を確認すれば、出力値を確認できます。
キャプチャの様子を下記します。
以上で、Adafruit のFT232Hスクリプトを使用したi2cデバイス制御はできました。
よって、このブログ記事の目的は果たせました。
次回以降も、引き続き別の方法でFT232のi2cデバイス制御をトライしていきたいと思います。