已回答假定已回答

ADXL362 加速度数据问题

WallaceZhang 在 2016-7-20 詢問的問題
最後回覆由neilzhao於2016-7-27提供

Hi,

目前我在调试adxl362 gsensor,使用的蓝牙平台(Nordic nRF52832)。

驱动我使用的是官网下载的adxl362_generic.zip。

SPI的驱动已经实现,读写数据没有问题。

我读了下面的三个寄存器,读出来的值和SPEC上是一样的。

ADXL362_GetRegisterValue(&regValue, ADXL362_REG_DEVID_AD, 1);-----0xAD

ADXL362_GetRegisterValue(&regValue, ADXL362_REG_DEVID_MST, 1);----0x1D

ADXL362_GetRegisterValue(&regValue, ADXL362_REG_PARTID, 1);    -----0xF2

 

初始化流程:

ADXL362_Init();

ADXL362_SetPowerMode(1);

ADXL362_SetRange(ADXL362_RANGE_2G);//2G

ADXL362_SetOutputRate(ADXL362_ODR_50_HZ);

然后我创建了一个20ms的timer,不停的获取加速度数据

err_code = app_timer_create(&ADXL362_TIMER_STEP_CLOCK, APP_TIMER_MODE_REPEATED, timer_step_event_handler);
err_code = app_timer_start(ADXL362_TIMER_STEP_CLOCK, ADXL362_STEP_INTERVAL, NULL);------
启动timer,每隔20ms运行一次

 

 

timer的处理函数如下:

 

void timer_step_event_handler(void* p_context)
{
       short x,y,z;
       ADXL362_GetXyz(&x, &y, &z);
       printf("x = %d, y = %d, z = %d\r\n",x, y, z);
}

 

目前发现x y z轴的数据有些不正确,

特别是z轴的数据

这个是正面的数据,超过1000了。

x = 105, y = 39, z = 1305
x = 103, y = 33, z = 1318
x = 88, y = 19, z = 1311
x = 96, y = 28, z = 1299
x = 103, y = 31, z = 1302
x = 103, y = 22, z = 1307
x = 103, y = 25, z = 1308
x = 103, y = 33, z = 1304

 

下面是反面的数据,但是一直都是-700多。

x = 67, y = 44, z = -765
x = 76, y = 44, z = -770
x = 76, y = 44, z = -770
x = 65, y = 48, z = -775
x = 64, y = 46, z = -770
x = 65, y = 44, z = -773

 

y轴的数据和datasheet描述的+-反了。

按照datasheet,这个y轴的数据应该是-的。(目前发现是中文datasheet和英文datasheet描述冲突)

x = -65, y = 1080, z = 182

x = -66, y = 1080, z = 179

x = -64, y = 1080, z = 179

x = -64, y = 1080, z = 179

x = -64, y = 1080, z = 179

x = -64, y = 1084, z = 184

x = -64, y = 1081, z = 183

x = -64, y = 1080, z = 179

 

按照datasheet,此时y轴的数据应该是+的。

x = 46, y = -1152, z = 204

x = 48, y = -1152, z = 206

x = 46, y = -1149, z = 204

x = 47, y = -1149, z = 207

x = 39, y = -1149, z = 207

x = 39, y = -1151, z = 207

x = 39, y = -1149, z = 209

 

x轴数据+-按照datasheet也反了。

此时数据按照datasheet应该是+的。(目前发现是中文datasheet和英文datasheet描述冲突)

x = -1049, y = 30, z = 217

x = -1047, y = 30, z = 217

x = -1049, y = 28, z = 219

x = -1049, y = 24, z = 216

x = -1045, y = 19, z = 217

 

此时的数据按照datasheet应该是-的。

x = 1000, y = -58, z = 136

x = 999, y = -57, z = 140

x = 1001, y = -61, z = 136

x = 1001, y = -58, z = 134

x = 999, y = -57, z = 140

x = 1003, y = -57, z = 136

x = 1000, y = -57, z = 143

x = 999, y = -57, z = 140

結果