TPLD2001: Cannot write to TPLD2001 through I2C

Part Number: TPLD2001

I'm using an Aardvark I2C host to try and program a TPLD2001 IC following this guide SCPS286 Data sheet | TI.com 

When I scan for the device, it says the device address is 0x61. From the guide I expect it to be 0x01, I'm not sure why I'm seeing 0x61.

When I try to write to any byte address, it always stays at 0x00.

All pins are floating except VDD, GND, SLC, and SDA.

Any idea what I could be doing wrong? Thanks!

  • Hi Arayman,

    The reason your address is 0x61 instead of 0x01 is likely because your address pins (IO2-IO5) are floating. If you want the address to be 0x01, tie them all to ground. Also make sure you're

    Make sure you temporarily configure the device before trying to configure any of the registers.

    Also, we have a step-by-step guide to programming using I2C/SPI. Take a look at Programming in Production with TPLD.

    Regards,

    Nikki

  • Hi Nikki,

    Thanks for the document! I was trying something similar, I do read 20 and 01 from 0x00 and 0x01, so the device should be configured properly, but when I write B9 and try to read it, it goes back to 01. Any idea why that could be happening? Please see image attached. Thanks!

  • Hi Aryaman,

    I'm not very familiar with Aardvark's software, but it looks like you're trying to write to register address 0x01. This is a read-only register, so it cannot be changed.

    Regards,

    Nikki

  • Hi Nikki,

    Oh I see. I thought this step meant I'm supposed to write to register address 0x01. Could you please help clarify to what address I should write this data to?

    I had assumed BYTE0 was the device address (which I've set to 0x09 now), BYTE1 was the register address, and BYTE2 was the data.

    Thank you,

    Arya

  • Hi Aryaman,

    Sorry for the confusion. BYTE0 = ADDR means that the first byte that you send via I2c needs to be the device address. So in your case, it is 0x01.

    Then the next address is hex 0x01B9 (two bytes) where you will "write with a length 0".

    An example of the log is shown below:

    This is how to get into configuration mode. 

    Then, you can read address 0x0400 and it should return 0x10.

    Regards,

    Nikki

  • That worked, thank you so much!