trykmkmの備忘録

自称組み込みエンジニアのブログ

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が表示します。下記キャプチャ参照。

f:id:trykmkm:20171104000751p:plain

 

 次に、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端子を確認すれば、出力値を確認できます。

キャプチャの様子を下記します。

f:id:trykmkm:20171104003328p:plain

 

 以上で、Adafruit のFT232Hスクリプトを使用したi2cデバイス制御はできました。

 よって、このブログ記事の目的は果たせました。

 次回以降も、引き続き別の方法でFT232のi2cデバイス制御をトライしていきたいと思います。