fkylin

    1. LIS3DHTR 数据转换 bit→g 8/4102 MEMS传感器 2016-11-23
      本帖最后由 fkylin 于 2016-11-23 16:04 编辑 下面的代码是LIS3DH的初始化流程,基本上所有的acc和gyro都可以按照下面的流程初始化:读WHOAMI-->设置ODR-->设置POWER MODE-->设置Full Scale-->使能三轴输出 HAL_I2C_Init(); LIS3DH_GetWHO_AM_I(&dump); DEBUGOUT("LIS3DH ID:%x\n", dump); /* Set ODR (turn ON device) */ response = LIS3DH_SetODR(LIS3DH_ODR_400Hz); if (response == 1) { DEBUGOUT("SET_ODR_OK\r\n"); } /* Set PowerMode */ response = LIS3DH_SetMode(LIS3DH_NORMAL); if (response == 1) { DEBUGOUT("SET_MODE_OK\r\n"); } /* Set Fullscale */ response = LIS3DH_SetFullScale(LIS3DH_FULLSCALE_2); if (response == 1) { DEBUGOU("SET_FULLSCALE_OK\r\n"); } /* Set axis Enable */ response = LIS3DH_SetAxis(LIS3DH_X_ENABLE | LIS3DH_Y_ENABLE | LIS3DH_Z_ENABLE); if (response == 1) { DEBUGOUT("SET_AXIS_OK\r\n");} 复制代码下面是将寄存器值转为重力加速度的一个方法,例子是基于LIS3DH编写的,由于LIS3DH是12bit左对齐的方式存储数据,因此需要将高位和地位拼接之后再右移。注意:组合后的最高位为符号位,以补码方式存储。 /* Data bytes from hardware xL, xH, yL, yH, zL, zH */ u8 acc_data[6]; s16 hw_d[3] = { 0 }; err = acc_i2c_read_data(stat, acc_data, 6); if (err < 0) return err; //LIS3DH是一个12bit,左对齐的输出,如果16bit精度的话,数据不需要移位 hw_d[0] = ( (s16) ( ( (acc_data[1] >4; hw_d[1] = ( (s16) ( ( (acc_data[3] >4; hw_d[2] = ( (s16) ( ( (acc_data[5] >4; hw_d[0] = hw_d[0] * sensitivity; hw_d[1] = hw_d[1] * sensitivity; hw_d[2] = hw_d[2] * sensitivity; 复制代码
    2. LIS3DHTR 数据转换 bit→g 8/4102 MEMS传感器 2016-11-23
      楼主呀,这个代码排版很让人无语呀

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言