Запись в EEPROM через I²C не удалась - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь записать в EEPROM через I²C из пространства пользователя. Я использую файл устройства /dev и функции open, read, write и ioctl. Чтение работает без проблем, но когда я использую один и тот же код для записи (просто заменяя чтение на запись), происходит сбой. ЭСППЗУ не защищено от записи (работает отображение в файле устройства драйвера ЭСППЗУ).

Код, который я имею, выглядит следующим образом.

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 Ответ

1 голос
/ 03 мая 2012

Некоторые EEPROM позволяют писать только небольшие суммы, затем ждать, а затем писать больше. Проверьте таблицу данных, чтобы быть уверенным. Кроме того, я рекомендую использовать логический анализатор, чтобы проверить правильность команд, идущих на I²C - я люблю анализатор на www.salae.com.

...