一、LSM6DS3TR 简介
LSM6DS3TR 是 ST 公司生产的一个六轴传感器,包含内置的三轴加速度计和三轴陀螺仪。其中加速度计能够计算 X、Y、Z 三个方向的加速度数据,如图 1 所示:

图 1-加速度方向
陀螺仪计算 X、Y、Z 轴三个轴向的角速度,如图 2 所示:

图 2-角速度方向
二、LSM6DS3TR 驱动
本例程驱动把 LSM6DS3TR 传感器配置为无中断触发,不使用 FIFO 先进先出寄存器的缓存功能。传感器中陀螺仪输出的三轴角速度和加速度计输出的三轴加速度准备就绪后直接覆盖旧数据,所以每次从传感器输出寄存器读取数据时,获得的都是最新时刻的加速度和角速度值。如果本例程不符合你的功能预期,请参考 LSM6DS3TR 数据手册进行寄存器配置更改。
本例程的软件开发 IDE 为 Keil5,使用 C/C++ 混合编程,通过 IIC 通信协议实现主机和从机的通信。
以下是驱动 LSM6DS3TR 传感器需要进行的操作,按操作先后顺序排列:
1、对芯片进行复位操作

传感器复位需要对 LSM6DS3TR 的 CTRL3_C 寄存器进行操作,数据手册表明,CTRL3_C 寄存器的地址为 0x12,其中第 8 位 BOOT 位控制传感器芯片是否重启,第 1 位 SW_RESET 位控制传感器芯片复位,实践表明,两个寄存器位都会在置 1 后自动复位。
/***********************************************************************
[函数名称]Reset_LSM6D
[函数功能]设备复位函数
***********************************************************************/
void Reset_LSM6D(void) {
uint8_t buf[1] = {0}; //创建 1 字节通信缓存
IIC_Read(CTRL3_C, buf, 1); //读取寄存器配置
buf[0] |= 0x80; //将 BOOT 位置 1,其他位保持不变
IIC_Send(CTRL3_C, buf, 1); //重启芯片
HAL_Delay();
IIC_Read(CTRL3_C, buf, );
buf[] |= ;
IIC_Send(CTRL3_C, buf, );
(buf[] & )
IIC_Read(CTRL3_C, buf, );
}











