Hi Evan,

On Wed, Mar 27, 2013 at 5:23 PM, Evan <evankaufman@gwu.edu> wrote:
Hi all,

I am trying to communicate via i2c with an Adafruit 16-Channel 12-bit
PWM/Servo Driver. This device receives i2c input signals, then outputs
pulses to 16 pwm ports. The issue is that the manufacturer only includes
"write" addresses (depending on which solder jumpers are used). I have
working voltage level converters from 1.8V to 5V, and I have tried a variety
of combinations with the solder jumpers, but whenever I type "i2cdetect -y
-r 3" in the command window, no slave addresses from this device are shown.

Normally I would control the i2c with c code by opening the port with 'fh',
then ioctl(fh, I2C_SLAVE, slave_addr), then write(), but I cannot do this
with only a "write" address and no "slave" addresses.

Would you have any suggestions with communicating via i2c with only a
"write" address? Any help would be much appreciated. Thank you.

What you actually have is a 7-bit address followed by a 1-bit read/write command.

It may be that the device only responds to writes, which would explain why it doesn't show up in i2c-detect.

The slave address will be just the seven bits.

So, for example, if the "write address" was 0x42 (which is 01000010 in binary) then this corresponds to an i2c address of 0100001 and a R/W bit of 0.

So the i2c slave address would be 0x21, and the R/W bit of 0 means write.

Dave Hylands
Shuswap, BC, Canada