#include #include #include #include #include #include #include int main(int argc, char **argv) { int fd_i2c; unsigned char buf[2]; if((fd_i2c = open("/dev/i2c-1", O_RDWR)) < 0){ printf("failed to open i2c port\n"); return 1; } if(ioctl(fd_i2c, I2C_SLAVE, 0x20) < 0){ printf("unable to get bus access to talk to slave\n"); return 1; } //set GPIOA as output buf[0] = 0; buf[1] = 0; if(write(fd_i2c, buf, 2) != 2){ printf("error writing to i2c slave\n"); return 1; } //set GPIOB as output buf[0] = 1; buf[1] = 0; if(write(fd_i2c, buf, 2) != 2){ printf("error writing to i2c slave\n"); return 1; } //output 0xaa from GPIOA buf[0] = 0x12; buf[1] = 0xaa; if(write(fd_i2c, buf, 2) != 2){ printf("error writing to i2c slave\n"); return 1; } //output 0xf0 from GPIOB buf[0] = 0x13; buf[1] = 0xf0; if(write(fd_i2c, buf, 2) != 2){ printf("error writing to i2c slave\n"); return 1; } close(fd_i2c); }