Data Sheet ADXL356/ADXL357
Rev. A | Page 27 of 42
I2C PROTOCOL
The ADXL357 supports point to point I2C communication.
However, when sharing an SDA bus, the ADXL357 may prevent
communication with other devices on that bus. If at any point,
even when the ADXL357 is not being addressed, the 0x3A and
0x3B bytes (when the ADXL357 device address is set to 0x1D),
or the 0xA6 and 0xA7 bytes (when the ADXL357 device address
is set to 0x53) are transmitted on the SDA bus, the ADXL357
responds with an acknowledge bit and pulls the SDA line down.
For example, this response can occur when reading or writing
the data bytes (0x3A/0x3B or 0xA6/0xA7) to another sensor on
the bus. When the ADXL357 pulls the SDA line down,
communication with other devices on the bus may be
interrupted. To resolve this interruption, the ADXL357 must be
connected to a separate SDA bus, or the CS/SCL pin must be
switched high when communication with the ADXL357 is not
desired (it is normally grounded).
The ADXL357 supports standard (100 kHz), fast (up to 1 MHz)
and high speed (up to 3.4 MHz) data transfer modes when the
bus parameters in Table 4 are met. There is no minimum SCL
frequency, with the exception that, when reading data, the clock
must be fast enough to read an entire sample set before new data
overwrites it. Single-byte or multiple byte reads/writes are
supported. With the MISO/ASEL pin low, the I2C address for
the device is 0x1D and an alternate I2C address of 0x53 can be
chosen by pulling the MISO/ASEL pin high.
There are no internal pull-up or pull-down resistors for any unused
pins. Therefore, there is no known state or default state for the pins
if left floating or unconnected. SCLK/VSSIO must be connected
to ground when communicating to the ADXL357 using I2C.
Due to communication speed limitations, the maximum output
data rate when using the 400 kHz I2C mode is 800 Hz, and it
scales linearly with a change in the I2C communication speed.
For example, using I2C at 100 kHz limits the maximum ODR to
200 Hz. Operation at an output data rate above the recommended
maximum may result in an undesirable effect on the acceleration
data, including missing samples or additional noise.
Figure 70 to Figure 72 detail the I2C protocol timing. The I2C
interface can be used on most buses operating in I2C standard
mode (100 kHz), fast mode (400 kHz), fast mode plus (1 MHz),
and high speed mode (3.4 MHz). The ADXL357 I2C device ID
is as follows:
MISO/ASEL pin = 0, device address = 0x1D
MISO/ASEL pin = 1, device address = 0x53
If other devices are connected to the same I2C bus, the nominal
operating voltage level of these other devices cannot exceed
VDDIO by more than 0.3 V. External pull-up resistors, RP, are
necessary for proper I2C operation.
READING ACCELERATION OR TEMPERATURE
DATA FROM THE INTERFACE
Acceleration data is left justified and has a register address order of
most significant data to least significant data, which allows the
user to use multibyte transfers and to take only as much data as
required—8 bits, 16 bits, or 20 bits, plus the marker. Temperature
data is 12 bits unsigned, right justified. The ADXL357 temperature
value is split over two bytes, but is not double buffered, meaning
the value can update between readings of the two registers. The
data in XDATA, YDATA, and ZDATA is always the most recent
available. It is not guaranteed that XDATA, YDATA, and ZDATA
form a set corresponding to one sample point in time. The routine
used to retrieve the data from the device controls this data set
continuity. If data transfers are initiated when the DATA_RDY bit
goes high and completes in a time approximately equal to 1/ODR,
XDATA, YDATA, and ZDATA apply to the same data set.
For multibyte read or write transactions through either serial
interface, the internal register address auto-increments. When
the top of the register address range, 0x3FF, is reached, the auto-
increment stops and does not wrap back to Address 0x00.
The address auto-increment function disables when the FIFO
address is used, so that data can be read continuously from the
FIFO as a multibyte transaction. In cases where the starting
address of a multibyte transaction is less than the FIFO address,
the address auto-increments until reaching the FIFO address,
and then stops at the FIFO address.
10 11 12 13 14 15 16 17 18 19 28 2920 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37123456789
A60 A5A4A3A2A1A0 D60 D5D4D3D2D1D0 AKAKAK A6 A5 A4 A3 A2 A1 A0
A6 A5 A4 A3 A2 A1 A0 RW
RW
SCL
START REPEAT
START
DEVICE ADDRESS
SINGLE BYTE READ
REGISTER ADDRESS DEVICE ADDRESS DATA BYTE STOP
SDA AK
INDICATE SDA IS
CONTROLLED BY ADXL357
15429-069
Figure 70. I2C Timing Diagram—Single-Byte Read
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27123456789
START
DEVICE ADDRESS REGISTER ADDRESS DATA BYTE
STOP
SCL
SDA
A60 A5A4A3A2A1A0AK D6D7 D5 D4 D3 D2 D1 D0 AK
A6 A5 A4 A3 A2 A1 A0 RW AK
15429-070
Figure 71. I2C Timing Diagram—Single-Byte Write
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 19123456789
SCL
START
DEVICE ADDRESS REGISTER ADDRESS DATA BYTE 1 DATA BYTE n
SD
A60 A5A4A3A2A1A0AK D6D7 D5 D4 D3 D2 D1 D0 D7AK D0 AK D6D7 D5 D4 D3 D2 D1 D0 AK
A6 A5 A4 A3 A2 A1 A0 RW AK
15429-071
Figure 72. I2C Timing Diagram—Multibyte Write