
求助,使用的芯片型号为H3LIS200DLTR,供电3.3V,采用I2C接口,目前SA0通过4.7K电阻接地,CS通过4.7K的作用上拉到3.3V,VDD与VDD_IO都接到了3.3V。其中有2个管脚,分别是10与15,都是Reserved,要求是Pin10接到GND,Pin15接VDD。目前发现原理图上,Pin10没有接,是NC状态。然后程序是基于正点原子的模拟I2C方式,但读取芯片的ID或者X轴数据,都一直是0,想问下是Pn10的原因吗?或者ST官方有没有参考的例程啊? 2023-4-1记录 后来程序改用安富莱的例程,发现可以读取,开始以为是正点原子的程序不好导致,继续排查,原子的是读取单个字节,安富莱的是读取指定字节数,将这个读取长度改为1,就类似于读取单个字节,能够正确读取ID。如下: 但是,不要这个读取字节的参数,就只读一个字节,将for循环与应答去掉,如下: 就会发现,也无法读取ID了,所以,这就是芯片自身的问题了,因为读取EEPROM与温度传感器都试了,无论哪个情况,都可以正确读取的。 |
关于传感器融合库的使用问题(motionfx)
使用LSM6DSV16X和LSM6DSO16IS,有没有内置滤波器的设置调整?
请问哪位大咖知道可以替代LIS3LV02DL的加速度计
IIS3DHHCTR,这个料 温度从寄存器读取出来之后,把读取的数值转换成实际温度,有没有公式?
L9663如何使用上行缓冲区发送同步脉冲
STM32H750的AD采样问题
加速度计非线性度参数
LSM6DSR是左手坐标系吗?
比LIS3DH更稳定的超低功耗加速度计有哪些可选择?
LSM6DS3TR-C使用时工作电流比datasheet上大很多可能是什么原因?
建议pin10和pin15按照手册连接。
读取ID为0,需要检查I2C的波形,查看从机是否响应,时序是否与芯片手册要求一致。
楼主,建议通过示波器或者逻辑分析仪看一下I2C的波形。I2C使用模拟I2C还是I2C模块?
[md]你好,因为芯片的管脚是在底下内部,所以没有外露,导致没有办法刮开敷地铜皮接到Pin10,现在就是一直有疑问 Pin10的影响这么大吗?
我用了多个模拟I2C,有接到了EERPOM与贴片的温度传感器芯片,例如下图是EEPROM的。
读取EEPROM的数值或者温度,都是正常的,温度传感器芯片的ID也是正常读取。
读取H3LIS200DL的程序如下:
两个I2C 只是使用的管脚不一样,其他函数内部都一样。
另外,因为手上没有示波器,所以看不了波形。我做了这样的测试:把While部分的屏蔽去掉,修改H3LIS200DL的地址,就不会将s1~s6全部打印,这证明目前的地址是有效的,且器件是有回应的(PS:while部分不屏蔽,也能从s1执行到s6)。
因为管脚在下面,没有露出,所以不能刮开敷地铜皮,将Pin10短接到地。就是有个疑惑:Pin10的影响有这么大吗?
同样的模拟I2C程序,读取EEPROM或者温度传感器(ID与温度值)都可以,但是换了管脚,读取H3LIS200DLTR就是一直为0.
读取EEPROM的程序如下:
读取H3LIS200DLTR的程序如下:
可以看到,在这个程序中,我还加了while,假如不屏蔽,且将地址改变,就会发现不会把s1~s6全部打印,这也变相证明地址是正确,且从设备有应答。
因为手上没有示波器,所以暂时只能用打印信息的方式来排查问题。