ADS1119 16bit ADC with I2C protocol not working

I need to measure some analog signal with very high precision for which I require 16bit resolution. I have chosen ADS1119 (datasheet http://www.ti.com/lit/ds/sbas925a/sbas925a.pdf)

I designed the PCB and soldered the components. PCB schematic attached. with Jumper 16 and 17 shorted to VCC and Jumper 18 to ground and 19 to VCC.

I have written the following code to simply set the config register and read it back. (Not even to read the data). Even config register is not getting read ( changed the ADS1119 IC twice just to ensure that there is no hardware problem)

# include <Wire.h>
//Both A0 and A1 address pins connected to VCC. Therefore device address is 0x45

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
 Wire.begin();
 delay(1000);
 Wire.beginTransmission(0x45);//begin transmission
 Wire.write(byte(0B00000110));//Reset command
 Wire.write(byte(0B00001000));//Start/Sync command
 Wire.endTransmission();//end ttransmission
 delay(10);
 //Following code is as per section 8.5.3.7 (figure 38) WREG command page 26 of ADS1119 datasheet
 Wire.beginTransmission(0x45);//begin transmission
 Wire.write(byte(0B10001010));//7bit address with last bit as zero for write mode 
 Wire.write(byte(0B01000000));//WREG comand 
  Wire.write(byte(0B01100011));// configuration register data for MUX connected to gnd and AINP, gain 1, 20SPS, Cont. mode, external ref
 Wire.endTransmission();//end ttransmission
 delay(10);
 //Following code is as per section 8.5.3.6 (figure 37) RREG command page 26 of ADS1119 datasheet
 Wire.beginTransmission(0x45);//begin transmission
 Wire.write(byte(0B10001010));//7bit address with last bit as zero for write mode 
 Wire.write(byte(0B00100000));//RREG comand with register adress as 0
 Wire.write(byte(0B10001011));//7bit address with last bit as one for read mode 
 delay(10);
 Serial.println(Wire.read());
 Wire.endTransmission();
 delay(10);

}

void loop() {
}

The problem is that the device is not responding at all. Not even to general I2C call of 0x0 address.

All I can see on I2C read on serial monitor is -1.

Can anyone tell me what I am doing wrong?

ADS1119.ino (1.37 KB)

The Wire.requestFrom() reads data from a I2C device. See my alternative explanation of the Wire library.

You should start with a I2C Scanner sketch to verify that your I2C bus is working and to find the I2C address.

Yep I would not expect it to work. You have no pull up resistors on the I2C communication lines. I cannot tell what things are set at, the jumpers are not defined. Get the Arduino cookbook and read it. Also on line there are many videos etc showing the Arduino and how to do what you want. This additional information will go a long way in getting your problem solved.

@gilshultz - I have already mentioned the jumper settings above "with Jumper 16 and 17 shorted to VCC and Jumper 18 to ground and 19 to VCC." As for SCl and SDA being pull up I have already done that on Mega. There is certainly no connection issue, I have been working with Arduino for 7-8 years now and have worked with practically all the communication protocols several times.

Also the same Mega is working fine with capacitive touch screen where in the touch uses I2C. (However to ensure that touch panel communication is not interfering I have physically removed connections to touch panel and have written a separate code for ADS1119.)

The only issue I see is with ADS1119 communication protocol. It is a bit confusing in the datasheet. Can you pleease check if I have done something wrong?