2011-03-02 10:42:16     i2c-dev.h headache

Document created by Aaronwu Employee on Aug 26, 2013
Version 1Show Document
  • View in full screen mode

2011-03-02 10:42:16     i2c-dev.h headache

Nathan V (CANADA)

Message: 98595   

 

Okay,

 

 

 

I've been trying for days to get i2c-dev working properly. I have everything I need according to instructions, but for some reason I keep getting errors at ioctl.

 

 

 

//CODE

 

//TEST BEGIN

 

int file;

 

 

 

//Open i2c dev

 

if(file = open( "/dev/i2c-0", O_RDWR )<0)

 

{

 

enabled = -1;

 

printf("Unable to open file /dev/i2c-0.\n");

 

}

 

else

 

{

 

printf("Opened file /dev/i2c-0.\n");

 

enabled = 1;

 

}

 

printf("File is %d\n",file);

 

if( ioctl( file, I2C_SLAVE, 0x4b ) < 0 )

 

{

 

printf("Error opening file: %s\n", strerror( errno ) );

 

printf("Open chip %d FAILED file %d\n", 0x4b, file);

 

}

 

else

 

{

 

printf("Open chip %d Succeeded file %d\n",0x4b, file);

 

}

 

//CODE END

 

response:

 

 

 

At the level of ioctl(file, i2C_SLAVE,address) I get the following error: "Error opening file: Invalid argument". So I'm successfully opening /dev/i2c-0 but I can't do a ioctl to the specific chip address. I've already verified the chip address using i2cdetect, and I've also verified that I can read/write with the other i2ctools suite.

 

What am I missing?

 

I am including the i2c-dev.h file from the the i2c-tools package. I just put it in my src directory and I #include "i2c-dev.h" as my final include in my .cpp file. All the defines and functions are configuring correctly, so I imagine it's included right. But I wonder if I need to compile the i2c-dev.h file separately or in a different way than my other code?

 

I am compiling with -O2 as I understand that's somehow required. Not sure if there needs to be anything else special in my make file since everything is building correctly without errors.

QuoteReplyEditDelete

 

 

2011-03-02 21:05:18     Re: i2c-dev.h headache

Aaron Wu (CHINA)

Message: 98604   

 

Recently we have tried to use the i2c-dev interface on blackfin sucessfully.  One example is user/blkfin-test/twi_lcd-test/twilcd_userspace_test.c. there we use the i2c-dev interface to replace the former kernel driver. You may take it as reference, following it's proccedure to talk to the i2c device.

QuoteReplyEditDelete

Attachments

    Outcomes