在Linux上读取和写入SPI eeprom的C程序示例

时间:2015-04-09 01:09:48

标签: c linux spi eeprom

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

0 个答案:

没有答案