0
\$\begingroup\$

Table of ADXL355 MEMS' RESET value

Source: Page 31 ADXL355 MEMS' Datasheet.

Status Register's bit breakdown

Source: Page 32 ADXL355 MEMS' Datasheet

The above is some of ADXL355 Accelerometer Register map table. From that table, in the RESET column, there are their respective value. There are 48 register addresses, from 0x00 - 0x2F. Mostly the reset values are 0x00, but there are some that are not, they are: 0xAD, 0x1D, 0xED, 0x01, 0x60, 0x81. POWER_CTL itself, as written in that page I screenshot, has 0x01 its reset value.

The second picture shows a breakdown of the STATUS Register. As we may see, bit [4:0] have their own bit name, function, reset value, and access status, while bit [5-7] are reserved. The rest are broke down according to their function or need. The detail is in that datasheet.

So here, what I want to ask are:

  1. What is that register address?
  2. What is that bits value? What is their relation to register address and reset value, and how that bits themselves have their own reset value apart from the register [address] reset value?
  3. Still related to (especially) that STATUS register, what should be the value of those bits [4:0]? There is no explanation in that datasheet either they are 0 or 1 to show their function as in their description.
  4. What is the purpose of that so called RESERVED bits in every register?
  5. What is that reset value, why do they are different?
  6. How to link them all to give a comprehensive understanding?

Note:

I am struggling to understand this register so I could have missed some key point here, or maybe some consider this trivial, but I do I am struggling to understand. So, if one knows well about it, kindly edit this post so it is clearer.

\$\endgroup\$

1 Answer 1

4
\$\begingroup\$

A register is similar to a memory location or a variable. It can store a certain value which can usually be read or written. The register address is therefore similar to a memory address and is required if the device has more than one register (most devices do). When you write a register, you have to first transmit the register address and then the data you want to put into that register. If you want to read it, you first transmit the register address and then read from the bus (I2C in this case) to get the value of that register.

Setting a value to a register usually directly affects what the chip is doing, so it can be controlled this way. In this particular case many registers are read-only (as indicated by the "R" in the "R/W" or "Access" column), which means that they can only be read, writing to the registers will not do anything.

If you read out the status register, you get various information encoded in different bits. If you want to know whether the FIFO is full, you read that register and then check whether bit 1 is set. If so, that condition is true.

Reserved bits are, as the name calls, reserved by the manufacturer. They have no documented meaning and should never be interpreted in any way. When you read the register, you should just filter them out (e.g. by ANDing the value with 0x1F here). Reserved bits should normally also not be written to anything but their default values (if that's possible), as it may have undesirable effects, such as setting the chip to a test mode or something.

In your case, registers 0-0x03 are read-only, and thus their reset value is a constant and can be used to identify the chip and its revision. For other registers that are not read-only but have a non-zero default value that is just how the chip initializes itself.

\$\endgroup\$
14
  • \$\begingroup\$ They're not all read-only, that table has been cropped from the datasheet. \$\endgroup\$
    – Finbarr
    Commented Feb 26 at 12:02
  • \$\begingroup\$ @Finbarr Thanks for pointing that out, in fact, the registers 0-0x11 (shown above) are all read only. Others are not. \$\endgroup\$
    – PMF
    Commented Feb 26 at 12:08
  • \$\begingroup\$ @PMF, from address 1E-2E are R/W for any reset value. Looks like you are not good enough to answer my questions. There are lot of that my questions. \$\endgroup\$ Commented Feb 26 at 13:41
  • \$\begingroup\$ @PMF, Register indeed is a memory, NOT "similar to a memory location or a variable". It is a memory. To be more specific, it is storage, used to store things. In computer world, it is used to store any value or variable. \$\endgroup\$ Commented Feb 26 at 13:44
  • \$\begingroup\$ @AirCraftLover If you know the answer, why are you asking, then? And no, a register is not the same as memory, as it is usually implemented differently in hardware. \$\endgroup\$
    – PMF
    Commented Feb 26 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.