昨天板子起来以后,发现I2C总线不能正常工作。挂载到I2C总线上的设备出去RTC可以正常工作外,其他都“完蛋”了。于是抓波,发现SCL高电平无法达到3.3V的幅值。起初以为是上拉电阻太大了,于是更换为阻值更小的,但发挥的作用微乎其微,只能勉强上拉到2.3V左右。
紧接着去查电路和PCB设计,这次PCB走线有些绕,整板看上去类似一个“几”字,3.3V的上拉靠近源端一侧。由于各种原因,此次使用GPIO模拟的I2C的时序来对I2C设备进行控制。因此,目标再一次转移到GPIO的问题上来。首先,这些IO口为复用管脚,在配置上作为输出,那么SOC内部应该有弱上拉。按照这个思路,我将外部上拉电阻全部干掉。在kennel当中,把这个两个PIN当作IO口在操作。进行简单的拉高和拉低操作,结果问题依然存在。
模拟SCL的GPIO口的高电平还是上不去。于是就去网络寻求帮助,在网络上找到了一篇关于I2C总线的博客(http://blog.21ic.com/user1/1721/archives/2005/5753.html),这篇博文中描述到:上拉电阻Rp的值由三个参数决定:电源电压、总线电容和连接器件的数量(输入电流+漏电流)。此处再援引另外一篇博文(http://yuqix.blog
3934




被折叠的 条评论
为什么被折叠?



