你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

H3LIS200DL无法读取?

[复制链接]
seven_nice 提问时间:2023-3-15 00:05 / 已解决

求助,使用的芯片型号为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。如下:

dd5c33bdc6c7ffd17c9ca6f8743c217.png

但是,不要这个读取字节的参数,就只读一个字节,将for循环与应答去掉,如下:

065a63a764021a9e545a96dc89bb05d.png

就会发现,也无法读取ID了,所以,这就是芯片自身的问题了,因为读取EEPROM与温度传感器都试了,无论哪个情况,都可以正确读取的。

收藏 评论4 发布时间:2023-3-15 00:05

举报

4个回答
st_yujie2510 回答时间:2023-3-15 08:23:49

建议pin10和pin15按照手册连接。

读取ID为0,需要检查I2C的波形,查看从机是否响应,时序是否与芯片手册要求一致。

image.png

废鱼 回答时间:2023-3-15 14:13:57

楼主,建议通过示波器或者逻辑分析仪看一下I2C的波形。I2C使用模拟I2C还是I2C模块?

seven_nice 回答时间:2023-3-16 21:00:16

st_yujie2510 发表于 2023-3-15 08:23
建议pin10和pin15按照手册连接。</p>
<p>读取ID为0,需要检查I2C的波形,查看从机是否响应,时序是否与芯片手 ...

[md]你好,因为芯片的管脚是在底下内部,所以没有外露,导致没有办法刮开敷地铜皮接到Pin10,现在就是一直有疑问 Pin10的影响这么大吗?

我用了多个模拟I2C,有接到了EERPOM与贴片的温度传感器芯片,例如下图是EEPROM的。

image.png

读取EEPROM的数值或者温度,都是正常的,温度传感器芯片的ID也是正常读取。

读取H3LIS200DL的程序如下:

image.png

两个I2C 只是使用的管脚不一样,其他函数内部都一样。

另外,因为手上没有示波器,所以看不了波形。我做了这样的测试:把While部分的屏蔽去掉,修改H3LIS200DL的地址,就不会将s1~s6全部打印,这证明目前的地址是有效的,且器件是有回应的(PS:while部分不屏蔽,也能从s1执行到s6)。

image.png
image.png
seven_nice 回答时间:2023-3-18 10:14:15

因为管脚在下面,没有露出,所以不能刮开敷地铜皮,将Pin10短接到地。就是有个疑惑:Pin10的影响有这么大吗?

同样的模拟I2C程序,读取EEPROM或者温度传感器(ID与温度值)都可以,但是换了管脚,读取H3LIS200DLTR就是一直为0.

读取EEPROM的程序如下:

image.png

读取H3LIS200DLTR的程序如下:

image.png

可以看到,在这个程序中,我还加了while,假如不屏蔽,且将地址改变,就会发现不会把s1~s6全部打印,这也变相证明地址是正确,且从设备有应答。

因为手上没有示波器,所以暂时只能用打印信息的方式来排查问题。

image.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版