1

我正在尝试通过I²C从用户空间写入 EEPROM 。我正在使用/dev设备文件和,openread函数。阅读没有问题,但是当我使用相同的代码进行写作(只是将阅读替换为写入)时,它会失败。EEPROM 没有写保护(回显到 EEPROM 驱动程序的设备文件中有效)。writeioctl

我的代码如下。

if ((fd = open(write_destination, O_RDWR)) < 0) {
    goto error;
}

if (ioctl(fd, I2C_SLAVE_FORCE, 0x50) < 0) {
    goto error_fd;
}
while((n = write(fd, self->fields[i].buf, self->fields[i].size)) != self->fields[i].size) 
    perror("");

我在看什么?

4

1 回答 1

1

一些 EEPROM 只允许写入少量,然后等待,然后再写入更多。检查数据表以确保。另外,我建议使用逻辑分析仪来检查正确的命令是否发送到 I²C - 我喜欢 www.salae.com 上的分析仪。

于 2012-05-03T05:57:53.397 回答