I'm new to I2C so apologies in advance
I'm trying to read multiple registers at once from a LSM9DS0 accelerometer/gyro/compass chip..
Each sensor has 6 registers in a row that return X/Y/Z high and low bytes.. so i should be able to use the I2C_ADDRESS of the chip's XM sensor, then point a 'read' at the first of the 6 registers then i was hoping that would return an array of that register plus the next 5..
I use code based on this following example i found on the web:
I2CDevice.Configuration config = new I2CDevice.Configuration(I2C_ADDRESS, I2C_CLOCK_RATE_KHZ);
I2CDevice i2c = new I2CDevice(config);
byte write = { AddressOfFirstRegisterIneed };
byte read = new byte[6]; //surely this should return the first and subsequent 5 registers?
// create I2C write and read transaction
I2CDevice.I2CTransaction i2cTx = new I2CDevice.I2CTransaction[2];
i2cTx[0] = I2CDevice.CreateWriteTransaction(write);
i2cTx[1] = I2CDevice.CreateReadTransaction(read);
// execution
i2c.Execute(i2cTx, I2C_TIMEOUT);
..what i get back is an array of bytes all containing the same value!? (there should be 6 distinct values returned).
if i do 6 separate transactions one after another reading just 1 byte, then i can return all 6 registers successfully..
but as they are all in a row should i not be able to do all this in one transaction?
(i'm doing this on my old Netduino 1 that is probably running 4.2.0 update1 as i didnt have any newer netduinos in my office today)