Hello everyone.. I'm trying to get my beagle bone to communicate over I2C with 
the new Maxbotix I2CXL line of sonar sensors

http://www.maxbotix.com/documents/I2CXL-MaxSonar-EZ_Datasheet.pdf

According to the data sheet I need to write a single byte of 0x51 to the sensor 
 to tell it to send out the sonar pulse and then wait up to 60ms (i.e. until 
the pulse comes back). At that point I need to read two bytes from the device, 
without sending a register address. This appears very similar to the 
i2c_smbus_read_byte() call, except that I need to read two bytes, not just one. 

It appears that all the calls that read more than one byte require that I pass 
in a register address. When I use i2ctools I get this:

(0x70 is the I2C address of the sensor, and 0x51 is the sonar range command)

$ i2cset -y 3 0x70 0x51
$ i2cget -y 3 0x70 
0x00


so it looks like I'm getting the MSB but according to the data sheet the sonar 
sends a second byte representing the LSB.

Does the i2c driver support this directly?  Do I need to modify the driver or 
can I use i2c_smbus_xfer to accomplish the task? I have not been able to 
understand the API to i2c_smbus_xfer from reviewing the source code.

Thanks, 
-- 
Sameer Parekh
Falkor Systems, Inc.


--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to