HumansXドキュメントセンター 公式サイトへ ↗

5. IIC 通信 - LCD 画面への情報表示

RDK X5 では、40PIN 上でデフォルトで I2C5(物理ピン番号 3 と 5)と I2C0(物理ピン番号 27 と 28)が有効になっています。IO 電圧は 3.3V です。

I2C の使い方の詳細は、/app/40pin_samples/test_i2c.py をご参照ください。

テスト方法

  • テストプログラム python3 /app/40pin_samples/test_i2c.py を実行します
  • まず、現在システムで有効になっている I2C バスが一覧表示されます
  • バス番号を入力してスキャンし、そのバスに接続されている周辺機器を確認します
  • 周辺機器のアドレス(16 進数)を入力すると、テストプログラムがその周辺機器から 1 バイトのデータを読み取ります

実行結果

Starting demo now! Press CTRL+C to exit
List of enabled I2C controllers:
/dev/i2c-0  /dev/i2c-1
Please input I2C BUS num:1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Please input I2C device num(Hex):40
Read data from device 40 on I2C bus 1
read value= b'`'

テストコード

#!/usr/bin/env python3

import sys
import signal
import os
import time

# 导入i2cdev
from i2cdev import I2C

def signal_handler(signal, frame):
    sys.exit(0)

def i2cdevTest():
    # device, bus = 0x51, 0
    bus = input("Please input I2C BUS num:")
    os.system('i2cdetect -y -r ' + bus)
    device = input("Please input I2C device num(Hex):")
    print("Read data from device %s on I2C bus %s" % (device, bus))
    i2c = I2C(eval("0x" + device), int(bus))
    value = i2c.read(1)
    i2c.write(value)
    print("read value=", value)
    i2c.close()

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    print("Starting demo now! Press CTRL+C to exit")
    print("List of enabled I2C controllers:")
    os.system('ls /dev/i2c*')
    while True:
        i2cdevTest()