2011-09-21 98 views
1

我试图从用户空间通过I²C写入EEPROM。我正在使用/dev设备文件和open,read,writeioctl函数。阅读工作没有问题,但是当我使用相同的代码写入时(只是用写入替换读取),它失败。 EEPROM不受写保护(回显到EEPROM驱动器的设备文件中)。通过I²C写入EEPROM失败

我有的代码如下。

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(""); 

我忽略了什么?

回答

1

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