2019-12-23 18:37发布
kevinstar888 发表于 2017-9-12 22:53 估计的你的I2C接口没有用上拉电阻
xiepan2010 发表于 2017-9-12 23:13 问题有点奇怪,能读6050寄存器数据,但是不能写,用非hs端口的时候因为不能写导致无法初始化6050 但是读 ...
a.png (154.87 KB, 下载次数: 0)
下载附件
2017-9-13 08:41 上传
最多设置5个标签!
接了上拉的 2k到10k都试了
6050没细研究,但是从IIC通信有这么几点应该可以推测:
1. 你能读到寄存器,说明主机(STM8)发送了正确的从机(6050)地址以及寄存器地址,主机利用 SDA还是能发出去(写)东西的;
2. 所有的 BUG 貌似指向“从机未能进入写状态”,这个状态的控制位按照 IIC 协议是从机地址最低位,有理由怀疑这个位没有正确被从机识别;
依照 IIC 协议,写状态需要该位置零,你这个 HS 属性刚好就是 SINK 低电平的能力,因此怀疑此时主机没有顺利把 SDA 拉低;
3. 上述没有 SDA 拉低的原因,可能 a.主机时序设计太近,b.从机识别太慢,c.上拉电阻过小。
建议试试以下几个办法:
1. STM8整机时钟加分频,试试效果;
2. 重写 IIC 底层,在 R/W 位时额外加延时,试试效果;
3. 确认 SDA 上拉电阻大小;
我们用stm8l151+mpu3050 mpu6050 都做过货。接的就是I2C的脚位。规格书里边这两个io是不具有HS功能的。
a.png (154.87 KB, 下载次数: 0)
下载附件
2017-9-13 08:41 上传
一周热门 更多>