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

尝试i2cdetecti2cgeti2c-tools包中,知道做正确的事情。如果它也失败了,则设备行为不端。尝试在 LKML 中询问这个问题,如果它是合法的,你可能会发送一个补丁。

顺便说一句,你确定你需要合并转移吗?也许单独的读写会做这件事?

并且xfer是一个与 SMBus 相关的术语

于 2013-09-19T17:10:36.200 回答