Um aber mit der SW weiterzukommen, habe aus einem Beispiel-Code aus dem Netz ein Stück zusammengeschnitten, mit dem ich auf meinem Desktop-PC vermutlich das EEPROM meines Monitors auslesen kann. Wegen der Übersichtlichkeit sind die Adressen hardcoded und ein wirkliches Schreiben habe ich nicht probiert, um den Rechner nicht zu gefärden.
Code:
#include <linux/i2c-dev.h>
#include <stdio.h>
#include <fcntl.h>
#define NUMBYTES 20
int main() {
int file;
char filename[] = "/dev/i2c-0";
char buffer[20];
int i;
file = open(filename, O_RDWR);
if (file < 0) {
perror("i2c-test open: ");
return -1;
}
/* You can do plain I2C transactions by using read(2) and write(2) calls.
* You do not need to pass the address byte; instead, set it through
* ioctl I2C_SLAVE before you try to access the device.
*/
if (ioctl(file, I2C_SLAVE, 0x50) < 0) {
perror("i2c-test set slave address: ");
return -1;
}
buffer[0] = 0; // set read pointer in I2C slave
if(write(file, buffer, 1) != 1) {
perror("i2c-test write: ");
return -1;
}
if (read(file, buffer, NUMBYTES) != NUMBYTES) {
perror("i2c-test read: ");
return -1;
} else {
for(i = 0; i < NUMBYTES; i++) {
printf("%02x ", (unsigned char)buffer[i]);
}
printf("\nok\n");
}
return 0;
}
Vielleicht hilfts
MfG Klebwax
Lesezeichen