EN JA
IIC(4)
IIC(4) FreeBSD Kernel Interfaces Manual IIC(4)

名称

iicI2C 一般的な I/O デバイスドライバ

書式

device iic


#include < dev/iicbus/iic.h>

解説

iic デバイスドライバは、あらゆる iicbus(4) のインスタンスへの一般的な I/O を提供しています。 I2C デバイスを制御するために、次の ioctl で /dev/iic? で使用します:
I2CSTART
( struct iiccmd) slave 要素によって指定されるスレーブへの開始状態 (start condition) をバスに送信します。他のすべての要素は、無視されます。
I2CRPTSTART
( struct iiccmd) slave 要素によって指定されるスレーブへの開始状態 (start condition) を繰り返しバスに送信します。他のすべての要素は、無視されます。
I2CSTOP
引数は、渡されません。停止状態 (stop condition) をバスに送信します。これは、現在のトランザクションを終了します。
I2CRSTCARD
( struct iiccmd) バスをリセットします。引数は、完全に無視されます。
I2CWRITE
( struct iiccmd) iicbus(4) にデータを書き込みます。バスは、既に開始されているはずです。 slave 要素は、無視されます。 count 要素は、書き込むバイト数です。 last 要素は、ブール値のフラグです。追加の書き込みコマンドが続くとき、それは、0 以外です。 buf 要素は、バスに書き込むデータへのポインタです。
I2CREAD
( struct iiccmd) iicbus(4) から、データを読み込みます。バスは、既に開始されているはずです。 slave 要素は、無視されます。 count 要素は、書き込むバイトの数です。 last の要素は、ブール値のフラグです。追加の書き込みコマンドが続くとき、それは、0 以外です。 buf 要素は、バスから読み込まれたデータを格納する場所へのポインタです。バスでの短い読み込みは、未定義の結果をもたらします。
I2CRDWR
( struct iic_rdwr_data) 一般的な、読み込み/書き込み (read/write) インタフェース。任意の数のコマンドをバスの任意の数のデバイスに送信できます。読み込み転送は、 IIC_M_RDflags に設定されているなら、指定されます。そうでなければ、転送は、書き込み転送です。 slave 要素は、転送のための 7 ビットのアドレスを指定します。 len 要素は、データの長さです。 buf 要素は、そのデータのためのバッファです。この ioctl は、 Linux との互換性となることを目的としています。

次のデータ構造体は、 < dev/iicbus/iic.h> で定義されて、上記を参照しています:

struct iiccmd { 
 u_char slave; 
 int count; 
 int last; 
 char *buf; 
}; 
 
/* linux の struct i2c_msg と互換性となるように設計されています */ 
struct iic_msg 
{ 
 uint16_t slave; 
 uint16_t flags; 
#define IIC_M_RD 0x0001 /* read 対 write */ 
 uint16_t len; /* メッセージ長 */ 
 uint8_t * buf; 
}; 
 
struct iic_rdwr_data { 
 struct iic_msg *msgs; 
 uint32_t nmsgs; 
};

また、読み込み/書き込み (read/write) ルーチンを使用することができ、次に I2C 開始/停止 (start/stop) ハンドシェイクは、 iicbus(4) システムによって管理されます。しかしながら、読み込み/書き込みルーチンのために使用されるアドレスは、このデバイスへの最後の I2CSTART ioctl(2) に渡されたものです。

歴史

iic マニュアルページは、 FreeBSD 3.0 ではじめて登場しました。

作者

このマニュアルページは、 Nicolas SouchuM. Warner Losh によって書かれました。

バグ

I2CRDWR ioctl(2) のみがスレッドセーフです。他のすべてのインタフェースは、ある種のレース (競合) に悩まされます。
September 6, 2006 FreeBSD