Acerca de las instrucciones de depuración del sensor de 6 ejes LSM6DSLTR

Acerca de las instrucciones de depuración del sensor de 6 ejes LSM6DSLTR

  1. El pin de detección del AP debe configurarse como desplegable y no se puede configurar como pull-up, de lo contrario, el pin de interrupción siempre es alto; el pin int1 del sensor está configurado como modo de drenaje abierto:Inserte la descripción de la imagen aquí
  2. La interrupción de activación se puede configurar y el umbral se establece en 1,2 g para generar una interrupción.
    Agregue la función lsm6dsl_init_sensors:
printk(KERN_ERR "------sy: set wakeup---  \n");
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_ACCEL_ODR_ADDR,   //CTRL1_XL  0x10
					   0x40,
					   LSM6DSL_EN_BIT, false);
//这个参数必须是false,否则导致卡死
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_ACCEL_ODR_ADDR,   //0x10
					   0x20,
					   LSM6DSL_EN_BIT, false);

   err = lsm6dsl_write_data_with_mask(sdata->cdata,
					  0x0B,	//dataReady mode	0x0B  set pluse mode
					  0x80,
					  LSM6DSL_EN_BIT, false);
					   
	//打开基本的中断:wakeup free-fall,具体使用哪些,在别的寄存器控制
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_LIR_ADDR,   //TAP_CFG: 0x58
					   0x80,
					   LSM6DSL_EN_BIT, false);
	//HPF apply
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_LIR_ADDR,   //0x58
					   0x10,
					   LSM6DSL_EN_BIT, false);

	//设置唤醒阈值wake up thr set 101  1.2/(16g/64)=4.8
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_WAKE_UP_ADDR,
					   0x04,
					   LSM6DSL_EN_BIT, false);
	//err = lsm6dsl_write_data_with_mask(sdata->cdata,
	//				   LSM6DSL_WAKE_UP_ADDR,
	//				   0x02,
	//				   LSM6DSL_EN_BIT, false);
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_WAKE_UP_ADDR,
					   0x01,
					   LSM6DSL_EN_BIT, false);

	//route wake_up to int1
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_MD1_ADDR,  //005e
					   0x20,
					   LSM6DSL_EN_BIT, false);

	//int1 int2 set open-drain
	err = lsm6dsl_write_data_with_mask(sdata->cdata,
					   LSM6DSL_BDU_ADDR,
					   0x10, 
					   LSM6DSL_EN_BIT, false);
	//end: shiyan added
  1. Unidades informaron problema:
    el rango es controlada por el registro CTRL1_XL (10h) y el bit3 bit2, como sigue:
    #define LSM6DSL_ACCEL_FS_ADDR 0x10
    #define LSM6DSL_ACCEL_FS_MASK 0x0C
    siguientes valores son conjunto rango de medición:
    #define LSM6DSL_ACCEL_FS_2G_VAL 0x00
    #define LSM6DSL_ACCEL_FS_4G_VAL 0x02
    #define LSM6DSL_ACCEL_FS_8G_VAL 0x03
    #define LSM6DSL_ACCEL_FS_16G_VAL 0x01 Los
    siguientes valores son las ganancias correspondientes:
    #define LSM6DSL_ACCEL_FS_2G_GAIN 1
    #define LSM6DSL_ACCEL_FS_4G_GAIN 2
    #define LSM6DSL_ACCEL_FS_8G_GAIN 4
    #
    define_SEL6 como aceleración.
    El número de 16 bits informado en el código:
    xyz [0] = ((s16) (datos [0] | (datos [1] << 8)));
    xyz [1] = ((s16) (datos [2 ] | (datos [3] << 8)));
    xyz [2] = ((s16) (datos [4] | (datos [5] << 8)));
    * xyz [0] * = sdata-> c_gain;
    xyz [1] * = sdata-> c_gain;
    xyz [2] = sdata-> c_gain;
    Lo que se informa aquí es que el valor muestreado se multiplicará por la ganancia. Para diferentes rangos, la ganancia no es Lo mismo, pero por el mismo valor físico con diferentes marchas, los resultados son los mismos.
    El valor de la aceleración informada se informa en la unidad g / 16384, es decir, la aceleración de 1g se informa como 16384. Capa HAL multiplicada por (GRAVITY_EARTH / 16384)
    #define ACCEL_CONVERT (GRAVITY_EARTH / 16384)
    #define CONVERT_ACCEL_X ACCEL_CONVERT
    #define CONVERT_ACCEL_Y ACCEL_CONVERT
    #define CONVERT_ACCELONTH_CONVERT #define CONVERT_ACCELONTHevento_definiendo valor
    #define CONVERT_ACCELONTH_65
    ;
    valor_definido_de_GRATIS. ] = valor * CONVERT_ACCEL_X; cuando el
    rango es ± 2g, reportar según el valor original; cuando el
    rango es ± 4g, reportar según el valor original << 1 dígito;
    otra analogía.

Supongo que te gusta

Origin blog.csdn.net/cornerstone1/article/details/111360402
Recomendado
Clasificación