AnsweredAssumed Answered

AD5144A digipot programming via Arduino I2C

Question asked by aschwe01 on Jul 11, 2013
Latest reply on Jul 18, 2013 by DRice

I am using the AD5144A 100kΩ digipot (among other AD parts) to be controlled by an Arduino Mega 2560. The Arduino is capable of creating a 100 kHz I2C bus and programming slave devices, such as the AD5144A. However, using the provided 7-bit addresses on the datasheet, no communication can be established via the I2C bus. I have the chip running off of 5 V for both Vdd and VLogic, with the Arduino's SCL and SDA running at 0-5 V. The Arduino returns a NACK for every address the AD5144A supports (in decimal: 40, 42, and 43). I am sending the command (in binary): 0001 0000 0000 1000. This corresponds to "Write 0000 1000 to RDAC1".I know that the Arduino's I2C protocol complies with the I2C standard, and I have fed the above code to other (simulated) I2C slave devices to confirm that the data is being clocked in correctly, to the correct slave address. Is there anything I might be missing here? Any and all help would be greatly appreciated. Please let me know if you need more information as well.

 

 

Arduino code included below:

 

#include <Wire.h>

 

void setup() {

  Wire.begin();

}

 

void loop() {

  Wire.beginTransmission(40); // address is 0101000, for ADDR connected to VLogic

  Wire.write(byte(0x10)); // binary 0001 0000

  Wire.write(8); // binary 0000 1000

  int test = Wire.endTransmission(); // 0 = success, 2 = NACK (bad address)

  Serial.print("Response: ");

  Serial.println(test);

  if (test == 0) {

     Serial.print("Success!");

  }

   else {

      Serial.print("Failure");

   }

   delay(10000); // wait a while then try again

}

Outcomes