lectura de datos ADXL343

1

Estoy usando un acelerómetro ADXL343 en uno de mis diseños y obtengo lecturas extrañas del dispositivo. Solo para estar seguro, me gustaría confirmar que estoy formateando los datos correctamente. (Obtengo las lecturas a través de I2C y el identificador del chip se lee bien, por lo que el bus funciona correctamente)

Configuro el dispositivo como se explica en enlace

DATA_FORMAT = 0x0B  // Full resolution and Range +-16g
POWER_CTL = 0x08    // Start to measure
INT_ENABLE = 0x80   // Enable data ready interrupt

Luego comienzo a sondear el dispositivo haciendo lecturas de ráfagas para obtener los 6 registros de datos (DATAX0, DATAX1, DATAY0, DATAY1, DATAZ0 y DATAZ1). Almaceno estos valores en una matriz de enteros de 16 bits sin signo (uint16_t datos []). Entonces, los datos [] = {DATAX0, DATAX1, DATAY0, DATAY1, DATAZ0, DATAZ1}

Como se explica en la nota de la aplicación, los datos están formateados como:

entonces,creoquetengoqueenmascararlapalabrade16bitscon0x8FFFdelasiguientemanera:

int16_taccelerationRawX=(int16_t)(((data[1]<<8)|data[0])&0x8FFF);

¿Estoescorrecto?Hagoestoporque,cuandoseemiteaintfirmado,laMCUsoloesperaquelaMSBseaelbitdesigno,sinoenmascaraD14,D13yD12,seinterpretaráncomobitsregulares.

Luego,paraobtenerlaaceleraciónfinal,multiplicoporelfactordeescala3.9:

int16_taccelerationX=accelerationRawX*3.9;

Estoyhaciendoalgomalporquelosresultadosqueobtengonotienenmuchosentido.EsperoobtenerunvalordeaceleracióndeZcercanoa1000mgcuandolatablaestéapoyadaenlatabla,peroobtengounresultadomuydiferente.

Además,noentiendoestatabladelamismaAN:

¿Cómoobtienenelvalor+1599?porque4095*3.9es15970.5..

Cualquierconsejooayudaseráapreciado!

Hojadedatosdelapieza: enlace

    
pregunta jap jap

0 respuestas

Lea otras preguntas en las etiquetas