Я пытаюсь записать 4 байта в spi eeprom на linux, а затем прочитать 4 байта (последний важный, я работаю с zybo board), я сделал все для обнаружения spi eeprom, и теперь у меня есть:
/sys/bus/spi/devices/spi32766.0/eeprom
В этой ссылке: Чтение и запись в spi eeprom... Клаус говорит, что это можно сделать, используя 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;
}