Post Go back to editing

AD5675 I2C problem

I attach SCL, SDA signal scope shot.

The address of AD5675 is set to 00.

After start condition, I sent 00011000, but I didn't receive ack.

Can you find any time issue in this scope shot?

What is the cause of this problem?

  • Hi, 

    At first look, your timing seems OK. There are a few other things we could check to determine the cause of this issue. 

    • What pull-up resistor is used for the SDA? 
    • What is your Vlogic supply? It should be 5V as your I2C is at 5V. 
    • Check if the gnd of controller is properly connected to the device ground.
    • Are you using an eval board or your own hardware? Can you share your schematic in case custom hw?
    • Are the SCL and SDA plots are measured near the device pins?
    • Can you check if T6, data hold time (0.9us max) is met ?

    Best regards,

    Ian

  • Hello, do you have any feedback/update here? 
    I have a similar case with 9th CLK pulse, not pulling SDA low. 

  • Hi   could you check the items I asked above? I've also encountered this on other devices before. Often the problem lies on one of those items. 

  • Hello,

    I am currently working with the AD5675RSDZ evaluation board. I encountered a similar issue, specifically receiving a NAK (Negative Acknowledge) when attempting to communicate through the I2C protocol. To address this, I supplied a 3V Vlogic level as I am working with the pic32mz microcontroller. Additionally, I incorporated pull-up resistors within the range of 1.8k to 10k ohms. The frequency used was within the normal mode range.

    In an attempt to diagnose the problem further, I utilized an Arduino program to scan the I2C addresses connected to the SCL and SDA buses. However, the program failed to detect any addresses. Interestingly, when I applied pressure to the AD5675 chip with my thumb, it managed to detect the I2C address 0x0C. Unfortunately, the detection was lost once I removed my hand.

    I would greatly appreciate any insights or suggestions regarding this matter.

    Thank you!

  • Hi  ,

    Regarding your observation on changes in behavior when applying pressure to the device, this may indicate a potential hardware issue. It suggests the presence of a possible loose or intermittent contact. It would be advisable to thoroughly examine the physical connections and ensure they are secure and properly connected.

    You may also try to double check the following items:

    1.) Check the Basics again (Hardware):

    • Verify Vlogic Level: Ensure that the Vlogic level supplied to the device matches the voltage requirements.
    • Check Pull-Up Resistors: Double-check the pull-up resistors connected to the SDA and SCL lines. Confirm that the connections are secure and properly soldered.
    • Ground Connections: Ensure that the ground of your microcontroller is properly connected to the ground of the device.

    2.) Addressing:

    • Verify that the I2C address of the AD5675 matches the address you are trying to communicate with. According to the datasheet, the five MSBs are 00011, and the two LSBs (A1 and A0) are set by the state of the A1 and A0 address pins.

    3.) Questions:

    • Can you check if T6, data hold time (0.9us max) is met ?
    • Can you share your plots?
    • If you have multiple AD5675 available, can you try using them to help isolate the issue?

    Best Regards,

    Den

  • Previously I had issue not detecting I2C address. So I ordered another AD5675RSDZ evaluation board with SDP Board.  For check my old board i did following.

    I download ACE with plugins and launched the program. It detected my old board.

    SEE PICTURE 1

     

    Then I double click the board and it load the board view. But there is a error CheckState Failed. i) Why is that? (I tried both of AD5675 boards)

    SEE PICTURE 2

    When i hit reset board it gives me status as good.

    SEE PICTURE 3

     

    When I hit poll 1st it gave me status as good

    SEE PICTURE 4

     

    Then it gave me status as unknown.

    SEE PICTURE 5

     ii) Any issue with my board?

    Anyhow then I moved to chip and I make gain as 1 and set input register 0 as 0xF111 and updated DAC by pressing LDAC GPIO. Also applied changes but there is no any change is Vout. Frowning2 

    iii) why is that?

    SEE PICTURE 6

     

    Then I used my new AD5675R board and again the same problem.

    Anyhow im not going to use this software since im going to use I2C to set and read.

     

    Here is my I2C setup steps.

    1)Initialize the DAC by soft resetting.

    I put LDAC pin to always ground.

    A0 and A1 to ground the I2C address is 0001100 (0x0C)

    Command code is 01100000 (0x60) which is software reset

    Data is 0x1234 sent as 2 nibbles HSB and LSB and at last it misses ACK/NACK(assume since it happen due to resetting)

    (Frequency of I2C is 100kHz and I tried lowering the frequency also)

    SEE PICTURE 7

     

    2) Power down all channels to normal mode by sending 0x0000

    Command byte 01000000 (0x40)

    SEE PICTURE 8

     

    3) I write to input register 0 with 0x1111

    the command code is 00010000 (0x10)

    Data is 0x1111

    SEE PICTURE 9

     

    4) Update DAC Register 0 with the contents of Input Register 0

    Command code 0x20

    Data 0x0001 as only D0 is set to 1

    SEE PICTURE 10

     

    Since LDAC is tied to low I think this DAC update is not needed.

    Then I measured output value and it is successfully set. Blush

     

    5)

    After 1s delay I started reading from DAC0

    Command code is 1001 0000 (0x90 for enable readback)

    Then repeated start by R/W bit enabled but it received a NAK by DAC. iv) what is the problem here?

    SEE PICTURE 11

     

    6) Now my Vout0 is set to 0xF111 (~2.35Volts). So, I try to poll the device and read the memory but it was also not successful. It shows 0x0000

    SEE PICTURE 12

    (Through all of this steps I kept the AD5675 board and SDP board connected while ACE also running. I powered the AD5675R eval board by 6v)

    v) If im not using SDP do I need to give all power supplies? 6volts via J3. And what are the recommended values for J1(Vlogic) and J2(Vdd). And What are the concerns. Is Vlogic =3.3v and Vdd=3.3v okay?

    All the images are in drive link. drive.google.com/.../1E5suMuV-5g0mZYd_GUX2fPgiD6MirwVY
    Thank You!

  • Hi  ,

    Your set up seems correct as per your descriptions. 

    1.) For your question about readback your description seems okay too,  a NACK condition from the m aster, followed by a stop condition completes the read sequence. For more details you may refer to the Figure 60. I2C Read Operation of the datasheet for a better illustration.

    2.) For complete instruction about power supply conditions kindly refer to the User Guide under the "Power Supply" section.

    Best Regards,

    Den