Forum: Mikrocontroller und Digitale Elektronik Fox Board LX 832 - Problem mit I2C device


von Gernot (Gast)


Lesenswert?

Hallo liebes Forum,

ich besitze ein Fox Board LX 832 und möchte es nun mit I2C verwenden. 
Leider bekomme ich beim Aufruf der Anwendung immer folgenden Fehler : 
"I2C: open error on /dev/i2c"! Naja, es ist ja auch ie Fehlermeldung vom 
C-code, aber wieso? Wie kann ich bei einem Linux System überprüfen, ob 
die richtigen Treiber ( in diesem Fall für I2C) geladen sind? Oder woran 
kann es sonst liegen? Zur Info, die Anwendung liegt im Verzeichnis 
/mnt/flash/root/ und die vermutlichen Treiber oder Devices unter dev.

Vielleicht könnt ihr hier weiter helfen.
Vielen Dank im Voraus.


Der C-Quellcode für die Anwendung ist folgender:

#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"
#include "sys/ioctl.h"
#include "fcntl.h"
#include "time.h"
#include "string.h"
#include "asm/etraxi2c.h"

// Global variables
int fd_i2c;

int I2C_Open(void) {
      fd_i2c = open("/dev/i2c", O_RDWR);
      if (fd_i2c <= 0) {
          printf("I2C: open error on /dev/i2c\n");
          return(-1);
     }

     return(0);
}

void I2C_Close(void) {
     close(fd_i2c);
}

int main(int argc, char **argv) {
        int retcode;

        retcode = I2C_Open();
        if (retcode != 0) {
                exit(1);
        }

        I2C_LCD i2clcd;
        i2clcd.slave=64;
        i2clcd.x = 1;
        i2clcd.y = 1;
        sprintf(i2clcd.text, "Hello World");
        ioctl(fd_i2c, _IO(ETRAXI2C_IOCTYPE, I2C_LCDINIT), &i2clcd);
        ioctl(fd_i2c, _IO(ETRAXI2C_IOCTYPE, I2C_LCDPRINT), &i2clcd);
        i2clcd.y = 2;
        i2clcd.x = 3;
        ioctl(fd_i2c, _IO(ETRAXI2C_IOCTYPE, I2C_LCDPRINT), &i2clcd);

        I2C_Close();

        return(0);
};


lg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.