LSM6DS3(六轴传感器)STM32驱动及6D功能实现 | 您所在的位置:网站首页 › dur的中文意思是什么 › LSM6DS3(六轴传感器)STM32驱动及6D功能实现 |
刚使用了STM32测试了LSM6DS3该六轴传感器,顺便也测试了其6D方向检测功能,效果是能满足对6个面方向的识别需求。 该六轴传感器支持I2C/SPI通信。在读取该六轴传感器寄存器时,采用I2C通信(这里把CS引脚拉高,拉低为SPI)。INT1和 INT2是模块的外部中断引脚。可以通过其生成中断信号来通知可以接收数据,也可以通过读取其中相对应功能的寄存器来判断是否 可以接收数据。 写好模拟I2C驱动后,测试与模块的通信是否成功。该模块写地址(LSM6DS3_ADDR_WR==0xD6),读地址(LSM6DS3_ADDR_RD==0xD7)。模块(LSM6DS3_WHO_AM_I==0x0F),读该寄存器值为0x69,则通信成功。 驱动代码如下(以下的寄存器名称可以在数据手册中找到对应地址): void Lsm6d3s_Init(void) { while(Lsm6d3s_ReadByte(LSM6D3S_WHO_AM_I)!=0x69); // 加速度计52HZ(倾斜角检测功能工作在26HZ,因此加速度计ODR必须设置为>=26hz),2g量程。 // Lsm6d3s_WriteByte(CTRL1_XL,0x20); // 使能加速度计x,y,z轴 // Lsm6d3s_WriteByte(CTRL9_XL,0x38); // 陀螺仪电平触发,加速度计高性能失能 // Lsm6d3s_WriteByte(CTRL6_C,0x40|0x10); // 陀螺仪高性能失能 // Lsm6d3s_WriteByte(CTRL7_G,0x80); // 加速度计INT2引脚失能,陀螺仪数据INT2使能 // Lsm6d3s_WriteByte(INT2_CTRL,0x03); // //陀螺仪12.5hz 2000dps Lsm6d3s_WriteByte(CTRL2_G,0x1C); //使能陀螺仪x,y,z轴 Lsm6d3s_WriteByte(CTRL10_C,0x38); //WAKE_UP INTERRUPT Configuration Lsm6d3s_WriteByte(CTRL1_XL,0x60); Lsm6d3s_WriteByte(TAP_CFG,0x90); Lsm6d3s_WriteByte(WAKE_UP_DUR,0x00); Lsm6d3s_WriteByte(WAKE_UP_THS,0x02); Lsm6d3s_WriteByte(MD1_CFG,0x20); //6D Orientation Configuration Lsm6d3s_WriteByte(TAP_THS_6D,0x40); Lsm6d3s_WriteByte(CTRL8_XL,0x01); }我在测试中,是读取的寄存器的相对应位来判断有效数据生成。如读取加速度计有效数据时: if((Lsm6d3s_ReadByte(STATUS_REG)&0x01)!=0) { Lsm6d3s_ReadData(OUTX_L_XL,&(lsm_ori_data.acc_x_l),6); lsm_fin_data.acc_x = (lsm_ori_data.acc_x_h |
CopyRight 2018-2019 实验室设备网 版权所有 |