[Armadillo:07797] Re: armadillo-440 =?ISO-2022-JP?B?GyRCJHI7SE1RJDckPxsoQg==?=I2C =?ISO-2022-JP?B?GyRCISYbKEI=?=START/STOP コンディションの発行について

Ohtaki Yuichiro email@hidden
2012年 1月 11日 (水) 12:01:52 JST


大滝です。

i2cのSTART/STOPコンディションの発行は
i2c.hに書かれているi2c_msgという構造体で決まります。
i2c_msg一個に付きstart一個という感じです。

下のプログラムはIPUを通したCMOSセンサのドライバのソースへ
linux-2.6.26-at14\drivers\media\video\mxc\capture\mt9v111.c
のI2Cの通信の部分です。

このCMOSセンサはライトシーケンスは
Start|SlaveAddr|Ack|RegAddr|Ack|DATA|Ack|Start|SlaveAddr|Ack|RegAddr|Ack|DATA|Ack|Stop
というような反復スタートになっています。

static int mt9v111_i2c_client_xfer(unsigned int addr, char *reg, int reg_len,
                                    char *buf, int num, int tran_flag)
{
         struct i2c_msg msg[2];
         int ret;

         msg[0].addr = addr;
         msg[0].len = reg_len;
         msg[0].buf = reg;
         msg[0].flags = tran_flag;
         msg[0].flags &= ~I2C_M_RD;

         msg[1].addr = addr;
         msg[1].len = num;
         msg[1].buf = buf;
         msg[1].flags = tran_flag;

         if (tran_flag & MXC_I2C_FLAG_READ) {
                 msg[1].flags |= I2C_M_RD;
         } else {
                 msg[1].flags &= ~I2C_M_RD;
         }

         ret = i2c_transfer(mt9v111_i2c_client.adapter, msg, 2);
         if (ret >= 0)
                 return 0;

         return ret;
}

At 10:07 12/01/10, you wrote:
 >松本と申します。
 >
 >今回は、armadillo-440を使用したI2Cに関する質問をさせていただきます。
 >
 >writeからreadに移行する際に、STOPコンディションではなく反復STARTを行いた
 >いのですが、
 >START/STOPコンディションの発行を設定・変更する方法はありませんでしょうか。
 >
 >ご存知の方がいらっしゃいましたら、御教授の程よろしくお願いいたします。
 >
 >_______________________________________________
 >armadillo mailing list
 >email@hidden
 >http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo




armadillo メーリングリストの案内