2

A13 組み込み Linux に接続された i2c デバイスで作業しています。レジスタからデータを取得しようとしましたが、常に不完全な xfer (0x48) エラーが発生します。i2c-sunxi.c ファイルにエラー コードが見つかりました。

case 0x48: /* SLA+R has been transmitted; NOT ACK has been received */
err_code = 0x48;//err,wakeup the thread

私のi2cモジュール機能は;

unsigned char buf[1] = { 0 };

struct i2c_msg msgs[] = {
{ this_client->addr, 0, 1, buf },   /* setup read ptr */
{ this_client->addr, I2C_M_RD, 1, buf },    /* read status + date */
};

/* read registers */
if ((i2c_transfer(this_client->adapter, msgs, 2)) != 2) {
dev_err(&this_client->dev, "%s: read error\n", __func__);
return -EIO;
}
4

1 に答える 1

1

試してみi2cdetectて、パッケージi2cgetから i2c-tools、正しいことを行うことが知られています。それも失敗した場合、デバイスは誤動作します。LKML でこれを尋ねてみてください。合法である場合は、パッチを送信することもできます。

ところで、複合転送が必要ですか?たぶん、別々の読み取りと書き込みでうまくいくでしょうか?

AndxferSMBus 関連の用語です。

于 2013-09-19T17:10:36.200 に答える