python-smbus(内容が古くなりましたが記録として残します)

PythonからI2Cを制御する際の、コマンド(ファンクション)の一覧を備忘録として残しておきます。SMBusとはI2Cのサブセットです。

Using the I2C Interface

以下、addressは7bit、つまりread/write bitは含まれません。

SMbus Functions
long write_quick(int addr) R/W bitを出すのみ
long read_byte(int addr) デバイスアドレス指定なしに1byte読む
long write_byte(int addr, char val) デバイスアドレス指定なしに1byte書く
long read_byte_data(int addr, char cmd)
long write_byte_data(int addr, char cmd, char val)
long read_word_data(int addr, char cmd)
long write_word_data(int addr, char cmd, int val)
long process_call(int addr, char cmd, int val)
long[] read_block_data(int addr, char cmd)
write_block_data(int addr, char cmd, long vals[])
long[] block_process_call(int addr, char cmd, long vals[])

I2C Access Funstions
long[] read_i2c_block_data(int addr, char cmd)
write_i2c_block_data(int addr, char cmd, long vals[])

Code Example
#!/usr/bin/python

import smbus

bus = smbus.SMBus(1)    # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)

DEVICE_ADDRESS = 0x15      #7 bit address (will be left shifted to add the read write bit)
DEVICE_REG_MODE1 = 0x00
DEVICE_REG_LEDOUT0 = 0x1d

#Write a single register
bus.write_byte_data(DEVICE_ADDRESS, DEVICE_REG_MODE1, 0x80)

#Write an array of registers
ledout_values = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
bus.write_i2c_block_data(DEVICE_ADDRESS, DEVICE_REG_LEDOUT0, ledout_values)

コメント

このブログの人気の投稿

i2c-tools 備忘録(内容が古くなりましたが記録として残します)