Post Go back to editing

ADAU1701 not discoverable when the programmer isn't connected

Category: Hardware
Product Number: ADAU1701

Hello,

Just a quick problem. I'm trying to connect to an ADAU1701 via the I2C bus after a self boot. However running an I2C bus scan only shows the EEPROM. When I plug the programmer on the bus it becomes discoverable.

I tried pulling WP high and low and reset high and low to no avail. There must be something I'm missing to switch the ADAU1701 from I2C master to slave but I don't know why. And no idea why plugging the programmer would change anything as I'm holding the WP and RST signals to the same level as the programmer.

Thank you for the help

  • Hello GLeclerc,

    The ADAU1701 will automatically switch from a master mode on the I2C bus to a slave mode after it completes the selfboot. It defaults to slave mode and it is only in master mode when it is actively selfbooting. So there is something else going on. 

    Plugging in the programmer adds some pull up resistors so I suspect that you might be missing some pull up resistors for SDA and SCL on your board? If you do have pull ups then what are the values?

    Make sure you have the two address pins set to the expected address? I assume you intend to set it to the base address so pin 7 and pin 20 should both be tied low. This would be the 8-bit address of 0x68 and 0x69 for read or write or the 7-bit address of 0x34 before you shift left and add the read/write bit.

    You mentioned the WP pin. You must be careful with this pin. It is intended to be set in one mode and not changed between resets. If you toggle this pin three times it will put the part into SPI mode. There is no timing for these toggles. Let me give you an extreme example. If you applied power to the part and kept it powered up and do not lower the reset pin. then you toggled the WP pin once a day. On the third day it would go into SPI mode. It will remain in SPI mode until the part is reset or power cycled. 

    Dave T

  • Thank you for your answer. I thought about all those but since I see the EEPROM (0x50) on the bus I kind of brushed the pull up resistors hypothesis but I guess I will re-explore this.

  • I found the solution, for people connecting the ADAU1701 to linux processors via the I2C kernel driver:

    `i2cdetect` can't detect ADAU1701 without the "quick write" option. This what worked for me:

    ```i2cdetect -y -q 1``` (replace 1 by your bus ID)

    Hope that helps people