求I2C总线锁死方法!

[复制链接]
4819|5
 楼主| 电子乌托邦 发表于 2010-9-1 08:41 | 显示全部楼层 |阅读模式
最近听所I2C总线锁死后,发送9个clk能解锁。
说以想验证一下,突然发现不知道如何锁死总线,请有经验的朋友给个思路!
YuanShangCun 发表于 2010-9-1 09:31 | 显示全部楼层
少发一个CLK,让从机一直占据总线即可。
也不一定需要9个clk解锁,SDA变高之后就不用发了
yan2005 发表于 2010-9-1 12:59 | 显示全部楼层
我以前遇到过的:
理想情况下面,主机发送8bit之后就希望收到 1个ACK。这样主机和从器件(slave)有来有往,整个数据传输操作就能进行下去。但是实际上,主机发送8bit,从器件不一定就能收到8个bit,这可能是数据在总线上传输的时候受到了干扰(有多种可能)。从器件收不到8个bit,那么就不会有ACK。这个时候从器件看起来就像锁死了一样。

这种情况下面,硬件的I2C控制器就无能为力了。只能把I2C的SDA和SCL配成gpio,然后自己手工去发高低点平,直到SDA和SCL都返回空闲状态为止。
zhaoyu2005 发表于 2010-9-1 14:05 | 显示全部楼层
这也叫锁死?能通过软件解除,不需要重新上电的,那不是锁死,是程序写的不好,通讯必须得超时处理,不能死等啊
ljm810010 发表于 2010-9-1 14:38 | 显示全部楼层
就算有通信超时处理也不能解决硬件锁死,这与一般的串口通信超时完全两个概念。
yewuyi 发表于 2010-9-1 14:52 | 显示全部楼层
锁死是因为SCL\SDA被低电平拉死导致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

140

主题

633

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部