Good afternoon!
I am currently working on a project aimed at converting the digital signal from an Arduino R3 to analog signal through a DAC (Max521 acpp). However, I keep failing to communicate with the DAC. I ran an I2C scanner, but it shows 'device not found.' I tried the address for Max521 from the datasheet, but it fails too. I did not find any more information on the internet, so here I am! Thanks for your help in advance.
Blow is some figures for my set up:

MAX521 datasheet:https://www.analog.com/media/en/technical-documentation/data-sheets/MAX520-MAX521.pdf
uno A4--dac sda
A5--dac scl
5v--Vdd
GND-DGND
AD0--Vdd
AD1--GND ( with mentioned in datasheet when i did such connection the slave address should be 0101001 or 0x29 but I still failed under this address)
REF4-5V ( I measured the voltage between output 7 and GND fromDAC always get around 4.2V insted of near 5V with or without REF4 connect to 5V.)
Two pull up resistor are both 4.7K ohm (with or without pull up resistor i failed to communicate with DAC).
I2C scanner code:
#include <Wire.h>
void setup()
{
Wire.begin();
Wire.setClock(100000); // 100khz
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}

