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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.