0

我正在尝试在 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;
}
4

0 回答 0