I2C to the Maxbotix I2CXL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux