请教LSM6DS33的应用问题
Re: 请教LSM6DS33的应用问题
请教:
1、连接LSM6DS33成功后,试着读取“WHO_AM_I"寄存器内容。读取的结果如图中所示,是”i“。为什么不是【105】或者说0x69呢?
2、I2C.deinit()和I2C.stop()的用法有什么不同?
3、每次试验结束时,是不是都要用I2C.deinit()或者I2C.stop()关掉I2C?
1、连接LSM6DS33成功后,试着读取“WHO_AM_I"寄存器内容。读取的结果如图中所示,是”i“。为什么不是【105】或者说0x69呢?
2、I2C.deinit()和I2C.stop()的用法有什么不同?
3、每次试验结束时,是不是都要用I2C.deinit()或者I2C.stop()关掉I2C?
- shaoziyang
- 帖子: 3956
- 注册时间: 2019年 10月 21日 13:48
Re: 请教LSM6DS33的应用问题
安装ST的dfuse 软件后,驱动就在软件的安装目录下:
C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver\
C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver\
- shaoziyang
- 帖子: 3956
- 注册时间: 2019年 10月 21日 13:48
Re: 请教LSM6DS33的应用问题
如果安装的 STM32CubeProgrammer,驱动在:
C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\DFU_Driver\
这个驱动和 Dfuse 那个不通用,只能选择一个。
C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\DFU_Driver\
这个驱动和 Dfuse 那个不通用,只能选择一个。
Re: 请教LSM6DS33的应用问题
请教:
1、通过“硬件”连接LSM6DS33(即通过pyboardCN V2板子上的I2C(1)来连接LSM6DS33)行不行?直接把LSM6DS33的SDA接到pyboardCN V2板子的x9(PB6)上,把LSM6DS33的SCL接到pyboardCN V2板子的x10(PB7)上,LSM6DS33上的电源、地线、电容接法不变(与用软件I2C连接时一样)行不行?
2、资料上介绍说I2C可以读取的从设备(slave)地址范围是0x08——0x77,这是不是说一个I2C总线上可以连接111个从设备(slave)?
3、如果一个pyboardCN V2板子的I2C总线上连接若干个(例如10个)LSM6DS33,I2C搜索(scan())从设备(slave)地址后,会怎样显示?
4、两个pyboardCN V2板子可以通过I2C来连接不?如果可以,该怎么连接?
1、通过“硬件”连接LSM6DS33(即通过pyboardCN V2板子上的I2C(1)来连接LSM6DS33)行不行?直接把LSM6DS33的SDA接到pyboardCN V2板子的x9(PB6)上,把LSM6DS33的SCL接到pyboardCN V2板子的x10(PB7)上,LSM6DS33上的电源、地线、电容接法不变(与用软件I2C连接时一样)行不行?
2、资料上介绍说I2C可以读取的从设备(slave)地址范围是0x08——0x77,这是不是说一个I2C总线上可以连接111个从设备(slave)?
3、如果一个pyboardCN V2板子的I2C总线上连接若干个(例如10个)LSM6DS33,I2C搜索(scan())从设备(slave)地址后,会怎样显示?
4、两个pyboardCN V2板子可以通过I2C来连接不?如果可以,该怎么连接?
- shaoziyang
- 帖子: 3956
- 注册时间: 2019年 10月 21日 13:48
Re: 请教LSM6DS33的应用问题
1.硬件I2C和软件I2C都可以,没有问题的。
2.I2C总线可以挂接多个设备,但是设备之间地址不能相同,因此限制了同一类型芯片数量。此外还需要考虑多个器件对I2C总线的影响(寄生电容、驱动能力),需要适当调整上拉电阻大小。
3.目前micropython没有直接支持 I2C/SPI 从设备,对大部分芯片不能使用这些功能。对于STM32,可以这么用:
2.I2C总线可以挂接多个设备,但是设备之间地址不能相同,因此限制了同一类型芯片数量。此外还需要考虑多个器件对I2C总线的影响(寄生电容、驱动能力),需要适当调整上拉电阻大小。
3.目前micropython没有直接支持 I2C/SPI 从设备,对大部分芯片不能使用这些功能。对于STM32,可以这么用:
代码: 全选
**从设备端:**
```python
from pyb import I2C
i2c=I2C(2)
i2c.init(I2C.SLAVE, addr = 0x40)
while 1:
try:
data = i2c.recv(4)
except OSError as e:
pass
except KeyboardInterrupt:
break
else:
print("RECV: %r" % data)
```
**主设备端:**
```python
from pyb import I2C
i2c=I2C(1)
i2c.init(I2C.MASTER)
i2c.send('1234', 0x40)
i2c.send('abcd', 0x40)
```
Re: 请教LSM6DS33的应用问题
在上图中,语句:if self.getreg(15)!=0x69 中的 (15) 是什么?
在第二个图中,第86行语句怎么理解?
- shaoziyang
- 帖子: 3956
- 注册时间: 2019年 10月 21日 13:48
Re: 请教LSM6DS33的应用问题
15就是0x0F,who am I 寄存器,判断芯片id。
86行是先读取寄存器,然后清除mask代表的位,在设置某些位,其实就是设置寄存器的一个或多个bit。
86行是先读取寄存器,然后清除mask代表的位,在设置某些位,其实就是设置寄存器的一个或多个bit。
-
- 随机主题
- 回复总数
- 阅读次数
- 最新文章
-
- 1回复总数
- 793 阅读次数
- 最新文章 由 shaoziyang
2023年 10月 31日 19:43
-
- 3回复总数
- 327 阅读次数
- 最新文章 由 zhoukang8888
2023年 11月 1日 19:44
-
- 48回复总数
- 5766 阅读次数
- 最新文章 由 shaoziyang
2024年 3月 27日 08:39