The register configuration is as below array which corresponds to ctrl_reg 1-5 of LIS3DH. I read back the ctrl_reg after configure it, the result is correct which means the register is programmed to the value as I wanted. The result I expected is that I could get 12-bit data from OUT_X_L(28h) - OUT_Z_H(2Dh). But the result is I could only get 8-bit data from those registers. The MSB's of the data output registers are always zero. The function I am using to read the acceleration data is copied below as well, where the last parameter of i2c_read as 1 meas burst read. I'm wondering what the problem is to prevent me from getting 12-bit output data. Thanks.
/* Enable x,y,z accelaration detect, normal mode, with 400HZ odr */
/* Enable high pass filter for AOI1 */
/* Enable IA1 on INT1 */
/* Full Scale 2g, high resolution
/* Fifo Disabled */
void accel_read(int16_t* accel)