hi I think u r missing onr thing.
sequence should be like this > Start signal > Slave address (r/w/ bit = write) > Register address > Start signal > Slave address (r/w/ bit = read) > Read register data >NO ack.......................u have to give > Stop signal Try to give No ack after reading the register data. bye Bhupi Deep into silicon with Linux..... www.gdatech.com --- Keith Outwater <Keith_Outwater at mvis.com> wrote: > > Greetings all - > > I am trying to talk to an I2C device (Analog Devices > AD9888) using the > MPC860 CPM I2C interface from userland. > Writes work fine, but the chip requires a strange > write-read sequence > for reading back registers. For example, to read a > register: > > Start signal > Slave address (r/w/ bit = write) > Register address > Start signal > Slave address (r/w/ bit = read) > Read register data > Stop signal > > Note that there is no stop between the write and the > read. If you put a > stop in, the chip will not acknowledge the read, so > using /dev/i2c-0 > with write() and read() does not work. > > I tried using the ioctl() interface and passed > I2C_RDWR to try to > suppress the stop command between messages, but it > does not seem to work > (checked it on a scope). > I looked at the ioctl() handler for I2C_RDWR and it > was not clear to me > whether that particular ioctl option should work > with a write-read > sequence or not. As far as I can tell it does not > work. > I looked for other ways to do this, but found > nothing. > > Has anyone used I2C like this before? Any hints or > suggestions? > > Thanks! > Keith > > Keith Outwater > Senior Staff Engineer > Microvision, Inc. > (425) 415-6693 > > > ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
