注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
dcexpert的个人空间 https://home.eeworld.com.cn/space-uid-573537.html [收藏] [复制] [分享] [RSS]
日志

LSM6DSO的I2C HUB模式

已有 1555 次阅读2019-8-9 10:24

LSM6DSO除了作为普通的I2C从设备外(模式1),它还有3种特殊的模式,如下图:

其中模式2就是I2C HUB模式,它作为一个I2C HUB,后面挂接其它的I2C从设备。在模式2/3/4下,芯片的SDx/SCx引脚作为I2C HUB的SDA/SCL引脚。

 

对于X-NUCLEO-IKS01A3开发板,默认使用了标准模式,JP7和JP8的跳线连接1-2和3-4,这样I2C1和I2C2短连,LSM6DSO的SDx和SCx接到GND,6个传感器的I2C通过U6/U7(ST2378E)连接在一起。

如果使用I2C HUB模式,需要改变JP7/JP8的短路块连接方式,将2-3短路,这样I2C1_SDA/I2C1/SCL就可以和SDx/SCx相连了。

 

不过仅仅改变跳线,I2C HUB还是无法工作的,因为默认情况下,LSM6DSO没有允许这个功能,还需要通过寄存器设置芯片工作模式。虽然设置并不复杂,但LSM6DSO的寄存器实在太多了,相信大部分网友没有耐心去完整看一次,下面就简单介绍设置方法。

 

首先需要修改FUNC_CFG_ACCESS寄存器,将SHUB_REG ACCESS设置为1,启用 sensor hub (I²C master) 寄存器访问功能。

其次,将sensor hub的寄存器MASTER_CONFIG中的PASS_THROUGH_MODE(直通模式)设置为1,这样就可以启用I2C HUB功能了。

 

下面以MicroPython为例,介绍具体的使用方法:

 

首先将X-NUCLEO-IKS01A3开发板的J2(I2C和电源)连接到MicroPython开发板,具体方法请参考帖子《使用 MicroPython 连接 X-NUCLEO-IKS01A3》。

 

以PYB Nano为例,使用进行I2C1连接。然后扫描I2C总线上的设备(这时已经将X-NUCLEO-IKS01A3切换到了HUB模式),可以发现有3个设备,其中设备76是PYB Nano上的加速度传感器MMA7660,设备25是X-NUCLEO-IKS01A3上的LIS2DW12磁场传感器,设备107是LSM6DSO。

 

 

依次设置寄存器FUNC_CFG_ACCESS和寄存器MASTER_CONFIG,然后再次扫描I2C总线,就可以发现其它传感器已经连接到I2C HUB上了。

 

 

 

 


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章