通过 I²C 写入 EEPROM 失败

发布于 2024-12-05 17:05:31 字数 617 浏览 1 评论 0原文

我正在尝试从用户空间通过 I²C 写入 EEPROM。我正在使用 /dev 设备文件和 openreadwriteioctl< /代码> 功能。读取工作没有问题,但是当我使用相同的代码进行写入时(只需将读取替换为写入),它就会失败。 EEPROM 没有写保护(回显到 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("");

我在忽略什么?

I'm trying to write into an EEPROM via I²C from user space. I'm using the /dev device file and the open, read, write and ioctl functions. Reading works without a problem, but when I use the same code for writing (just replacing read with write), it fails. The EEPROM is not write protected (echoing into the device file of the EEPROM driver works).

The code I have is as follows.

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

What am I overlooking?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弥枳 2024-12-12 17:05:31

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

Some EEPROMs only allow writing small amounts, then wait, and then write more. Check the datasheet to be sure. Also, I recommend to use a logic analyzer to check the correct commands are going to the I²C - I love the analyzer at www.salae.com.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文