You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It's not really a problem, but I'm rather perplexed as to how to talk to specific I2C slaves. I only saw the i2ceeprom example, which somehow doesn't seem like what I need.
I basically have an I2C slave on address 0x48 (it's an A->D converter, but that doesn't really matter). Later on I'll also add another I2C slave on the same line, so I really need to specify the proper addresses to talk to them.
So how could I do something like:
#define ADS1015_REG_POINTER_CONFIG (0x01)
#define ADS1015_REG_POINTER_CONVERT (0x00)
int Address=0x48;
ioctl(i2cFile, I2C_SLAVE, Address);
i2c_smbus_write_word_data(i2cFile,ADS1015_REG_POINTER_CONFIG,0x1122);
i2c_smbus_read_word_data(i2cFile,ADS1015_REG_POINTER_CONVERT);
with libmpsse?
Original issue reported on code.google.com by [email protected] on 10 Mar 2014 at 8:51
The text was updated successfully, but these errors were encountered:
Posting a solution if anyone else gets perplexed like me ...
Basically, you have to start writing to I2C with the address of slave SHIFTED 1 bit to the left (last bit 0 for writes, or 1 for reads) so the above code would be something like:
//writing part
char Data={"\0x90\0x01\x11\x22"};
Start(context);
Write (Context,Data,4); //equals ioctl and i2c_smbus_write_word_data above
Stop(context);
//reading part
Start(Context);
Data[1]=\0x00; // ADS1015_REG_POINTER_CONVERT=0x00
Write (Context,Data,2); //set the register for read
Stop(context);
Start(Context);
Data[0]=\0x91;
Write (Context,Data,1); //State you want to read from address 0x48 (0x48<<1)|1
Read (Context,2); //read the word (2 bytes) of data
Stop(Context);
Original issue reported on code.google.com by
[email protected]
on 10 Mar 2014 at 8:51The text was updated successfully, but these errors were encountered: