Interfacing DUE I2C with AD5669R DAC Board

Hello everyone,

I've been trying to get my DUE to control an AD5669R DAC through the I2C bus. I use pin 20 and 21 (SDA and SCL) and connected it directly to the SCL and SDA pins in my AD5669R board. Nothing happened, so I tried to look at the output through an oscilloscope to see what was being sent. It seems that I see some output, but it makes no sense as to the data that I send. The clock rate seems okay, but the amount of data is not right. IE. I send 3 bytes of data, but only see 8 clock cycles.

For now, I've been just testing with a simple code (as shown below) and I really have no clue what is wrong.

    Wire.begin();
  Serial.begin(9600); 
  byte address = 0x54;
  byte command = 0x3F;
  byte data1 = 0x4E;
  byte data2 = 0x20;
  Wire.beginTransmission(address);
  Wire.write(command);
  Wire.write(data1);
  Wire.write(data2);
  Wire.endTransmission();

Thanks for any help.

I'll take a stab: Is the "A0" pin on the AD5669R chip actually tied to Vdd (for an effective address of 0x54)? Pages 11 and 22 of the datasheet.

Next: It's been a while now (so thing are getting foggy), but there may be bugs in Wired that result in STOPS being generated after each byte written.

Do some searching for I2C issues (they do exist), especially for multi-byte transfers. Maybe try searching on my user name. I definitely ended up writing my own version of the interface (which was then posted). However, I think that somebody else has since posted more elegant code than my hackery.

Good luck,

-Chris

Yea, the A0 pin is tied to Vdd, so the address should be okay.

I did some searching and the only thing I found related is the I2C Repeated Start topic that you discussed with another user. At first glance, I'm not too sure what the code does and if it would help me with this problem. If so, I guess I'll start looking into it and hopefully fix the issues I'm having.

Also, would using another type of Arduino be better for my purposes?

Thanks Chris.

nick_w: Also, would using another type of Arduino be better for my purposes?

If you want it to work right out of the box... probably another (older) Arduino would be the way to go.

If you like figuring things out, then there's nothing really wrong with the DUE, well, except:

  • the Wire library is not at all complete
  • the I2C pull-up resistor values are too small
  • troubles with the Reset line (or so I see on the forum)
  • questionable power-circuit design (my opinion)
  • others?

All of these things you can overcome with proper motivation (and it's fun).

Or, grab a Mega, and it'll probably work from the get-go.

-Chris