分页: 5 / 8
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 6日 21:10
由 zl_cq
请教:
1、连接LSM6DS33成功后,试着读取“WHO_AM_I"寄存器内容。读取的结果如图中所示,是”i“。为什么不是【105】或者说0x69呢?
2、I2C.deinit()和I2C.stop()的用法有什么不同?
3、每次试验结束时,是不是都要用I2C.deinit()或者I2C.stop()关掉I2C?
- 读寄存器结果-1.png (23.55 KiB) 查看 2202 次
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 7日 10:00
由 shaoziyang
安装ST的dfuse 软件后,驱动就在软件的安装目录下:
C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver\
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 7日 10:02
由 shaoziyang
如果安装的 STM32CubeProgrammer,驱动在:
C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\DFU_Driver\
这个驱动和 Dfuse 那个不通用,只能选择一个。
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 7日 17:57
由 zl_cq
请教:
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来连接不?如果可以,该怎么连接?
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 7日 18:25
由 shaoziyang
1.硬件I2C和软件I2C都可以,没有问题的。
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的应用问题
发表于 : 2021年 9月 8日 16:47
由 zl_cq
- 读寄存器结果-2.png (22.71 KiB) 查看 2177 次
我终于读到“WHO_AM_I”寄存器的值了:
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 8日 23:10
由 shaoziyang
链接成功就好办了,剩下的就是设置和读取寄存器,改变工作参数。
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 15日 17:44
由 zl_cq
- 疑问语句-1.png (51.28 KiB) 查看 2124 次
- 疑问语句-2.png (4.45 KiB) 查看 2124 次
在上图中,语句:if self.getreg(15)!=0x69 中的 (15) 是什么?
在第二个图中,第86行语句怎么理解?
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 9月 15日 18:13
由 shaoziyang
15就是0x0F,who am I 寄存器,判断芯片id。
86行是先读取寄存器,然后清除mask代表的位,在设置某些位,其实就是设置寄存器的一个或多个bit。
Re: 请教LSM6DS33的应用问题
发表于 : 2021年 10月 22日 16:51
由 zl_cq
- 类的初始化(试验).py.png (64.42 KiB) 查看 1971 次