我正在尝试在 linux 上向 spi eeprom 写入 4 个字节,然后读取 4 个字节(最后一个是重要的,我正在使用 zybo 板),我为 spi eeprom 检测做了所有事情,现在我有了:
/sys/bus/spi/devices/spi32766.0/eeprom
在此链接中:读取和写入 spi eeprom... Klaus 说可以使用 eeprom 作为字符文件来执行此操作,但在此链接中:如何读取数据... 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;
}