This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPL0102 I2C read

I am using the TPL0102 digital pot.  I am bit banging an I2C bus since I used my UARTs for other comms.  I can write to the digital pot without any trouble.  However, when I try to read the device it does not send a status. 

I send: <start> <0xA0>  <Ack> <0x00> <Ack> <start>  <0xA1>  <Ack> <expected data here><nack><stop>.  All my address bit are tied low so the chip ID should be b1010000X (A0 for write A1 for read)  and I am writing or reading the A wiper so it's address is b00000000.  I am watching the bit packets with an oscope and everything looks good.  However the expected data on the read is always b000000000.  I have also tried sending <start> <0xA0> <Ack> <0x00><Ack> <stop>.<start> <0xA1> <Ack> <expected data here><nack><stop> since the data sheet does not state what a restart is.   I have double checked my timing and it complies to the data sheet.   Also the Ack is read from the TPL0102 and is not forced by the processor code.

Do you have any idea what is wrong?

  • Hi Bill,

    Could you please attach a scope shot/schematic?  If you'd rather not post it on a public forum, go ahead and send it to j-le@ti.com.

    Best Regards,

    Jim

  • Jim,

    Thanks for getting back to me.

    I am using the eval board made by TI please find the scope images here.  Since I am not able to see an option to attach anything know that the schematic is from the User's Guide  SLIU004–March 2011 TPL0102 Evaluation Module.  I am using pins RA6 and RA7 of a microchip PIC18F2520 to bit bang the I2C.  I use leads to go from thier develpment board to the TI eval board.  Please remember I can write to the Digital pot without any trouble, hence if I put it in shutdown it shuts down, If I wake it up and move it to a wiper address it does that as well. I can verify the commands by measuring the pot resistance. I can see the SCL SDA bits on my oscope too.

    I send/receive: Start <0xA0> ACK <0x10> ACK <0x00> ACK Stop for shutdown which works.
    I send/receive: Start <0xA0> ACK <0x10> ACK <0x40> ACK Stop return from shutdown which works.
    I send/receive: Start <0xA0> ACK <0x00> ACK <data> ACK Stop to move the wiper which works.
    I send/receive: Start <0xA0> ACK <0x00> ACK start <0xA1> ACK <waiting for data here> NACK Stop to read but it does not work.