LIS2DW12TR Accelerometer X, Y, Z values always return 0
Hi ,guys:
I have use the following code to read accelerometer data but the sensor data X, Y, Z are always 0 and I check register WHO_AM_I and it is quite correct. And I also check Status register but the DRDY always 0(means Sensor data not ready).
uint8_t rst;
float acceleration_mg[3];
int16_t data_raw_acceleration[3];
/* Check device ID */
lis2dw12_device_id_get(ctx, &wai);
if (wai != LIS2DW12_ID)
while (1) {
/* manage here device not found */
}
/* Restore default configuration */
lis2dw12_reset_set(ctx, PROPERTY_ENABLE);
do {
lis2dw12_reset_get(ctx, &rst);
} while (rst);
/* Enable Block Data Update */
lis2dw12_block_data_update_set(ctx, PROPERTY_DISABLE);
/* Set full scale */
//lis2dw12_full_scale_set(&dev_ctx, LIS2DW12_8g);
lis2dw12_full_scale_set(ctx, LIS2DW12_2g);
/* Configure filtering chain
* Accelerometer - filter path / bandwidth
*/
lis2dw12_filter_path_set(ctx, LIS2DW12_LPF_ON_OUT);
lis2dw12_filter_bandwidth_set(ctx, LIS2DW12_ODR_DIV_4);
/* Configure power mode */
lis2dw12_power_mode_set(ctx, LIS2DW12_HIGH_PERFORMANCE);
//lis2dw12_power_mode_set(&dev_ctx, LIS2DW12_CONT_LOW_PWR_LOW_NOISE_12bit);
/* Set Output Data Rate */
lis2dw12_data_rate_set(ctx, LIS2DW12_XL_ODR_25Hz);
/* Read samples in polling mode (no int) */
while (1) {
uint8_t reg;
/* Read output only if new value is available */
lis2dw12_flag_data_ready_get(ctx, ®);
lis2dw12_all_sources_t all_source;
lis2dw12_all_sources_get(ctx, &all_source);
if (reg) {
/* Read acceleration data */
memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
lis2dw12_acceleration_raw_get(ctx, data_raw_acceleration);
acceleration_mg[0] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[0]);
acceleration_mg[1] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[1]);
acceleration_mg[2] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[2]);
LOG_INF("Acceleration [mg]:%4.2f\t%4.2f\t%4.2f\r\n",acceleration_mg[0], acceleration_mg[1], acceleration_mg[2]);
}
else{
LOG_INF("No Sensor Data......");
}
}we have also found that we can't write LIS2DW12 register successfully through nrf52840 using NCS so we can't configure sensor correctly. Can you give me any suggestions or ideas? Thanks.
BRs
