1

ユーザースペースからI²C経由でEEPROMに書き込もうとしています。/devデバイスファイルとopen、、、および関数readを使用しています。読み取りは問題なく機能しますが、書き込みに同じコードを使用すると(読み取りを書き込みに置き換えるだけ)、失敗します。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 に答える