一、
LSM6DS3是ST的一款6轴力学传感器,3轴加速度+3轴陀螺仪
特别注意,后缀不一样,功能有很大不一样,有的有OIS功能,有的没有
LSB的意思是最小有效位,为数字输出方式,一般我们可以用mdps/LSB来表示灵敏度。8.75 mdps/LSB,表示一个bit为8.75mdps。
dps :Degree Per Second的缩写。 °/S的意思。就是一种角速度的单位
在CS(pin12)引脚为高时启用I2C接口
在CS引脚为低时启用SPI接口
上电CS默认为高电平
(LSM6DS3_WHO_AM_I==0x0F),ID寄存器
LSM6DS3 ------- id=0x69, 把CS接地是不行的,需要读写前才拉低。
LSM6DS3TR-C ------- id=0x6A, 主SPI原厂FAE说有BUG,读取id不稳定,读的时候MOSI必须是0x00
LSM6DSO ------- id=-0x6C----使用主SPI时,SDX,SCX需要下拉,不然读ID不正确,没发现其它问题。
使用辅助SPI2时:
1、3线SPI,读的时候,MOSI也需要是0x00, 而且发现需要连续读才行,中间加入延时或其它就不行。
2、4线SPI,读的时候,MOSI也需要是0x00。不用连续读也可以。
SPI, 时钟下降沿时,MOSI,MISO上的数据更新,上升沿时被芯片采样。第一个下降沿和最后一个上升沿也算,不像I2C有停止位。 空闲时,时钟是高电平
第1BIT是区分读写标志
二、
如果使用I2C,从机地址可设置2个,根据1脚电平可设置为0xD4 /0xD6
把IF_INC设置成1,地址会自动加1(默认就是1),可以连续读取多个字节
三、
1、使用专用连接模式,可以实现传感器集合功能,IC的PIN2,3作为I2C主机连接其它传感器
FUNC_CFG_EN置1时,可访问地址为2-32H 寄存器,对这些寄存器的修改必须在GRYO和ACC处理掉电模式时进行。
2、加速度和陀螺仪是同步的,两个的数据率彼此为整数倍。陀螺仪的数据准备好信号DRDY_G始终跟随在加速度计数据准备好信号DRDY_XL后面,所以可以简单利用DRDY_G判断两个数据都准备好了。
1
3、可以利用 CTRL1_XL 寄存器的输出数据率 ( ODR_XL)位和CTRL6_C 寄存器的高性能禁止 ( XL_HM_MODE)位,来选择功耗模式和加速度计传感器的输出数据率
如果 CTRL4_C 寄存器中的 XL_BW_SCAL_ODR 位被置为 1,则此模拟滤波器的带宽可通
过设置 CTRL1_XL 寄存器的 BW_XL 位来确定,如果为0,则由速率决定。
4、陀螺仪设置
高通滤波器是为了滤去 DC分量
5、低功耗模式只有3种速率 12.5 Hz、 26 Hz 和 52 Hz
当只有加速度计且为低功耗模式时(陀螺仪处于掉电),CTRL10_C 寄存器的 FUNC_EN 位必须设置为 1。
6、睡眠模式
7、改变速率或模式时需要复位链路
8、加速度计的高通和低通数字滤波器的使能信号为 TAP_CFG 寄存器 SLOPE_FDS 位和 CTRL10_C寄存器 FUNC_EN 位的逻辑 “ 或 ”
CTRL8_XL 的位 LPF2_XL_EN、 HP_SLOPE_XL_EN 和 HPCF_XL [1:0] 用来选择应用于加
速度计输出数据和 FIFO 数据上的滤波器
9、陀螺仪滤波器
10、读取加速度数据
通过CTRL1_XL 选择一种工作模式,并通过CTRL9_XL使能至少一个轴。
通过设置INT1_CTRL的最后2位,当数据OK时,INT1引脚输出信号。也可以通过查询STATUS_REG看数据是否准备好。
11、读取陀螺仪数据
12、可以高低字节交换以兼容大小端模式
13、方向
orientation = Lsm6d3s_ReadByte(D6D_SRC);
printf(“orientation=%x\r\n”,orientation);
根据测试,发现不同的6个面会在D6D_SRC寄存器读取到不同的6个值。这样,就可以用来判断方向了。