2011-09-21 101 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上的分析儀。