发现超级大坑,各位注意,stm8非HS引脚不能读取6050

2019-12-23 18:37发布

最近调6050,程序直接从avr移植过来的,发现stm8只要不是HS引脚,就无法初始化6050,反复换了几组io口测试过了,大家一定要注意
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
45条回答
kevinstar888
1楼-- · 2019-12-25 03:16
kevinstar888 发表于 2017-9-12 22:53
估计的你的I2C接口没有用上拉电阻

接了上拉的   2k到10k都试了
xiepan2010
2楼-- · 2019-12-25 07:20
 精彩回答 2  元偷偷看……
xiepan2010
3楼-- · 2019-12-25 09:02
本帖最后由 t3486784401 于 2017-9-13 01:05 编辑
xiepan2010 发表于 2017-9-12 23:13
问题有点奇怪,能读6050寄存器数据,但是不能写,用非hs端口的时候因为不能写导致无法初始化6050  但是读 ...


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 上拉电阻大小;
t3486784401
4楼-- · 2019-12-25 14:04
感觉你这标题有点大
ljy99731
5楼-- · 2019-12-25 15:28

我们用stm8l151+mpu3050 mpu6050 都做过货。接的就是I2C的脚位。规格书里边这两个io是不具有HS功能的。

a.png (154.87 KB, 下载次数: 0)

下载附件

2017-9-13 08:41 上传

suny1022
6楼-- · 2019-12-25 17:30
我们直接用PB4,PB5加10K 上拉都很好的

一周热门 更多>