This is now more or less solved. The chip is said to be ST LIS331DLH, and software-wise, that seems to be correct. Ie. the register map looks as so:
Code: Select all
LIS331DLH Accelerometer Register address map
Name Type Addr Default Comment Hex Binary
Reserved (do not modify) - 00-0E - Reserved
WHO_AM_I r 0F 00110010 Dummy register
Reserved (do not modify) - 10-1F - Reserved
CTRL_REG1 rw 20 00000111
CTRL_REG2 rw 21 00000000
CTRL_REG3 rw 22 00000000
CTRL_REG4 rw 23 00000000
CTRL_REG5 rw 24 00000000
HP_FILTER_RESET r 25 - Dummy register
REFERENCE rw 26 00000000
STATUS_REG r 27 00000000
OUT_X_L r 28 output
OUT_X_H r 29 output
OUT_Y_L r 2A output
OUT_Y_H r 2B output
OUT_Z_L r 2C output
OUT_Z_H r 2D output
Reserved (do not modify) - 2E-2F - Reserved
INT1_CFG rw 30 00000000
INT1_SOURCE r 31 00000000
INT1_THS rw 32 00000000
INT1_DURATION rw 33 00000000
INT2_CFG rw 34 00000000
INT2_SOURCE r 35 00000000
INT2_THS rw 36 00000000
INT2_DURATION rw 37 00000000
Reserved (do not modify) - 38-3F - Reserved
Undocumented (zero) - 40-7F
As above with auto-increment 80-FF
On Old3DS it is marked ""2048, 33DH, X1MAQ", which is said to be ST LIS331DLH.
On New3DSXL it is marked "KXTKK, 40860, .3413", which might be a Kionix chip, resembling KXTIK, but with LIS331DLH-style register map & device address.
The chip is wired to the MCU, so it's I2C registers can be accessed only indirectly, through the MCU. The related MCU registers on 3dbrew are mostly left undocumented, or even mistaken as gyroscope registers ; )
The actual functions for MCU register 40h..4Fh are:
Code: Select all
40h R/W Accelerometer Mode (bit0,1) (enable/mode flags or so?)
41h R/W Accelerometer I2C Index for manual read (via MCU[44h])
42h R/W Unused?
43h R/W Accelerometer I2C Index for manual write (via MCU[44h])
44h R/W Accelerometer I2C Dat from/to read/write (via MCU[41h/43h])
45h,46h R Accelerometer Output X (lsb,msb)
47h,48h R Accelerometer Output Y (lsb,msb)
49h,4Ah R Accelerometer Output Z (lsb,msb)
4Bh R/W Pedometer Step Count, bit0-7 ;\(for the current day)
4Ch R/W Pedometer Step Count, bit8-15 ; (uh, how/which day?)
4Dh R/W Pedometer Step Count, bit16-23 ;/
4Eh R/W Pedometer Flags (Wr.bit0=ClearArray?, Rd.bit4=ArrayFull?)
4Fh R Pedometer Array[6+N] ;timestamp[6] and step.counts[2*A8h]
Both Old3DS and New3DSXL have the chip on the mainboard, somewhere underneath of the bottom-screen. That (and the exact location) may be important when interpreting the accelerometer data (ie. the chip isn't parallel with the top-screen unless the case is fully unfolded).
With the pedometer feature... I guess that means that the accelerometer chip is always (or maybe optionally) battery-powered, even when the console is off?