我正在尝试在linux上向spi eeprom写入4个字节然后读取4个字节(最后一个是重要的,我正在使用zybo板),我做了所有的spi eeprom检测,现在我有:< / p>
/sys/bus/spi/devices/spi32766.0/eeprom
在此链接中:Read and write to spi eeprom... Klaus说使用eeprom作为字符文件可以做到这一点,但是在这个链接中:How to read data... Sawdust说这是不可能的,因为这种驱动程序是平台驱动程序。
我尝试将eeprom作为C中的字符文件处理,但获得的数据是不连贯的(我在裸机代码中进行了测试,SPI设备正常工作),可能是因为我不知道数据必须如何发送,有人可以用一段代码解释我,我应该如何读/写SPI EEPROM?
非常感谢:)
我的代码摘要:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int readData(FILE* fp);
int main(int argc, char *argv[]) {
FILE* fp;
char ch = 'a';
while (1) {
fp = fopen("/sys/bus/spi/devices/spi32766.0/eeprom", "r+");
if (fp == NULL) {
printf("Cannot open /sys/bus/spi/devices/spi32766.0/eeprom for write\n");
return -1;
}
printf("Sending data\n");
fputs("\x01\x02\x03\x04", fp);//or fputs(four bytes, fp)
while (readData(fp) == 0) {
sleep(1);
}
printf("End\n");
fclose(fp);
sleep(5);
}
return EXIT_SUCCESS;
}
int readData(FILE* fp) {
int c = fgetc(fp);
int retorno = (feof(fp) == NULL);
printf("Char: %c\n", c);
printf("Int: %d\n", c);
return retorno;
}