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

2019-12-23 18:37发布

最近调6050,程序直接从avr移植过来的,发现stm8只要不是HS引脚,就无法初始化6050,反复换了几组io口测试过了,大家一定要注意
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
46条回答
xiepan2010
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 上拉电阻大小;

一周热门 更多>