/*****I2C TEST PROGRAM*****/ #include #include #include #include #include #include #include #include #include int fd; char *i2cdev = "/dev/i2c-1"; unsigned char buf[4]; int i2cwrite(char *buf, int len) { if((write(fd, buf, len)) != len){ return(1); } return(0); } int i2cread(int offset, char *buf, int len) { if(i2cwrite(buf,1)){ printf("Err:- i2cwrite\n"); return(1); } *buf = (char)offset; if(read(fd,buf,len) != len) { printf("Err:- i2cread\n"); return(1); } return(0); } int main() { unsigned char SLAVE_ADDRESS = 0x11; //SLAVE ADDRESS unsigned char rddat1,rddat2,rddat3,rddat4; printf("**** I2C ALLPORT READ ****\n"); if((fd = open(i2cdev, O_RDWR)) < 0){ printf("Can't open i2c\n"); exit(1); } if(ioctl(fd,I2C_SLAVE, SLAVE_ADDRESS) < 0){ printf("Unable to get bus access to talk to slave\n"); exit(1); } //PORT ALL READ// buf[0] = 0xe0; /*if(i2cwrite(buf,1)){ printf("write error SA = %02x\n",SLAVE_ADDRESS); exit(1); }*/ if(ioctl(fd, I2C_SLAVE,SLAVE_ADDRESS) < 0) { printf("Unable to bus access to talk to slave\n"); exit(1); } if(i2cread(fd,buf,4)){ exit(1); } rddat1 = buf[0]; rddat2 = buf[1]; rddat3 = buf[2]; rddat4 = buf[3]; printf("Read Data PORT0 ---- %02x\n",rddat1); printf("Read Data PORT1 ---- %02x\n",rddat2); printf("Read Data PORT2 ---- %02x\n",rddat3); printf("Read Data PORT3 ---- %02x\n",rddat4); close(fd); /*return 1;*/ }