Post Go back to editing

Question about ADXL362 Temperature Register Readings

Category: Hardware
Product Number: ADXL362

Hello,

I am using the ADXL362 with a Digilent Nexys A7-100T FPGA development board through SPI communication.

To verify that the SPI communication is working correctly, I first read the PARTID, STATUS, and POWER_CTL registers. All of these registers return the expected values according to the datasheet.

The register values are displayed on the Nexys A7 board LEDs, allowing me to verify the received data directly on the FPGA board.

After that, using the same SPI read procedure, I read the temperature registers by changing only the register address. I read TEMP_H (0x15) and TEMP_L (0x14) in separate SPI read transactions, and I also display these values on the board LEDs.

The values I obtain are:

TEMP_H (0x15) = 11111110
TEMP_L (0x14) = 10011110

The ambient temperature is approximately 25 °C. However, when I combine or interpret these register values as the temperature output, they appear to correspond to a negative raw temperature value. Therefore, I am not sure whether my implementation is correct or whether I am misunderstanding how the temperature registers should be read or interpreted.

I would appreciate your help with the following questions:

1. Are these temperature register values expected or reasonable under these conditions?
2. If the PARTID, STATUS, and POWER_CTL registers are read correctly, is it still possible that only the temperature registers are being read incorrectly?
3. Is there any additional configuration, calibration step, or special procedure required to read and interpret the temperature registers correctly besides what is described in the datasheet?

Thank you for your help.

  • Hi there, thanks for your question. This definitely doesn't seem like a correct value, as the current output is a very large negative temperature value. For now I would keep in mind that temperature data is formatted as sign-extended 12-bit data, and that the 4 MSBs of TEMP_H are the sign of the value, where 1 is negative. Are you able to read acceleration data alright? It is formatted in the same way as temp. data, but with a different resolution (dependent on user selection).

    Let me know the result of your tests and I'll get back to you.

    Regards,

    Nico

  • Hi,

    Thank you for your response.

    I also tested the acceleration registers using the same SPI read procedure.

    The values I obtained are:

    X_H = 11111111

    X_L = 11001111

    Y_H = 00000000

    Y_L = changing in the lower bits

    Z_H = 11111101

    Z_L = changing in the lower bits

    The board is lying flat on a table during these measurements.

    I also obtained the following registers:

    DEVID_AD = 0xAD

    DEVID_MST = 0x1D

    PARTID = 0xF2

    STATUS = 0x41

    POWER_CTL = 0x02

    The temperature registers still read:

    TEMP_H = 11111110

    TEMP_L = 10011110

    One additional question: for the temperature registers, should I read them differently from the other registers (such as DEVID, STATUS, or POWER_CTL), or is the same SPI read sequence sufficient? I currently use the same procedure for all registers and only change the register address.

  • Hi there, sorry about the delay. I'd recommend burst reads for the 6 acceleration registers and the 2 temp. registers, as they are more power-efficient than doing single reads for every register. However, in your case the temperature sensor readout seems like an anomaly to me. Do you have access to another XL362 you could try running the same test with?