7.6、LSM6DSL_SENSOR_HUB模式
7.6.1、简介
硬件概述里面讲了有两种接线模式,其中第二种模式允许外部传感器连接到LSM6DSL.
7.6.2、LSM6DSL_SENSOR_HUB模式
该模式下的接线图如下所示.
在模式2(SENSOR HUB mode)下,最多有四个传感器连接到LSM6DSL器件的I2C
主接口.有两种触发方式.
-
和加速度计数据就绪信号(MAX 104HZ)同步(内部触发)
-
将传感器的触发信号连接到INT2,最大ODR取决于两个连续触发信号之间可以执行的读/写操作数量.
关于这个模式我也仔细过了一遍,重点说一下可以配置的项,如果要使用的话可以参考AN5040文档.
-
sensor_hub模式有一个总开关(MASTER_CONFIG寄存器)
-
LSM6DSL内部有一个关于从设备的IIC上拉开关
(MASTER_CONFIG寄存器) -
从设备数据有两种触发方式可选(MASTER_CONFIG寄存器)
-
SLV
X
_ADD存放从设备的IIC地址和读写操作的选择位(X = 0,1,2,3) -
SLV
X
_SUBADD存放从设备的(写/读)操作的寄存器地址(X = 0,1,2,3) -
SLVE
X
_CONFIG有点复杂,需要阅读原文档.且每一个都有一点细微的差别.
7.6.3、sensor_hub直连模式
简单说一下,直连模式个sensor_hub模式是两个模式.直连的等效电路如下所示.
我用的就是直连模式,sensor_hub模式并未使用,所以配置方法相对而言比较简单,共有如下两步.
-
关闭sensor_hub模式(默认关闭).
-
打开直连模式.
具体代码如下(添加到lsm6dsl.c
).
int32_t LSM6DSL_Enable_Func(LSM6DSL_Object_t *pObj)
{
int32_t ret = LSM6DSL_OK;
/* 设定master_config的 MASTER_ON位 */
if (lsm6dsl_sh_master_set(&(pObj->Ctx), PROPERTY_DISABLE) != LSM6DSL_OK)
{
return LSM6DSL_ERROR;
}
/* 设定master_config的 PASS_THROUGH_MODE */
if(lsm6dsl_sh_pass_through_set(&(pObj->Ctx), PROPERTY_ENABLE) != LSM6DSL_OK)
{
return LSM6DSL_ERROR;
}
return ret;
}
如果想要sensor_hub模式和直连模式同时使用,那么配置可能就比较麻烦,可能有如下三种情形.
sensor_hub模式为内部触发,且不使用直连功能时,INT2引脚无限制.
sensor_hub模式为内部触发,但使用直连功能时,INT2引脚必须接地.不能使用外部触发信号,不能使用INT2引脚.
sensor_hub模式为外部触发,且直连功能不使用,INT2引脚必须连接到外部传感器的数据准备就绪引脚.并且必须执行如下操作避免与INT2的> 冲突.如下所示.
比较复杂,我只挂载了一个传感器使用的直连模式.所以没有尝试.关于两种模式同时初始化的方法如下所示.
关于更具体的可以参考官方AN5040文档.里面有较为详细的介绍,只是在阅读的时候需要多读几遍,翻译的不是很好,有点难理解.
7.6.4 测试结果
在只使用直连模式的情况下,测试结果如下所示.