ADXL355 I2C Trouble

I am working on a project and I am trying to read the x-data from the accelerometer over I2C. Based off of the evaluation board datasheet for EVAL-357 (EVAL-355) https://www.analog.com/media/en/technical-documentation/user-guides/eval-adxl356-357-ug-1119.pdf, my wiring is as follows:

P1-1 = 3V3
P1-2 = nothing
P1-3 = 3V3
P1-4 = nothing
P1-5 = ground
P1-6 = nothing
P2-1 = nothing
P2-2 = SCL
P2-3 = nothing
P2-4 = ground
P2-5 = ground
P2-6 = SDA

I am not getting a reading onto the serial monitor, and it is probably because I am accessing the device register incorrectly or my wiring is incorrect. Please help.

#include <Wire.h>
#define ADXL (0x1D)
int xdata = 0x0A;
double value = 0;

void setup() {
  Wire.begin(); //initiate the accelerometer
  Serial.begin(9600);  //initiate the serial monitor
  delay(100);
}

void loop() {
  Wire.beginTransmission(ADXL); //prepare the device to read
  //ask for XDATA
  Wire.write(xdata);
  Wire.endTransmission();
  
  Wire.beginTransmission(ADXL);
  Wire.requestFrom(ADXL, 1); //request 1 byte from the device
  value = Wire.read();
  Serial.println ("Value x is:");
  Serial.println(value);  //this will have to be interpreted
  Wire.endTransmission();
  delay(1000); //pause for a second
}

To check communications, run the I2CScanner program.

Once I run the sketch and figure out the correct address of the device, is my wiring correct and am I accessing its x-register correctly?

Let us know what happens when you run the address scanner, and we will go from there.

Upon running the sketch, the I2C address that was returned was 0x1D of the device.

That is encouraging. Now, comparing the code you posted with this random example, it looks like you have some extra begin and end transmission commands. But as always, the device data sheet explains exactly what the device expects in terms of I2C transactions. If things don't work, that is the first place you should look. No two I2C devices are alike!

Wire.beginTransmission(address);    // Get the slave's attention, tell it we're sending a command byte
Wire.write(0x32);                               //  The command byte, sets pointer to register with address of 0x32
Wire.requestFrom(address,1);          // Tell slave we need to read 1byte from the current register
byte slaveByte2 = Wire.read();        // read that byte into 'slaveByte2' variable
Wire.endTransmission();                  // "Hang up the line" so others can use it (can have multiple slaves & masters connected)

So currently I have this code and with the accelerometer in motion, the serial monitor is still outputting 0's. The data sheet mentions a DATA_RDY bit in the status register indicating a new reading of acceleration data. Do I have to access this register in order to get a reading from the X,Y, or Z register? Or do I have to write a repeated "Wire.beginTransmission(address)" line to mimic a repeated start sequence for reading data over I2C (or is that already included within the Wire library)?

#include <Wire.h>
#define ADXL (0x1D)
int xdata = 0x0A;
byte value;

void setup() {
  Wire.begin(); //initiate the accelerometer
  Serial.begin(9600);  //initiate the serial monitor
  delay(100);
}

void loop() {
  Wire.beginTransmission(ADXL); //prepare the device to read
  //ask for XDATA
  Wire.write(xdata);
  Wire.requestFrom(ADXL, 1); //request 1 byte from the device
  value = Wire.read();
  Wire.endTransmission();
  Serial.println ("Value x is:");
  Serial.println(value);  //this will have to be interpreted
}

Reading one byte from a register is not likely to be very fruitful in terms of getting 3D accelerations. which for this device requires you to read 9 bytes to get 3 20 bit acceleration values.

Do I have to access this register in order to get a reading from the X,Y, or Z register?

It is a good idea to know that data are ready before reading them, and that flag is in the status register.

ADXL355 data sheet. See page 26.

For multibyte read or write transactions through either serial interface, the internal register address autoincrements. When the top of the register address range, 0x3FF, is reached the auto-
increment stops and does not wrap back to Hex Address 0x00.